2011-02-16  Hans Wennborg  <hans@chromium.org>

        Reviewed by Jeremy Orlow.

        IndexedDB: Inject auto increment keys via key path on insertion
        https://bugs.webkit.org/show_bug.cgi?id=54457

        Support for injecting keys into objects via key path.

        * public/WebIDBKey.h:
        * public/WebKitClient.h:
        (WebKit::WebKitClient::injectIDBKeyIntoSerializedValue):
        * src/PlatformBridge.cpp:
        (WebCore::PlatformBridge::injectIDBKeyIntoSerializedValue):
        * src/WebIDBKey.cpp:
        (WebKit::WebIDBKey::injectIDBKeyIntoSerializedValue):
        * tests/IDBBindingUtilitiesTest.cpp:
        (WebCore::injectKey):
        (WebCore::checkInjection):
        (WebCore::checkInjectionFails):
        (WebCore::TEST):

2011-02-16  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r78678.
        http://trac.webkit.org/changeset/78678
        https://bugs.webkit.org/show_bug.cgi?id=54554

        Breaks NaCl tests in Chromium (Requested by mnaganov on
        #webkit).

        * 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-15  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, exposes no new functionality

        * 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-14  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Darin Fisher.

        Add initial support for per-origin quotas to IndexedDB
        https://bugs.webkit.org/show_bug.cgi?id=54421

        * public/WebIDBFactory.h:
        (WebKit::WebIDBFactory::setQuota):
        * src/AssertMatchingEnums.cpp:
        * src/IDBFactoryBackendProxy.cpp:
        (WebCore::IDBFactoryBackendProxy::setQuota):
        * src/IDBFactoryBackendProxy.h:
        * src/WebIDBFactoryImpl.cpp:
        (WebKit::WebIDBFactoryImpl::setQuota):
        * src/WebIDBFactoryImpl.h:

2011-02-15  Jia Pu  <jpu@apple.com>

        Reviewed by Darin Adler.

        Autocorrection should respect undo.
        https://bugs.webkit.org/show_bug.cgi?id=52221
        <rdar://problem/8663399>

        Please see WebCore/ChangeLog for detailed description.

        * WebCoreSupport/WebEditorClient.cpp:
        (WebFrameImpl::replaceSelection): Adopted new signature of ReplaceSelectionCommand::create().

2011-02-15  Kenneth Russell  <kbr@google.com>

        Reviewed by Darin Fisher.

        Allow controlling minimum DOMTimer interval on a per-page basis
        https://bugs.webkit.org/show_bug.cgi?id=54312

        * public/WebSettings.h:
          - Added setMinimumTimerInterval.
        * src/WebKit.cpp:
        (WebKit::initialize):
          - Added FIXME to remove setting of page's default timer interval.
        * src/WebSettingsImpl.cpp:
        (WebKit::WebSettingsImpl::setMinimumTimerInterval):
          - Implemented new method on WebSettings.
        * src/WebSettingsImpl.h:

2011-02-15  Jochen Eisinger  <jochen@chromium.org>

        Reviewed by Jeremy Orlow.

        [chromium] add WebIDBFactory::deleteDatabase method
        https://bugs.webkit.org/show_bug.cgi?id=54447

        * public/WebIDBFactory.h:
        (WebKit::WebIDBFactory::open):
        (WebKit::WebIDBFactory::deleteDatabase):

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

        Unreviewed, update the version of Chromium in webkit.

        * DEPS:

2011-01-26  MORITA Hajime  <morrita@google.com>

        Reviewed by Ryosuke Niwa.

        Refactoring: Extract TextCheckerClient from EditorClient
        https://bugs.webkit.org/show_bug.cgi?id=53213

        * src/EditorClientImpl.h:
        (WebKit::EditorClientImpl::textChecker):

2011-02-07  Ryosuke Niwa  <rniwa@webkit.org>

        Reviewed by Adam Barth.

        Add EditorClient callbacks to override isDOMPasteAllowed and javaScriptCanAccessClipboard
        https://bugs.webkit.org/show_bug.cgi?id=52417

        Added two callback functions, canCopyCut and canPaste to EditorClient. They are currently
        not implemented.

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

2011-02-14  Jay Soffian  <jaysoffian@gmail.com>

        Reviewed by Darin Fisher.

        Expose checked field of HTMLInputElement to Chromium API
        https://bugs.webkit.org/show_bug.cgi?id=54333

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

2011-02-14  Tony Chang  <tony@chromium.org>

        Reviewed by Dimitri Glazkov.

        <select> elements don't honor border:0px in chromium-linux
        https://bugs.webkit.org/show_bug.cgi?id=51152

        * public/linux/WebThemeEngine.h:
        * src/PlatformBridge.cpp:
        (WebCore::GetWebThemeExtraParams):

2011-02-14  Pavel Podivilov  <podivilov@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: use call frame column to determine execution line in source frame.
        https://bugs.webkit.org/show_bug.cgi?id=54001

        * src/js/Tests.js:
        (.TestSuite.prototype._checkExecutionLine):

2011-02-11  Zhenyao Mo  <zmo@google.com>

        Reviewed by Kenneth Russell.

        [chromium] Allow turning off multisampling through web preference settings
        https://bugs.webkit.org/show_bug.cgi?id=54321

        * public/WebSettings.h: Add a flag for multisampling setting.
        * src/WebSettingsImpl.cpp: Ditto.
        (WebKit::WebSettingsImpl::setOpenGLMultisamplingEnabled):
        * src/WebSettingsImpl.h: Ditto.

2011-02-12  Jochen Eisinger  <jochen@chromium.org>

        Reviewed by Jeremy Orlow.

        Implement IDBObjectStore::clear
        https://bugs.webkit.org/show_bug.cgi?id=54193

        * src/IDBObjectStoreProxy.cpp:
        (WebCore::IDBObjectStoreProxy::clear):
        * src/IDBObjectStoreProxy.h:
        * src/WebIDBObjectStoreImpl.cpp:
        (WebKit::WebIDBObjectStoreImpl::clear):
        * src/WebIDBObjectStoreImpl.h:

2011-02-11  David Grogan  <dgrogan@chromium.org>

        Reviewed by Jeremy Orlow.

        indexeddb: add onBlocked to WebKit::WebIDBCallbacks
        https://bugs.webkit.org/show_bug.cgi?id=54329

        * public/WebIDBCallbacks.h:
        (WebKit::WebIDBCallbacks::onBlocked):

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

        Reviewed by Darin Fisher.

        [fileapi] Add support for filesystem: URI handling
        https://bugs.webkit.org/show_bug.cgi?id=53529

        Changes to Chromium WebKit API required to expose
        the FileSystem type to WebCore's fileapi code, since the
        type is part of the filesystem URI.

        * src/AsyncFileSystemChromium.cpp:
        (WebCore::AsyncFileSystemChromium::AsyncFileSystemChromium):
        * src/AsyncFileSystemChromium.h:
        (WebCore::AsyncFileSystemChromium::create):
        * src/LocalFileSystemChromium.cpp:
        (WebCore::LocalFileSystem::readFileSystem):
        (WebCore::LocalFileSystem::requestFileSystem):
        * src/WebFileSystemCallbacksImpl.cpp:
        (WebKit::WebFileSystemCallbacksImpl::WebFileSystemCallbacksImpl):
        (WebKit::WebFileSystemCallbacksImpl::didOpenFileSystem):
        * src/WebFileSystemCallbacksImpl.h:
        * src/WorkerAsyncFileSystemChromium.cpp:
        (WebCore::WorkerAsyncFileSystemChromium::WorkerAsyncFileSystemChromium):
        * src/WorkerAsyncFileSystemChromium.h:
        (WebCore::WorkerAsyncFileSystemChromium::create):

2011-02-10  Nate Chapin  <japhet@chromium.org>

        Reviewed by Adam Barth.

        Update calls to DocumentWriter.
        https://bugs.webkit.org/show_bug.cgi?id=50489

        * src/ContextMenuClientImpl.cpp:
        (WebKit::ContextMenuClientImpl::getCustomMenuFromDefaultItems):
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::finishedLoading):
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::encoding):
        (WebKit::WebFrameImpl::loadJavaScriptURL):
        * src/WebPageSerializerImpl.cpp:
        (WebKit::WebPageSerializerImpl::preActionBeforeSerializeOpenTag):
        (WebKit::WebPageSerializerImpl::serialize):
        * src/WebSearchableFormData.cpp:
        (HTMLNames::GetFormEncoding):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::pageEncoding):

2011-02-10  Pavel Feldman  <pfeldman@chromium.org>

        Not reviewed: chromium build fix.

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

2011-02-10  Jochen Eisinger  <jochen@chromium.org>

        Reviewed by Jeremy Orlow.

        [chromium] add WebIDBObjectStore::clear method

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

        * public/WebIDBObjectStore.h:
        (WebKit::WebIDBObjectStore::put):
        (WebKit::WebIDBObjectStore::deleteFunction):
        (WebKit::WebIDBObjectStore::clear):

2011-02-10  Avi Drissman  <avi@google.com>

        Reviewed by Darin Fisher.

        <option> should implement the dir attribute. Mac Chromium version, followup to r76983, r77654.
        https://bugs.webkit.org/show_bug.cgi?id=50969

        Use manual test Source/WebCore/manual-tests/pop-up-alignment-and-direction.html added in r76983.

        * public/WebMenuItemInfo.h:
        * public/WebPopupMenuInfo.h:
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::getPopupMenuInfo):
        * src/ExternalPopupMenu.cpp:
        (WebKit::ExternalPopupMenu::getPopupMenuInfo):

2011-02-09  David Holloway  <dhollowa@chromium.org>

        Reviewed by Darin Fisher.

        Removes deprecated interface WebAutoFillClient::didAcceptAutocompleteSuggestion().  This interface has been replaced by the more general WebAutoFillClient::didAcceptAutoFillSuggestion() method.
        https://bugs.webkit.org/show_bug.cgi?id=54125

        * public/WebAutoFillClient.h:
        * src/EditorClientImpl.cpp:
        * src/EditorClientImpl.h:

2011-02-09  Ilya Sherman  <isherman@chromium.org>

        Reviewed by Darin Fisher.

        Export WebInputElement::defaultMaxLength as a function rather than a constant.
        Needed because the order of initialization of static constants
        is not guaranteed across compilation units.
        https://bugs.webkit.org/show_bug.cgi?id=54056

        * public/WebInputElement.h:
        * src/WebInputElement.cpp:
        (WebKit::WebInputElement::defaultMaxLength): Now a static function.

2011-02-09  Sailesh Agrawal  <sail@chromium.org>

        Reviewed by Tony Chang.

        Search/replace references to gfx/* with ui/gfx/*

        * public/WebPoint.h:
        * public/WebRect.h:
        * public/WebSize.h:

2011-02-09  Nebojsa Ciric  <cira@chromium.org>

        Reviewed by Darin Fisher.

        Implements Locale object of JavaScript internationalization API proposal, as an
        v8 extension. Extension code is hosted in v8 project (src/extensions/experimental/i18n-extension.{cc,h})
        and in this patch we just provide flags, tests and build rules for chromium port.
        https://bugs.webkit.org/show_bug.cgi?id=49414

        * features.gypi:
        * public/WebRuntimeFeatures.h:
        * src/WebRuntimeFeatures.cpp:
        (WebKit::WebRuntimeFeatures::enableExperimentalI18NAPI):
        (WebKit::WebRuntimeFeatures::isExperimentalI18NAPIEnabled):

2011-02-09  MORITA Hajime  <morrita@google.com>

        Reviewed by Shinichiro Hamaji.

        [Chromium] WebTextCheckingResult should have a default constructor.
        https://bugs.webkit.org/show_bug.cgi?id=54075

        Gave default parameters to WebTextCheckingResult constructor.
        
        * public/WebTextCheckingResult.h:
        (WebKit::WebTextCheckingResult::WebTextCheckingResult):

2011-02-08  Sailesh Agrawal  <sail@chromium.org>

        Reviewed by Kenneth Russell.

        Invalidate rect doesn't work for windowless plugins on Chromium
        https://bugs.webkit.org/show_bug.cgi?id=53117

        Invalidate rect for windowless plugins wasn't working if the web page was composited.

        The problem was that the invalidate call was causing simply dirtying the LayerChromium layers. Since the plugin was windowless this didn't cause the plugin to be repainted.

        Fix was to copy the invalidate code from WebCore/plugins/PluginView.cpp/PluginView::invalidateWindowlessPluginRect() which does the correct thing.

        Tested my fix on Windows and Mac and verified that the movie on http://apple.com/appltv correctly plays. Verified that windowed plugins still correctly draw as well.

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

2011-02-08  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        Remove orphan code from old parser
        https://bugs.webkit.org/show_bug.cgi?id=53984

        * src/ChromeClientImpl.h:

2011-02-08  Tony Chang  <tony@chromium.org>

        Unreviewed, build fix for clobber builds of DRT on mac/linux.

        This file moved in chromium r73530 and this path wasn't changed.

        * WebKit.gyp:

2011-02-02  Ilya Tikhonovsky  <loislo@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: move InspectorController's methods from InspectorAgent to InspectorController.

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

        Minor change enforced by major changes in WebCore/inspector/InspectorController.

        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::dispatchOnInspectorBackend):
        * src/WebViewImpl.h:

2011-02-07  Alexey Marinichev  <amarinichev@chromium.org>

        Reviewed by Kenneth Russell.

        Hook up WebGraphicsContext3D::setContextLostCallback.
        https://bugs.webkit.org/show_bug.cgi?id=53722

        Test: fast/canvas/webgl/context-lost.html, comment out the line with
        extension.loseContext() and kill the GPU process "Lose context"
        message shows up.

        * public/WebGraphicsContext3D.h:
        (WebKit::WebGraphicsContext3D::WebGraphicsContextLostCallback::~WebGraphicsContextLostCallback):
        * src/GraphicsContext3DChromium.cpp:
        (WebCore::GraphicsContextLostCallbackAdapter::~GraphicsContextLostCallbackAdapter):
        (WebCore::GraphicsContextLostCallbackAdapter::GraphicsContextLostCallbackAdapter):
        (WebCore::GraphicsContextLostCallbackAdapter::onContextLost):
        (WebCore::GraphicsContextLostCallbackAdapter::create):
        (WebCore::GraphicsContext3DInternal::setContextLostCallback):
        * src/GraphicsContext3DInternal.h:

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

        Reviewed by Jian Li.

        [chromium] Remove deprecated method WebNotification::dir
        https://bugs.webkit.org/show_bug.cgi?id=53735

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

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

        Reviewed by Darin Fisher.

        [Chromium] Should implement EditorClientImpl::requestCheckingOfString()
        https://bugs.webkit.org/show_bug.cgi?id=51013

        - Added WebTextCheckingCompletion to receive the checked result asynchronously.
        - Added WebViewClient::requestCheckingOfText() and related classes.
        - Implemented EditorClientImpl::requestCheckingOfString().

        * WebKit.gyp:
        * public/WebSettings.h:
        * public/WebTextCheckingCompletion.h: Added.
        (WebKit::WebTextCheckingCompletion::~WebTextCheckingCompletion):
        * public/WebTextCheckingResult.h: Added.
        (WebKit::WebTextCheckingResult::error):
        (WebKit::WebTextCheckingResult::position):
        (WebKit::WebTextCheckingResult::length):
        (WebKit::WebTextCheckingResult::WebTextCheckingResult):
        * public/WebViewClient.h:
        (WebKit::WebViewClient::requestCheckingOfText): Gave an implementation
        * src/AssertMatchingEnums.cpp:
        * src/EditorClientImpl.cpp:
        (WebKit::EditorClientImpl::requestCheckingOfString):
        * src/EditorClientImpl.h:
        * src/WebSettingsImpl.cpp:
        (WebKit::WebSettingsImpl::setAsynchronousSpellCheckingEnabled):
        * src/WebSettingsImpl.h:
        * src/WebTextCheckingCompletionImpl.cpp: Added.
        (WebKit::toCoreResults):
        (WebKit::WebTextCheckingCompletionImpl::didFinishCheckingText):
        * src/WebTextCheckingCompletionImpl.h: Added.
        (WebKit::WebTextCheckingCompletionImpl::WebTextCheckingCompletionImpl):

2011-02-07  Enrica Casucci  <enrica@apple.com>

        Reviewed Adam Roben and Darin Adler.

        WebKit2: drag and drop support on Windows.
        https://bugs.webkit.org/show_bug.cgi?id=52775

        Removed createDragImageForLink from DragClient.
        
        * src/DragClientImpl.cpp:
        * src/DragClientImpl.h:

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

        Reviewed by Mihai Parparita.

        Crash in WebCore::HistoryController::itemsAreClones
        https://bugs.webkit.org/show_bug.cgi?id=52819

        Removes unneeded sanity checks used for diagnosing a memory error.

        * src/WebFrameImpl.cpp:

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

        Reviewed by Dmitry Titov.

        Clone WebClipboard to be frame-specific.
        https://bugs.webkit.org/show_bug.cgi?id=53727

        For drop operations, Chrome currently snapshots the data and copies it
        into the renderer process. As we add more supported drag data types, the
        copy will become increasingly expensive. Instead, we'd like to snapshot
        data in the browser to reduce the amount of data copied and to support
        Blob in DataTransferItem. In order to allow this, we associated
        WebClipboard with a frame so it can correctly route its IPCs to the
        corresponding Chromium host.

        * public/WebFrameClient.h:
        (WebKit::WebFrameClient::clipboard):
        * src/PlatformBridge.cpp:
        (WebCore::getClipboard):
        (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-02-04  Robert Hogan  <robert@webkit.org>

        Reviewed by Darin Fisher.

        Move chromium iframe shim code to cross-platform file
        https://bugs.webkit.org/show_bug.cgi?id=52594

        * src/WebPluginContainerImpl.cpp: Move code to WebCore/plugin/IFrameShimSupport.cpp

2011-02-04  Xiaomei Ji  <xji@chromium.org>

        Reviewed by David Levin.

        Implement "<option> should implement the dir attribute" for chromium port after r76983.
        https://bugs.webkit.org/show_bug.cgi?id=50969

        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::selectItemAlignmentFollowsMenuWritingDirection): Override as true.
        * src/WebViewImpl.cpp: Remove directionality hint from autofill drop-down setting.

2011-02-01  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Nate Chapin.

        Remove the timeout event from IndexedDB
        https://bugs.webkit.org/show_bug.cgi?id=53521

        * public/WebIDBDatabase.h:
        (WebKit::WebIDBDatabase::transaction):
        * public/WebIDBTransactionCallbacks.h:
        * src/IDBDatabaseProxy.cpp:
        (WebCore::IDBDatabaseProxy::transaction):
        * src/IDBDatabaseProxy.h:
        * src/IDBTransactionCallbacksProxy.cpp:
        * src/IDBTransactionCallbacksProxy.h:
        * src/WebIDBDatabaseImpl.cpp:
        (WebKit::WebIDBDatabaseImpl::transaction):
        * src/WebIDBDatabaseImpl.h:
        * src/WebIDBTransactionCallbacksImpl.cpp:
        * src/WebIDBTransactionCallbacksImpl.h:

2011-02-04  Ilya Tikhonovsky  <loislo@chromium.org>

        Unreviewed.

        Roll chromium to 73764.

        * DEPS:

2011-02-03  James Kozianski  <koz@chromium.org>

        Reviewed by Dimitri Glazkov.

        Add navigator.registerProtocolHandler behind a flag.
        https://bugs.webkit.org/show_bug.cgi?id=52609

        * features.gypi:
        * public/WebViewClient.h:
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::registerProtocolHandler):
        * src/ChromeClientImpl.h:

2011-02-03  Brian Ryner  <bryner@chromium.org>

        Reviewed by Darin Fisher.

        Add a field to the ResourceResponse for tracking the socket address
        of the host that the resource was fetched from.  Patch was originally
        by Paul Marks.
        https://bugs.webkit.org/show_bug.cgi?id=53699

        * public/WebURLResponse.h:
        * src/WebURLResponse.cpp:
        (WebKit::WebURLResponse::socketAddress):
        (WebKit::WebURLResponse::setSocketAddress):

2011-02-03  Adam Langley  <agl@chromium.org>

        Reviewed by Adam Barth.

        Plumb mixed script URL to FrameLoaderClient
        https://bugs.webkit.org/show_bug.cgi?id=52384

        Regressions covered by http/tests/security/mixedContent/*

        * public/WebFrameClient.h:
        (WebKit::WebFrameClient::didRunInsecureContent):
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::didRunInsecureContent):
        * src/FrameLoaderClientImpl.h:

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

        Reviewed by James Robinson.

        [chromium] Fix redundant video frame paint on CSS LayerChromium for <video>
        https://bugs.webkit.org/show_bug.cgi?id=52868

        * src/WebMediaPlayerClientImpl.cpp:
        (WebKit::WebMediaPlayerClientImpl::paint):
        (WebKit::WebMediaPlayerClientImpl::paintCurrentFrameInContext):
        (WebKit::WebMediaPlayerClientImpl::acceleratedRenderingInUse):
        * src/WebMediaPlayerClientImpl.h:

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

        Reviewed by Nate Chapin.

        Don't clear the callbacks ref in the proxy layer for IndexedDB
        https://bugs.webkit.org/show_bug.cgi?id=53535

        Clearing the callbacks doesn't actually solve any problems and makes
        this code behave subtly differently than how it would in Safari and
        other single process environments. Let's remove the difference.

        * src/IDBCallbacksProxy.cpp:
        (WebCore::IDBCallbacksProxy::onError):
        (WebCore::IDBCallbacksProxy::onSuccess):
        * src/IDBTransactionCallbacksProxy.cpp:
        (WebCore::IDBTransactionCallbacksProxy::onAbort):
        (WebCore::IDBTransactionCallbacksProxy::onComplete):
        (WebCore::IDBTransactionCallbacksProxy::onTimeout):

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

        Reviewed by Jeremy Orlow.

        Chromium: Remove deprecated WebIDBObjectStore::put() function
        https://bugs.webkit.org/show_bug.cgi?id=53669

        Remove deprecated put() function. Chromium side code now overrides
        the new version.

        * public/WebIDBObjectStore.h:
        (WebKit::WebIDBObjectStore::put):

2011-02-01  Pavel Podivilov  <podivilov@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: introduce new api for managing JavaScript breakpoints.
        https://bugs.webkit.org/show_bug.cgi?id=53235

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

2011-02-02  Evan Martin  <evan@chromium.org>

        Unreviewed, DEPS change.

        * DEPS: update to pick up newer Skia.

2011-02-02  Dimitri Glazkov  <dglazkov@chromium.org>

        Update more references to right() and bottom() in Chromium.

        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::doPixelReadbackToCanvas): Replaced bottom/right with maxY/maxX.

2011-02-02  Dimitri Glazkov  <dglazkov@chromium.org>

        Update more references to right() and bottom() in Chromium Win.

        * tests/TransparencyWinTest.cpp:
        (WebCore::TEST): Replaced bottom/right with maxY/maxX.

2011-02-02  Matthew Vosburgh  <maf@chromium.org>

        Reviewed by Kenneth Russell.

        Some favicons not correctly decoded by Chromium/Mac
        https://bugs.webkit.org/show_bug.cgi?id=53448

        * src/WebImageCG.cpp:
        (WebKit::WebImage::fromData):

2011-02-02  Dimitri Glazkov  <dglazkov@chromium.org>

        Reviewed by Dave Hyatt.

        Remove remaining references to right() and bottom() from Chromium build.
        https://bugs.webkit.org/show_bug.cgi?id=53613

        * src/DragScrollTimer.cpp:
        (WebKit::distanceToRect): Replaced right/bottom with maxX/maxY.
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::doPixelReadbackToCanvas): Ditto.

2011-02-01  Darin Fisher  <darin@chromium.org>

        Reviewed by Kenneth Russell.

        [chromium] Avoid #ifdefs in code that constructs a GraphicsContext by
        adding a helper class.
        https://bugs.webkit.org/show_bug.cgi?id=53575

        * WebKit.gyp:
        * src/WebFontImpl.cpp:
        (WebKit::WebFontImpl::drawText):
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::printPage):
        (WebKit::WebFrameImpl::paint):
        * src/WebPopupMenuImpl.cpp:
        (WebKit::WebPopupMenuImpl::paint):
        * src/WebScrollbarImpl.cpp:
        (WebKit::WebScrollbarImpl::paint):
        * src/painting: Added.
        * src/painting/GraphicsContextBuilder.h: Added.
        (WebKit::GraphicsContextBuilder::GraphicsContextBuilder):
        (WebKit::GraphicsContextBuilder::context):

2011-02-02  Hans Wennborg  <hans@chromium.org>

        Reviewed by Jeremy Orlow.

        IndexedDB: Implement support for cursor updates
        https://bugs.webkit.org/show_bug.cgi?id=53421

        Mirror the update to the IDBObjectStoreInterface::put() signature in
        the WebKit layer wrappers.

        * public/WebIDBObjectStore.h:
        (WebKit::WebIDBObjectStore::put):
        * src/IDBObjectStoreProxy.cpp:
        (WebCore::IDBObjectStoreProxy::put):
        * src/IDBObjectStoreProxy.h:
        * src/WebIDBObjectStoreImpl.cpp:
        (WebKit::WebIDBObjectStoreImpl::put):
        * src/WebIDBObjectStoreImpl.h:

2011-02-02  Chris Evans  <cevans@chromium.org>

        Reviewed by Adam Barth.

        [Chromium] Propagate the accurate gesture status when calling into FrameLoader
        https://bugs.webkit.org/show_bug.cgi?id=53571

        * src/WebPluginContainerImpl.cpp:
        (WebKit::WebPluginContainerImpl::loadFrameRequest): FrameLoader might decide the target is a new window, so make such the UserGestureIndicator is fully accurate before calling into it.

2011-02-01  Kent Tamura  <tkent@chromium.org>

        Reviewed by Tony Chang.

        [Chromium] Roll Chromium revision for the WebKitWeightWatcher change
        https://bugs.webkit.org/show_bug.cgi?id=53563

        * DEPS: Roll to crrev.com/73378 to have the WebKitWeightWatcher change of webkit_support.

2011-02-01  Darin Fisher  <darin@chromium.org>

        Reviewed by David Levin.

        [chromium] Remove unnecessary WebCore:: prefixing in a few places and fix-up some indentation.
        https://bugs.webkit.org/show_bug.cgi?id=53523

        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::attach):
        (WebKit::WebDevToolsAgentImpl::inspectNode):
        (WebKit::WebDevToolsAgentImpl::inspectorController):
        (WebKit::WebDevToolsAgentImpl::mainFrame):
        (WebKit::WebDevToolsAgentImpl::identifierForInitialRequest):
        (WebKit::WebDevToolsAgentImpl::sendMessageToFrontend):
        (WebKit::WebDevToolsAgentImpl::updateInspectorStateCookie):
        (WebKit::WebDevToolsAgent::interruptAndDispatch):
        (WebKit::WebDevToolsAgent::processPendingMessages):
        * src/WebPopupMenuImpl.cpp:
        (WebKit::WebPopupMenuImpl::resize):
        * src/WebScrollbarImpl.cpp:
        (WebKit::WebScrollbarImpl::setLocation):
        (WebKit::WebScrollbarImpl::setValue):
        (WebKit::WebScrollbarImpl::onMouseWheel):
        (WebKit::WebScrollbarImpl::onKeyDown):
        (WebKit::WebScrollbarImpl::scrollPosition):
        (WebKit::WebScrollbarImpl::setScrollOffset):
        (WebKit::WebScrollbarImpl::invalidateScrollbarRect):
        (WebKit::WebScrollbarImpl::getTickmarks):

2011-02-01  Mihai Parparita  <mihaip@chromium.org>

        Unreviewed roll of Chromium deps to r73306. This picks up a fix to get
        the WebKit root dir correctly after the move to Source/. This allows 
        tests like http/tests/security/frame-loading-via-document-write.html
        (which use LayoutTestController.pathToLocalResource) to pass with the
        Chromium DRT.

        * DEPS:

2011-02-01  Alexander Pavlov  <apavlov@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: [Chromium] Wrongly labelled context-menu item for links in Web Inspector's side-pane
        https://bugs.webkit.org/show_bug.cgi?id=53482

        * src/js/DevTools.js:
        (WebInspector.openLinkExternallyLabel): Override to customize a context menu item label

2011-02-01  Darin Fisher  <darin@chromium.org>

        Reviewed by Eric Seidel.

        Fix some Visual Studio compiler warnings.
        https://bugs.webkit.org/show_bug.cgi?id=53476

        * src/GraphicsContext3DChromium.cpp:
        (WebCore::GraphicsContext3DInternal::paintRenderingResultsToCanvas):
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::forms):
        * src/WebMediaPlayerClientImpl.cpp:
        (WebKit::WebMediaPlayerClientImpl::repaint):
        * src/WebScrollbarImpl.cpp:
        (WebKit::WebScrollbarImpl::setValue):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::doPixelReadbackToCanvas):
        (WebKit::WebViewImpl::setZoomLevel):
        (WebKit::WebViewImplScrollbarPaintInterface::paint):

2011-02-01  Hans Wennborg  <hans@chromium.org>

        Reviewed by Jeremy Orlow.

        Chromium: remove WebIDBCallbacks::onSucces()
        https://bugs.webkit.org/show_bug.cgi?id=53415

        Remove un-used function.

        * public/WebIDBCallbacks.h:

2011-02-01  Yury Semikhatsky  <yurys@chromium.org>

        Unreviewed. Fix Chromium Debug compilation broken by r77228.

        [Chromium] Autofill should work with HTML5 form elements
        https://bugs.webkit.org/show_bug.cgi?id=51809

        * src/WebInputElement.cpp:
        (WebKit::toWebInputElement):

2011-02-01  Naoki Takano  <takano.naoki@gmail.com>

        Reviewed by Darin Fisher.

        [Chromium] Autofill should work with HTML5 form elements
        https://bugs.webkit.org/show_bug.cgi?id=51809
        http://crbug.com/65654

        No new tests, because this fix is for Chromium project and hard to test only in WebKit project.

        * public/WebInputElement.h: Added toWebInputElement() declarations and implemented const version of toWebInputElement().
        * src/WebInputElement.cpp:
        (WebKit::WebInputElement::toWebInputElement): Implemented a convert function to cast no-const WebElement* to no-const WebInputElement*. Because Chrome needs safe cast for autofill completion.

2011-01-31  Chris Rogers  <crogers@google.com>

        Reviewed by Jeremy Orlow.

        Improve audio latency on Mac OS X for chromium port
        https://bugs.webkit.org/show_bug.cgi?id=53452

        * src/AudioDestinationChromium.cpp:

2011-01-29  Patrick Gansterer  <paroga@webkit.org>

        Reviewed by David Kilzer.

        Move CharacterNames.h into WTF directory
        https://bugs.webkit.org/show_bug.cgi?id=49618

        * src/ChromeClientImpl.cpp:

2011-01-28  Ryosuke Niwa  <rniwa@webkit.org>

        Unreviewed; roll WebKit Chromium revision from 72894 to 73048.

        * DEPS:

2011-01-28  Dan Bernstein  <mitz@apple.com>

        Reviewed by Sam Weinig.

        <select> can't display right-to-left (rtl) languages
        https://bugs.webkit.org/show_bug.cgi?id=19785

        * src/AutoFillPopupMenuClient.cpp:
        (WebKit::AutoFillPopupMenuClient::initialize): Pass hasTextDirectionOverride to the PopupMenuStyle
        constructor.
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::selectItemAlignmentFollowsMenuWritingDirection): Added.
        * src/ChromeClientImpl.h:
        * tests/PopupMenuTest.cpp:
        (WebKit::TestPopupMenuClient::itemStyle): Pass hasTextDirectionOverride to the PopupMenuStyle
        constructor.

2011-01-28  Adam Klein  <adamk@chromium.org>

        Reviewed by Kent Tamura.

        [Chromium] Remove deprecated openFileSystem method signature
        https://bugs.webkit.org/show_bug.cgi?id=53262

        Chromium still builds after this patch.

        * public/WebFrameClient.h:

2011-01-28  Ilya Sherman  <isherman@chromium.org>

        Reviewed by Andreas Kling.

        Const-correct HTMLSelectElement and WebSelectElement
        https://bugs.webkit.org/show_bug.cgi?id=53293

        * public/WebSelectElement.h:
        * src/WebSelectElement.cpp:
        (WebKit::WebSelectElement::value): const.
        (WebKit::WebSelectElement::listItems): const.

2011-01-27  Finnur Thorarinsson  <finnur.webkit@gmail.com>

        Reviewed by Ojan Vafai.

        This addresses a regression introduced by r75784, as described in:
        https://bugs.webkit.org/show_bug.cgi?id=53176

        The problem is that originalEndContainer and originalEndOffset was
        meant to capture the end of the document, but was being assigned after
        a call to searchRange->setStart() (when scoping is restarted), which can
        result in the Range being collapsed to start (thereby assigning the
        wrong value to the Container/Offset pair).

        This code is never triggered by layout tests, but I'm adding a regressiono
        test on the Chromium side for this.

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

2011-01-27  Zhenyao Mo  <zmo@google.com>

        Reviewed by Kenneth Russell.

        Define GC3D types to match GL types and use them in WebGraphicsContext3D
        https://bugs.webkit.org/show_bug.cgi?id=51947

        * public/WebGraphicsContext3D.h:

2011-01-27  Zhenyao Mo  <zmo@google.com>

        Unreviewed, roll webkit chromium rev from 72673 to 72894.
        Also, added gmock section in DEPS to pull down gmock.

        * DEPS:

2011-01-27  Alexey Marinichev  <amarinichev@chromium.org>

        Reviewed by Kenneth Russell.

        Add a callback to WebGraphicsContext3D that is called when a context is lost
        https://bugs.webkit.org/show_bug.cgi?id=53153

        * public/WebGraphicsContext3D.h:
        (WebKit::WebGraphicsContext3D::setContextLostCallback):

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

        Unreviewed, fixed upstream Chromium build
        
        r76844 should have rolled back Chromium DEPS to 72673, not 72637.

        * DEPS:

2011-01-27  Zhenyao Mo  <zmo@google.com>

        Unreviewed, roll back webkit chromium rev to 72637.

        * DEPS:

2011-01-27  Zhenyao Mo  <zmo@google.com>

        Unreviewed.

        Roll Webkit Chromium rev from 72637 to 72868.

        * DEPS:

2011-01-27  Hans Wennborg  <hans@chromium.org>

        Reviewed by Jeremy Orlow.

        IndexedDB: Remove IDBCallbacks::onSuccess() used for null values.
        https://bugs.webkit.org/show_bug.cgi?id=53178

        Remove the IDBCallbacks::onSuccess() function that was used for
        null values, and replace such calls with calls to
        IDBCallBacks::onSuccess(SerializedScriptValue::nullValue())
        instead.

        * public/WebIDBCallbacks.h:
        (WebKit::WebIDBCallbacks::onSuccess):
        * src/IDBCallbacksProxy.cpp:
        * src/IDBCallbacksProxy.h:
        * src/WebIDBCallbacksImpl.cpp:
        * src/WebIDBCallbacksImpl.h:

2011-01-26  Kent Tamura  <tkent@chromium.org>

        Reviewed by Dimitri Glazkov.

        [Chromium] WebFrame::forms() should not return empty WebFormElements
        https://bugs.webkit.org/show_bug.cgi?id=53204

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::forms):
         - Should iterate by forms->length(), not the number of HTMLElements.
         - Do not increment the index for "temp" if a node is not an HTMLElement.

2011-01-26  Dan Bernstein  <mitz@apple.com>

        Reviewed by Dave Hyatt.

        <rdar://problem/8446709> Allow inter-ideograph justification for CJK
        https://bugs.webkit.org/show_bug.cgi?id=53184

        * src/WebTextRun.cpp:
        (WebKit::WebTextRun::operator WebCore::TextRun): Added a TrailingExpansionBehavior parameter to the
        RenderText constructor.

2011-01-26  Kenneth Russell  <kbr@google.com>

        Reviewed by James Robinson.

        Fix multisampling support in DrawingBuffer
        https://bugs.webkit.org/show_bug.cgi?id=53154

        Plumbed GL_ANGLE_framebuffer_multisample and
        GL_ANGLE_framebuffer_blit (exposed as the unified extension
        GL_CHROMIUM_framebuffer_multisample) through WebGraphicsContext3D.

        * public/WebGraphicsContext3D.h:
        * src/Extensions3DChromium.cpp:
        (WebCore::Extensions3DChromium::blitFramebuffer):
        (WebCore::Extensions3DChromium::renderbufferStorageMultisample):
        * src/GraphicsContext3DChromium.cpp:
        (WebCore::GraphicsContext3DInternal::supportsExtension):
        (WebCore::GraphicsContext3DInternal::ensureExtensionEnabled):
        * src/GraphicsContext3DInternal.h:

2011-01-26  Tony Chang  <tony@chromium.org>

        Unreviewed.

        [chromium] revert r68310 because of race conditions detected by tsans
        https://bugs.webkit.org/show_bug.cgi?id=53185

        * DEPS: Roll chromium to 72673 to pick up sqlite revert.

2011-01-26  James Robinson  <jamesr@chromium.org>

        Reviewed by Nate Chapin.

        Add a DOMTimeStamp parameter to the requestAnimationFrame callback
        https://bugs.webkit.org/show_bug.cgi?id=53142

        Provides a timestamp to use for imperative animation callbacks.  In this patch the timestamp is
        just the current time at the start of the callback invocation algorithm.  In the future we
        could enhance this to try to take the compositing delay into effect to try to synchronize
        imperative animations more closely with declarative ones, but this should do for now.

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

2011-01-25  Kent Tamura  <tkent@chromium.org>

        Unreviewed trivial change.

        * DEPS: Roll to r72581 to have a webkit_support fix.

2011-01-25  Hans Wennborg  <hans@chromium.org>

        Reviewed by Jeremy Orlow.

        IndexedDB: Remove PlatformBridge::idbShutdown()
        https://bugs.webkit.org/show_bug.cgi?id=53077

        Since Chromium r72157, this is not used anymore. Chromium keeps track
        of when it shuts down IndexedDB itself.

        * public/WebKitClient.h:
        * src/PlatformBridge.cpp:

2011-01-25  Ilya Sherman  <isherman@chromium.org>

        Reviewed by Darin Fisher.

        Chromium WebKit API: Move dispatchFormControlChangeEvent() from WebInputElement to WebFormControlElement
        In service of https://code.google.com/p/chromium/issues/detail?id=42716
        https://bugs.webkit.org/show_bug.cgi?id=53069

        * public/WebFormControlElement.h:
        * public/WebInputElement.h:
        * src/WebFormControlElement.cpp:
        (WebKit::WebFormControlElement::dispatchFormControlChangeEvent): Moved from WebInputElement
        * src/WebInputElement.cpp:

2011-01-24  Chris Marrin  <cmarrin@apple.com>

        Reviewed by Eric Seidel.

        Change ENABLE_3D_CANVAS to ENABLE_WEBGL
        https://bugs.webkit.org/show_bug.cgi?id=53041

        * WebKit.gyp:
        * features.gypi:
        * src/Extensions3DChromium.cpp:
        * src/GraphicsContext3DChromium.cpp:
        * src/WebRuntimeFeatures.cpp:
        (WebKit::WebRuntimeFeatures::enableWebGL):
        (WebKit::WebRuntimeFeatures::isWebGLEnabled):

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

        Reviewed by Pavel Feldman.

        Web Inspector: [Chromium] Prepare for landing of detailed heap snapshots.

        - Introduce Preferences.detailedHeapProfiles flag for controlling
          querying of detailed heap snapshots.
        - Add boilerplate code for the new view.
        - Factor out common code.

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

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

2011-01-25  Pavel Podivilov  <podivilov@chromium.org>

        Unreviewed, trivial debugger test fix.

        * src/js/Tests.js:

2011-01-24  Zhenyao Mo  <zmo@google.com>

        Reviewed by Darin Adler.

        Remove sizeInBytes from GraphicsContext3D's various implementations
        https://bugs.webkit.org/show_bug.cgi?id=52339

        * src/GraphicsContext3DChromium.cpp:
        * src/GraphicsContext3DInternal.h:

2011-01-24  Tony Chang  <tony@chromium.org>

        Reviewed by James Robinson.

        [chromium] turn off gyp circular dependency checking and roll chromium deps
        https://bugs.webkit.org/show_bug.cgi?id=52935

        * DEPS:
        * gyp_webkit: Turn off gyp circular dependency checking on Linux
            and Win since we don't do these checks in gyp_chromium.  It's
            just making it harder for us to roll DEPS and have something
            explode.

2011-01-24  Satish Sampath  <satish@chromium.org>

        Reviewed by Csaba Osztrogonác.

        Remove obsolete public/API method in chromium port
        https://bugs.webkit.org/show_bug.cgi?id=53015

        * public/WebSpeechInputController.h:
        (WebKit::WebSpeechInputController::startRecognition): Removed obsolete method

2010-01-24  Kent Tamura  <tkent@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Support icon loading for <input type=file>
        https://bugs.webkit.org/show_bug.cgi?id=38982

        Implement ChromeClientImpl::chooseIconForFiles(). It delegates loading
        to WebViewClient::queryIconForFiles(), and an implementation of
        WebViewClient::queryIconForFiles() loads an icon and passes it to a
        FileChooser through WebIconLoadingCompletion.

        * WebKit.gyp:
        * public/WebIconLoadingCompletion.h: Added.
        (WebKit::WebIconLoadingCompletion::~WebIconLoadingCompletion):
        * public/WebViewClient.h:
        (WebKit::WebViewClient::queryIconForFiles):
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::chooseIconForFiles):
        * src/WebIconLoadingCompletionImpl.cpp: Added.
        (WebKit::WebIconLoadingCompletionImpl::WebIconLoadingCompletionImpl):
        (WebKit::WebIconLoadingCompletionImpl::~WebIconLoadingCompletionImpl):
        (WebKit::WebIconLoadingCompletionImpl::didLoadIcon):
        * src/WebIconLoadingCompletionImpl.h: Added.

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

        Reviewed by Adam Barth.

        [chromium]: Fix WebScrollbarImpl not getting scroll events after recent scrollbar refactoring
        https://bugs.webkit.org/show_bug.cgi?id=52967

        * src/WebScrollbarImpl.cpp:
        (WebKit::WebScrollbarImpl::horizontalScrollbar):
        (WebKit::WebScrollbarImpl::verticalScrollbar):
        * src/WebScrollbarImpl.h:

2011-01-21  Nikolas Zimmermann  <nzimmermann@rim.com>

        Reviewed by Dirk Schulze.

        Introduce FontMetrics abstraction
        https://bugs.webkit.org/show_bug.cgi?id=51456

        * src/ExternalPopupMenu.cpp: Use FontMetrics instead of Font to access the metrics.
        (WebKit::ExternalPopupMenu::getPopupMenuInfo):
        * src/WebFontImpl.cpp: Ditto.
        (WebKit::WebFontImpl::ascent):
        (WebKit::WebFontImpl::descent):
        (WebKit::WebFontImpl::height):
        (WebKit::WebFontImpl::lineSpacing):
        (WebKit::WebFontImpl::xHeight):

2011-01-21  Chris Rogers  <crogers@google.com>

        Unreviewed

        define HAS_WEBAUDIO_RUNTIMEFEATURES for synchronization with chromium patch landing
        https://bugs.webkit.org/show_bug.cgi?id=52941

        * public/WebRuntimeFeatures.h:

2011-01-21  Chris Rogers  <crogers@google.com>

        Unreviewed

        Add HAS_WEBAUDIO_FEATURE_ENABLE define to synchronize with chromium-side patch
        https://bugs.webkit.org/show_bug.cgi?id=52939

        * public/WebSettings.h:

2011-01-21  Charlie Reis  <creis@chromium.org>

        Reviewed by Darin Fisher.

        Crash in WebCore::HistoryController::itemsAreClones
        https://bugs.webkit.org/show_bug.cgi?id=52819

        Adds sanity checks to help diagnose the crash.

        * src/WebFrameImpl.cpp:

2011-01-21  Chris Rogers  <crogers@google.com>

        Reviewed by Darin Fisher.

        Add run-time enable support for the web audio API
        https://bugs.webkit.org/show_bug.cgi?id=52741

        * public/WebRuntimeFeatures.h:
        * public/WebSettings.h:
        * src/WebRuntimeFeatures.cpp:
        (WebKit::WebRuntimeFeatures::enableWebAudio):
        (WebKit::WebRuntimeFeatures::isWebAudioEnabled):
        * src/WebSettingsImpl.cpp:
        (WebKit::WebSettingsImpl::setWebAudioEnabled):
        * src/WebSettingsImpl.h:

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

        Unreviewed; another Chromium build fix attempt for r76378.

        * src/WebScrollbarImpl.cpp:
        (WebKit::WebScrollbar::create):
        (WebKit::WebScrollbarImpl::WebScrollbarImpl):
        (WebKit::WebScrollbarImpl::setValue):

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

        Unreviewed Chromium build fix attempt for r76378.

        * src/WebScrollbarImpl.cpp:
        (WebKit::WebScrollbar::create):
        (WebKit::WebScrollbarImpl::WebScrollbarImpl):

2011-01-21  Chris Rogers  <crogers@google.com>

        Reviewed by Kenneth Russell.

        Add chromium bundled audio spatialization resources to WebAudio.grd
        https://bugs.webkit.org/show_bug.cgi?id=52651

        * WebKit.grd:

2011-01-21  Xiyuan Xia  <xiyuan@chromium.org>

        Reviewed by Tony Chang.

        Use WebThemeEngine for relevant RenderTheme parts for chromium/linux.
        https://bugs.webkit.org/show_bug.cgi?id=52826

        * WebKit.gyp:
        * src/ChromiumBridge.cpp:
        (WebCore::WebThemePart):
        (WebCore::GetWebThemeExtraParams):

2011-01-21  Sam Weinig  <sam@webkit.org>

        Reviewed by Anders Carlsson.

        Part 2 of "Cleanup Scrollbar/ScrollbarClient relationship"
        https://bugs.webkit.org/show_bug.cgi?id=52779

        Rename ScrollbarClient -> ScrollableArea.

        * src/AutoFillPopupMenuClient.cpp:
        (WebKit::AutoFillPopupMenuClient::createScrollbar):
        * src/AutoFillPopupMenuClient.h:
        * src/WebScrollbarImpl.cpp:
        (WebKit::WebScrollbarImpl::WebScrollbarImpl):
        (WebKit::WebScrollbarImpl::scroll):
        (WebKit::WebScrollbarImpl::onMouseWheel):
        (WebKit::WebScrollbarImpl::onKeyDown):
        * src/WebScrollbarImpl.h:
        * tests/PopupMenuTest.cpp:
        (WebKit::TestPopupMenuClient::createScrollbar):

2011-01-21  Sailesh Agrawal  <sail@chromium.org>

        Reviewed by Ryosuke Niwa.

        [chromium] Notify WebFrameClient when spellcheck state changes
        https://bugs.webkit.org/show_bug.cgi?id=52680

        * public/WebFrameClient.h:
        (WebKit::WebFrameClient::continuousSpellCheckingEnabledStateChanged):
        * src/EditorClientImpl.cpp:
        (WebKit::EditorClientImpl::toggleContinuousSpellChecking):
        * src/WebFrameImpl.cpp:

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

        Unreviewed, updating chromium DEPS so we can pull in linux theme changes.

        * DEPS:

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

        Reviewed by Eric Seidel.

        [chromium] Rename ChromiumBridge to PlatformBridge
        https://bugs.webkit.org/show_bug.cgi?id=52471

        * WebKit.gyp:
        * src/AssertMatchingEnums.cpp:
        * src/PlatformBridge.cpp:
        (WebCore::toChromeClientImpl):
        (WebCore::toWebWidgetClient):
        (WebCore::getCookieJar):
        (WebCore::PlatformBridge::cacheMetadata):
        (WebCore::PlatformBridge::clipboardIsFormatAvailable):
        (WebCore::PlatformBridge::clipboardReadPlainText):
        (WebCore::PlatformBridge::clipboardReadHTML):
        (WebCore::PlatformBridge::clipboardWriteSelection):
        (WebCore::PlatformBridge::clipboardWritePlainText):
        (WebCore::PlatformBridge::clipboardWriteURL):
        (WebCore::PlatformBridge::clipboardWriteImage):
        (WebCore::PlatformBridge::clipboardWriteData):
        (WebCore::PlatformBridge::clipboardReadAvailableTypes):
        (WebCore::PlatformBridge::clipboardReadData):
        (WebCore::PlatformBridge::clipboardReadFilenames):
        (WebCore::PlatformBridge::setCookies):
        (WebCore::PlatformBridge::cookies):
        (WebCore::PlatformBridge::cookieRequestHeaderFieldValue):
        (WebCore::PlatformBridge::rawCookies):
        (WebCore::PlatformBridge::deleteCookie):
        (WebCore::PlatformBridge::cookiesEnabled):
        (WebCore::PlatformBridge::prefetchDNS):
        (WebCore::PlatformBridge::fileExists):
        (WebCore::PlatformBridge::deleteFile):
        (WebCore::PlatformBridge::deleteEmptyDirectory):
        (WebCore::PlatformBridge::getFileSize):
        (WebCore::PlatformBridge::revealFolderInOS):
        (WebCore::PlatformBridge::getFileModificationTime):
        (WebCore::PlatformBridge::directoryName):
        (WebCore::PlatformBridge::pathByAppendingComponent):
        (WebCore::PlatformBridge::makeAllDirectories):
        (WebCore::PlatformBridge::getAbsolutePath):
        (WebCore::PlatformBridge::isDirectory):
        (WebCore::PlatformBridge::filePathToURL):
        (WebCore::PlatformBridge::openFile):
        (WebCore::PlatformBridge::closeFile):
        (WebCore::PlatformBridge::seekFile):
        (WebCore::PlatformBridge::truncateFile):
        (WebCore::PlatformBridge::readFromFile):
        (WebCore::PlatformBridge::writeToFile):
        (WebCore::PlatformBridge::ensureFontLoaded):
        (WebCore::PlatformBridge::getFontFamilyForCharacters):
        (WebCore::PlatformBridge::getRenderStyleForStrike):
        (WebCore::PlatformBridge::loadFont):
        (WebCore::PlatformBridge::databaseOpenFile):
        (WebCore::PlatformBridge::databaseDeleteFile):
        (WebCore::PlatformBridge::databaseGetFileAttributes):
        (WebCore::PlatformBridge::databaseGetFileSize):
        (WebCore::PlatformBridge::idbFactory):
        (WebCore::PlatformBridge::idbShutdown):
        (WebCore::PlatformBridge::createIDBKeysFromSerializedValuesAndKeyPath):
        (WebCore::PlatformBridge::signedPublicKeyAndChallengeString):
        (WebCore::PlatformBridge::computedDefaultLanguage):
        (WebCore::PlatformBridge::layoutTestMode):
        (WebCore::PlatformBridge::isSupportedImageMIMEType):
        (WebCore::PlatformBridge::isSupportedJavaScriptMIMEType):
        (WebCore::PlatformBridge::isSupportedNonImageMIMEType):
        (WebCore::PlatformBridge::mimeTypeForExtension):
        (WebCore::PlatformBridge::mimeTypeFromFile):
        (WebCore::PlatformBridge::preferredExtensionForMIMEType):
        (WebCore::PlatformBridge::plugins):
        (WebCore::PlatformBridge::pluginScriptableObject):
        (WebCore::PlatformBridge::loadPlatformImageResource):
        (WebCore::PlatformBridge::loadPlatformAudioResource):
        (WebCore::PlatformBridge::decodeAudioFileData):
        (WebCore::PlatformBridge::sandboxEnabled):
        (WebCore::PlatformBridge::setSharedTimerFiredFunction):
        (WebCore::PlatformBridge::setSharedTimerFireTime):
        (WebCore::PlatformBridge::stopSharedTimer):
        (WebCore::PlatformBridge::decrementStatsCounter):
        (WebCore::PlatformBridge::incrementStatsCounter):
        (WebCore::PlatformBridge::histogramCustomCounts):
        (WebCore::PlatformBridge::histogramEnumeration):
        (WebCore::PlatformBridge::suddenTerminationChanged):
        (WebCore::PlatformBridge::currentTime):
        (WebCore::PlatformBridge::paintButton):
        (WebCore::PlatformBridge::paintMenuList):
        (WebCore::PlatformBridge::paintScrollbarArrow):
        (WebCore::PlatformBridge::paintScrollbarThumb):
        (WebCore::PlatformBridge::paintScrollbarTrack):
        (WebCore::PlatformBridge::paintSpinButton):
        (WebCore::PlatformBridge::paintTextField):
        (WebCore::PlatformBridge::paintTrackbar):
        (WebCore::PlatformBridge::paintProgressBar):
        (WebCore::WebThemePart):
        (WebCore::WebThemeState):
        (WebCore::GetWebThemeExtraParams):
        (WebCore::PlatformBridge::getThemePartSize):
        (WebCore::PlatformBridge::paintThemePart):
        (WebCore::PlatformBridge::traceEventBegin):
        (WebCore::PlatformBridge::traceEventEnd):
        (WebCore::PlatformBridge::visitedLinkHash):
        (WebCore::PlatformBridge::isLinkVisited):
        (WebCore::PlatformBridge::notifyJSOutOfMemory):
        (WebCore::PlatformBridge::memoryUsageMB):
        (WebCore::PlatformBridge::actualMemoryUsageMB):
        (WebCore::PlatformBridge::screenDepth):
        (WebCore::PlatformBridge::screenDepthPerComponent):
        (WebCore::PlatformBridge::screenIsMonochrome):
        (WebCore::PlatformBridge::screenRect):
        (WebCore::PlatformBridge::screenAvailableRect):
        (WebCore::PlatformBridge::popupsAllowed):
        (WebCore::WorkerContextProxy::create):
        * src/ResourceHandle.cpp:
        (WebCore::ResourceHandle::cacheMetadata):
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::WebFrameImpl):
        (WebKit::WebFrameImpl::~WebFrameImpl):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::setIsAcceleratedCompositingActive):

2011-01-20  Adam Klein  <adamk@chromium.org>

        Reviewed by Andreas Kling.

        [chromium] Remove deprecated WebKit::nameOfInputElement function
        https://bugs.webkit.org/show_bug.cgi?id=52824

        * src/DOMUtilitiesPrivate.cpp:
        * src/DOMUtilitiesPrivate.h:

2011-01-20  Sam Weinig  <sam@webkit.org>

        Reviewed by Dave Hyatt.

        Cleanup Scrollbar/ScrollbarClient relationship
        https://bugs.webkit.org/show_bug.cgi?id=52779

        * src/WebScrollbarImpl.cpp:
        (WebKit::WebScrollbarImpl::WebScrollbarImpl):
        (WebKit::WebScrollbarImpl::value):
        (WebKit::WebScrollbarImpl::setValue):
        (WebKit::WebScrollbarImpl::scroll):
        (WebKit::WebScrollbarImpl::onMouseDown):
        (WebKit::WebScrollbarImpl::onMouseMove):
        (WebKit::WebScrollbarImpl::onMouseWheel):
        (WebKit::WebScrollbarImpl::onKeyDown):
        (WebKit::WebScrollbarImpl::scrollPosition):
        (WebKit::WebScrollbarImpl::setScrollOffset):
        * src/WebScrollbarImpl.h:

2011-01-20  James Robinson  <jamesr@chromium.org>

        Reviewed by Darin Fisher.

        Implement mozilla's requestAnimationFrame API
        https://bugs.webkit.org/show_bug.cgi?id=51218

        Chromium WebKit API support for window.webkitRequestAnimationFrame()

        * features.gypi:
        * public/WebWidget.h:
        * public/WebWidgetClient.h:
        (WebKit::WebWidgetClient::scheduleAnimation):
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::scheduleAnimation):
        * src/ChromeClientImpl.h:
        * src/WebPopupMenuImpl.cpp:
        (WebKit::WebPopupMenuImpl::animate):
        (WebKit::WebPopupMenuImpl::scheduleAnimation):
        * src/WebPopupMenuImpl.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::animate):
        * src/WebViewImpl.h:

2010-12-14  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Adam Barth.

        [V8] Get rid of delayed exception reporting in V8ConsoleMessage.cpp
        https://bugs.webkit.org/show_bug.cgi?id=51044

        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::runJavaScriptAlert):
        * src/WebScriptController.cpp:
        (WebKit::WebScriptController::flushConsoleMessages):

2010-12-27  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        WebCore doesn't fire window.onerror event when uncaught JavaScript exceptions are thrown
        https://bugs.webkit.org/show_bug.cgi?id=8519

        Uncaught exceptions are propagated to window.onerror hander if one is present.
        The handler is expected to be a function accepting three arguments: error message,
        resource url and line number where the exception occured.

        It was decided to dispatch ErrorEvent to all listeners/handlers no matter if they
        were created in the same isolated world where the exception occured or not.

        Tests: fast/events/window-onerror1.html
               fast/events/window-onerror10.html
               fast/events/window-onerror11.html
               fast/events/window-onerror12.html
               fast/events/window-onerror2.html
               fast/events/window-onerror3.html
               fast/events/window-onerror4.html
               fast/events/window-onerror5.html
               fast/events/window-onerror6.html
               fast/events/window-onerror7.html
               fast/events/window-onerror8.html
               fast/events/window-onerror9.html
               http/tests/security/window-onerror-exception-in-iframe.html
               userscripts/window-onerror-for-isolated-world-1.html
               userscripts/window-onerror-for-isolated-world-2.html

        * src/WebWorkerClientImpl.cpp:
        (WebKit::WebWorkerClientImpl::postExceptionToWorkerObject):
        (WebKit::WebWorkerClientImpl::postConsoleMessageToWorkerObject):
        (WebKit::WebWorkerClientImpl::postExceptionToWorkerObjectTask):
        (WebKit::WebWorkerClientImpl::postConsoleMessageToWorkerObjectTask):

2011-01-19  Dmitry Titov  <dimich@chromium.org>

        [Chromium] Unreviewed, build fix.

        During revert of 76203, sheriffbot did not revert "rename+change" correctly.

        * src/ChromiumBridge.cpp: Renamed from Source/WebKit/chromium/src/PlatformBridge.cpp.
        (WebCore::toChromeClientImpl):
        (WebCore::toWebWidgetClient):
        (WebCore::getCookieJar):
        (WebCore::ChromiumBridge::cacheMetadata):
        (WebCore::ChromiumBridge::clipboardIsFormatAvailable):
        (WebCore::ChromiumBridge::clipboardReadPlainText):
        (WebCore::ChromiumBridge::clipboardReadHTML):
        (WebCore::ChromiumBridge::clipboardWriteSelection):
        (WebCore::ChromiumBridge::clipboardWritePlainText):
        (WebCore::ChromiumBridge::clipboardWriteURL):
        (WebCore::ChromiumBridge::clipboardWriteImage):
        (WebCore::ChromiumBridge::clipboardWriteData):
        (WebCore::ChromiumBridge::clipboardReadAvailableTypes):
        (WebCore::ChromiumBridge::clipboardReadData):
        (WebCore::ChromiumBridge::clipboardReadFilenames):
        (WebCore::ChromiumBridge::setCookies):
        (WebCore::ChromiumBridge::cookies):
        (WebCore::ChromiumBridge::cookieRequestHeaderFieldValue):
        (WebCore::ChromiumBridge::rawCookies):
        (WebCore::ChromiumBridge::deleteCookie):
        (WebCore::ChromiumBridge::cookiesEnabled):
        (WebCore::ChromiumBridge::prefetchDNS):
        (WebCore::ChromiumBridge::fileExists):
        (WebCore::ChromiumBridge::deleteFile):
        (WebCore::ChromiumBridge::deleteEmptyDirectory):
        (WebCore::ChromiumBridge::getFileSize):
        (WebCore::ChromiumBridge::revealFolderInOS):
        (WebCore::ChromiumBridge::getFileModificationTime):
        (WebCore::ChromiumBridge::directoryName):
        (WebCore::ChromiumBridge::pathByAppendingComponent):
        (WebCore::ChromiumBridge::makeAllDirectories):
        (WebCore::ChromiumBridge::getAbsolutePath):
        (WebCore::ChromiumBridge::isDirectory):
        (WebCore::ChromiumBridge::filePathToURL):
        (WebCore::ChromiumBridge::openFile):
        (WebCore::ChromiumBridge::closeFile):
        (WebCore::ChromiumBridge::seekFile):
        (WebCore::ChromiumBridge::truncateFile):
        (WebCore::ChromiumBridge::readFromFile):
        (WebCore::ChromiumBridge::writeToFile):
        (WebCore::ChromiumBridge::ensureFontLoaded):
        (WebCore::ChromiumBridge::getFontFamilyForCharacters):
        (WebCore::ChromiumBridge::getRenderStyleForStrike):
        (WebCore::ChromiumBridge::loadFont):
        (WebCore::ChromiumBridge::databaseOpenFile):
        (WebCore::ChromiumBridge::databaseDeleteFile):
        (WebCore::ChromiumBridge::databaseGetFileAttributes):
        (WebCore::ChromiumBridge::databaseGetFileSize):
        (WebCore::ChromiumBridge::idbFactory):
        (WebCore::ChromiumBridge::idbShutdown):
        (WebCore::ChromiumBridge::createIDBKeysFromSerializedValuesAndKeyPath):
        (WebCore::ChromiumBridge::signedPublicKeyAndChallengeString):
        (WebCore::ChromiumBridge::computedDefaultLanguage):
        (WebCore::ChromiumBridge::layoutTestMode):
        (WebCore::ChromiumBridge::isSupportedImageMIMEType):
        (WebCore::ChromiumBridge::isSupportedJavaScriptMIMEType):
        (WebCore::ChromiumBridge::isSupportedNonImageMIMEType):
        (WebCore::ChromiumBridge::mimeTypeForExtension):
        (WebCore::ChromiumBridge::mimeTypeFromFile):
        (WebCore::ChromiumBridge::preferredExtensionForMIMEType):
        (WebCore::ChromiumBridge::plugins):
        (WebCore::ChromiumBridge::pluginScriptableObject):
        (WebCore::ChromiumBridge::loadPlatformImageResource):
        (WebCore::ChromiumBridge::loadPlatformAudioResource):
        (WebCore::ChromiumBridge::decodeAudioFileData):
        (WebCore::ChromiumBridge::sandboxEnabled):
        (WebCore::ChromiumBridge::setSharedTimerFiredFunction):
        (WebCore::ChromiumBridge::setSharedTimerFireTime):
        (WebCore::ChromiumBridge::stopSharedTimer):
        (WebCore::ChromiumBridge::decrementStatsCounter):
        (WebCore::ChromiumBridge::incrementStatsCounter):
        (WebCore::ChromiumBridge::histogramCustomCounts):
        (WebCore::ChromiumBridge::histogramEnumeration):
        (WebCore::ChromiumBridge::suddenTerminationChanged):
        (WebCore::ChromiumBridge::currentTime):
        (WebCore::ChromiumBridge::paintButton):
        (WebCore::ChromiumBridge::paintMenuList):
        (WebCore::ChromiumBridge::paintScrollbarArrow):
        (WebCore::ChromiumBridge::paintScrollbarThumb):
        (WebCore::ChromiumBridge::paintScrollbarTrack):
        (WebCore::ChromiumBridge::paintSpinButton):
        (WebCore::ChromiumBridge::paintTextField):
        (WebCore::ChromiumBridge::paintTrackbar):
        (WebCore::ChromiumBridge::paintProgressBar):
        (WebCore::WebThemePart):
        (WebCore::WebThemeState):
        (WebCore::GetWebThemeExtraParams):
        (WebCore::ChromiumBridge::getThemePartSize):
        (WebCore::ChromiumBridge::paintThemePart):
        (WebCore::ChromiumBridge::traceEventBegin):
        (WebCore::ChromiumBridge::traceEventEnd):
        (WebCore::ChromiumBridge::visitedLinkHash):
        (WebCore::ChromiumBridge::isLinkVisited):
        (WebCore::ChromiumBridge::notifyJSOutOfMemory):
        (WebCore::ChromiumBridge::memoryUsageMB):
        (WebCore::ChromiumBridge::actualMemoryUsageMB):
        (WebCore::ChromiumBridge::screenDepth):
        (WebCore::ChromiumBridge::screenDepthPerComponent):
        (WebCore::ChromiumBridge::screenIsMonochrome):
        (WebCore::ChromiumBridge::screenRect):
        (WebCore::ChromiumBridge::screenAvailableRect):
        (WebCore::ChromiumBridge::popupsAllowed):
        (WebCore::WorkerContextProxy::create):

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

        Unreviewed, rolling out r76203.
        http://trac.webkit.org/changeset/76203
        https://bugs.webkit.org/show_bug.cgi?id=52784

        Broke Win compile on Chromium bots (Requested by dimich on
        #webkit).

        * WebKit.gyp:
        * src/AssertMatchingEnums.cpp:
        * src/ChromiumBridge.cpp: Renamed from Source/WebKit/chromium/src/PlatformBridge.cpp.
        (WebCore::toChromeClientImpl):
        (WebCore::toWebWidgetClient):
        (WebCore::getCookieJar):
        (WebCore::ChromiumBridge::cacheMetadata):
        (WebCore::ChromiumBridge::clipboardIsFormatAvailable):
        (WebCore::ChromiumBridge::clipboardReadPlainText):
        (WebCore::ChromiumBridge::clipboardReadHTML):
        (WebCore::ChromiumBridge::clipboardWriteSelection):
        (WebCore::ChromiumBridge::clipboardWritePlainText):
        (WebCore::ChromiumBridge::clipboardWriteURL):
        (WebCore::ChromiumBridge::clipboardWriteImage):
        (WebCore::ChromiumBridge::clipboardWriteData):
        (WebCore::ChromiumBridge::clipboardReadAvailableTypes):
        (WebCore::ChromiumBridge::clipboardReadData):
        (WebCore::ChromiumBridge::clipboardReadFilenames):
        (WebCore::ChromiumBridge::setCookies):
        (WebCore::ChromiumBridge::cookies):
        (WebCore::ChromiumBridge::cookieRequestHeaderFieldValue):
        (WebCore::ChromiumBridge::rawCookies):
        (WebCore::ChromiumBridge::deleteCookie):
        (WebCore::ChromiumBridge::cookiesEnabled):
        (WebCore::ChromiumBridge::prefetchDNS):
        (WebCore::ChromiumBridge::fileExists):
        (WebCore::ChromiumBridge::deleteFile):
        (WebCore::ChromiumBridge::deleteEmptyDirectory):
        (WebCore::ChromiumBridge::getFileSize):
        (WebCore::ChromiumBridge::revealFolderInOS):
        (WebCore::ChromiumBridge::getFileModificationTime):
        (WebCore::ChromiumBridge::directoryName):
        (WebCore::ChromiumBridge::pathByAppendingComponent):
        (WebCore::ChromiumBridge::makeAllDirectories):
        (WebCore::ChromiumBridge::getAbsolutePath):
        (WebCore::ChromiumBridge::isDirectory):
        (WebCore::ChromiumBridge::filePathToURL):
        (WebCore::ChromiumBridge::openFile):
        (WebCore::ChromiumBridge::closeFile):
        (WebCore::ChromiumBridge::seekFile):
        (WebCore::ChromiumBridge::truncateFile):
        (WebCore::ChromiumBridge::readFromFile):
        (WebCore::ChromiumBridge::writeToFile):
        (WebCore::ChromiumBridge::ensureFontLoaded):
        (WebCore::ChromiumBridge::getFontFamilyForCharacters):
        (WebCore::ChromiumBridge::getRenderStyleForStrike):
        (WebCore::ChromiumBridge::loadFont):
        (WebCore::ChromiumBridge::databaseOpenFile):
        (WebCore::ChromiumBridge::databaseDeleteFile):
        (WebCore::ChromiumBridge::databaseGetFileAttributes):
        (WebCore::ChromiumBridge::databaseGetFileSize):
        (WebCore::ChromiumBridge::idbFactory):
        (WebCore::ChromiumBridge::idbShutdown):
        (WebCore::ChromiumBridge::createIDBKeysFromSerializedValuesAndKeyPath):
        (WebCore::ChromiumBridge::signedPublicKeyAndChallengeString):
        (WebCore::ChromiumBridge::computedDefaultLanguage):
        (WebCore::ChromiumBridge::layoutTestMode):
        (WebCore::ChromiumBridge::isSupportedImageMIMEType):
        (WebCore::ChromiumBridge::isSupportedJavaScriptMIMEType):
        (WebCore::ChromiumBridge::isSupportedNonImageMIMEType):
        (WebCore::ChromiumBridge::mimeTypeForExtension):
        (WebCore::ChromiumBridge::mimeTypeFromFile):
        (WebCore::ChromiumBridge::preferredExtensionForMIMEType):
        (WebCore::ChromiumBridge::plugins):
        (WebCore::ChromiumBridge::pluginScriptableObject):
        (WebCore::ChromiumBridge::loadPlatformImageResource):
        (WebCore::ChromiumBridge::loadPlatformAudioResource):
        (WebCore::ChromiumBridge::decodeAudioFileData):
        (WebCore::ChromiumBridge::sandboxEnabled):
        (WebCore::ChromiumBridge::setSharedTimerFiredFunction):
        (WebCore::ChromiumBridge::setSharedTimerFireTime):
        (WebCore::ChromiumBridge::stopSharedTimer):
        (WebCore::ChromiumBridge::decrementStatsCounter):
        (WebCore::ChromiumBridge::incrementStatsCounter):
        (WebCore::ChromiumBridge::histogramCustomCounts):
        (WebCore::ChromiumBridge::histogramEnumeration):
        (WebCore::ChromiumBridge::suddenTerminationChanged):
        (WebCore::ChromiumBridge::currentTime):
        (WebCore::ChromiumBridge::paintButton):
        (WebCore::ChromiumBridge::paintMenuList):
        (WebCore::ChromiumBridge::paintScrollbarArrow):
        (WebCore::ChromiumBridge::paintScrollbarThumb):
        (WebCore::ChromiumBridge::paintScrollbarTrack):
        (WebCore::ChromiumBridge::paintSpinButton):
        (WebCore::ChromiumBridge::paintTextField):
        (WebCore::ChromiumBridge::paintTrackbar):
        (WebCore::ChromiumBridge::paintProgressBar):
        (WebCore::WebThemePart):
        (WebCore::WebThemeState):
        (WebCore::GetWebThemeExtraParams):
        (WebCore::ChromiumBridge::getThemePartSize):
        (WebCore::ChromiumBridge::paintThemePart):
        (WebCore::ChromiumBridge::traceEventBegin):
        (WebCore::ChromiumBridge::traceEventEnd):
        (WebCore::ChromiumBridge::visitedLinkHash):
        (WebCore::ChromiumBridge::isLinkVisited):
        (WebCore::ChromiumBridge::notifyJSOutOfMemory):
        (WebCore::ChromiumBridge::memoryUsageMB):
        (WebCore::ChromiumBridge::actualMemoryUsageMB):
        (WebCore::ChromiumBridge::screenDepth):
        (WebCore::ChromiumBridge::screenDepthPerComponent):
        (WebCore::ChromiumBridge::screenIsMonochrome):
        (WebCore::ChromiumBridge::screenRect):
        (WebCore::ChromiumBridge::screenAvailableRect):
        (WebCore::ChromiumBridge::popupsAllowed):
        (WebCore::WorkerContextProxy::create):
        * src/ResourceHandle.cpp:
        (WebCore::ResourceHandle::cacheMetadata):
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::WebFrameImpl):
        (WebKit::WebFrameImpl::~WebFrameImpl):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::setIsAcceleratedCompositingActive):

2011-01-19  Adam Klein  <adamk@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Rename ChromiumBridge to PlatformBridge
        https://bugs.webkit.org/show_bug.cgi?id=52471

        * WebKit.gyp:
        * src/AssertMatchingEnums.cpp:
        * src/PlatformBridge.cpp:
        (WebCore::toChromeClientImpl):
        (WebCore::toWebWidgetClient):
        (WebCore::getCookieJar):
        (WebCore::PlatformBridge::cacheMetadata):
        (WebCore::PlatformBridge::clipboardIsFormatAvailable):
        (WebCore::PlatformBridge::clipboardReadPlainText):
        (WebCore::PlatformBridge::clipboardReadHTML):
        (WebCore::PlatformBridge::clipboardWriteSelection):
        (WebCore::PlatformBridge::clipboardWritePlainText):
        (WebCore::PlatformBridge::clipboardWriteURL):
        (WebCore::PlatformBridge::clipboardWriteImage):
        (WebCore::PlatformBridge::clipboardWriteData):
        (WebCore::PlatformBridge::clipboardReadAvailableTypes):
        (WebCore::PlatformBridge::clipboardReadData):
        (WebCore::PlatformBridge::clipboardReadFilenames):
        (WebCore::PlatformBridge::setCookies):
        (WebCore::PlatformBridge::cookies):
        (WebCore::PlatformBridge::cookieRequestHeaderFieldValue):
        (WebCore::PlatformBridge::rawCookies):
        (WebCore::PlatformBridge::deleteCookie):
        (WebCore::PlatformBridge::cookiesEnabled):
        (WebCore::PlatformBridge::prefetchDNS):
        (WebCore::PlatformBridge::fileExists):
        (WebCore::PlatformBridge::deleteFile):
        (WebCore::PlatformBridge::deleteEmptyDirectory):
        (WebCore::PlatformBridge::getFileSize):
        (WebCore::PlatformBridge::revealFolderInOS):
        (WebCore::PlatformBridge::getFileModificationTime):
        (WebCore::PlatformBridge::directoryName):
        (WebCore::PlatformBridge::pathByAppendingComponent):
        (WebCore::PlatformBridge::makeAllDirectories):
        (WebCore::PlatformBridge::getAbsolutePath):
        (WebCore::PlatformBridge::isDirectory):
        (WebCore::PlatformBridge::filePathToURL):
        (WebCore::PlatformBridge::openFile):
        (WebCore::PlatformBridge::closeFile):
        (WebCore::PlatformBridge::seekFile):
        (WebCore::PlatformBridge::truncateFile):
        (WebCore::PlatformBridge::readFromFile):
        (WebCore::PlatformBridge::writeToFile):
        (WebCore::PlatformBridge::ensureFontLoaded):
        (WebCore::PlatformBridge::getFontFamilyForCharacters):
        (WebCore::PlatformBridge::getRenderStyleForStrike):
        (WebCore::PlatformBridge::loadFont):
        (WebCore::PlatformBridge::databaseOpenFile):
        (WebCore::PlatformBridge::databaseDeleteFile):
        (WebCore::PlatformBridge::databaseGetFileAttributes):
        (WebCore::PlatformBridge::databaseGetFileSize):
        (WebCore::PlatformBridge::idbFactory):
        (WebCore::PlatformBridge::idbShutdown):
        (WebCore::PlatformBridge::createIDBKeysFromSerializedValuesAndKeyPath):
        (WebCore::PlatformBridge::signedPublicKeyAndChallengeString):
        (WebCore::PlatformBridge::computedDefaultLanguage):
        (WebCore::PlatformBridge::layoutTestMode):
        (WebCore::PlatformBridge::isSupportedImageMIMEType):
        (WebCore::PlatformBridge::isSupportedJavaScriptMIMEType):
        (WebCore::PlatformBridge::isSupportedNonImageMIMEType):
        (WebCore::PlatformBridge::mimeTypeForExtension):
        (WebCore::PlatformBridge::mimeTypeFromFile):
        (WebCore::PlatformBridge::preferredExtensionForMIMEType):
        (WebCore::PlatformBridge::plugins):
        (WebCore::PlatformBridge::pluginScriptableObject):
        (WebCore::PlatformBridge::loadPlatformImageResource):
        (WebCore::PlatformBridge::loadPlatformAudioResource):
        (WebCore::PlatformBridge::decodeAudioFileData):
        (WebCore::PlatformBridge::sandboxEnabled):
        (WebCore::PlatformBridge::setSharedTimerFiredFunction):
        (WebCore::PlatformBridge::setSharedTimerFireTime):
        (WebCore::PlatformBridge::stopSharedTimer):
        (WebCore::PlatformBridge::decrementStatsCounter):
        (WebCore::PlatformBridge::incrementStatsCounter):
        (WebCore::PlatformBridge::histogramCustomCounts):
        (WebCore::PlatformBridge::histogramEnumeration):
        (WebCore::PlatformBridge::suddenTerminationChanged):
        (WebCore::PlatformBridge::currentTime):
        (WebCore::PlatformBridge::paintButton):
        (WebCore::PlatformBridge::paintMenuList):
        (WebCore::PlatformBridge::paintScrollbarArrow):
        (WebCore::PlatformBridge::paintScrollbarThumb):
        (WebCore::PlatformBridge::paintScrollbarTrack):
        (WebCore::PlatformBridge::paintSpinButton):
        (WebCore::PlatformBridge::paintTextField):
        (WebCore::PlatformBridge::paintTrackbar):
        (WebCore::PlatformBridge::paintProgressBar):
        (WebCore::WebThemePart):
        (WebCore::WebThemeState):
        (WebCore::GetWebThemeExtraParams):
        (WebCore::PlatformBridge::getThemePartSize):
        (WebCore::PlatformBridge::paintThemePart):
        (WebCore::PlatformBridge::traceEventBegin):
        (WebCore::PlatformBridge::traceEventEnd):
        (WebCore::PlatformBridge::visitedLinkHash):
        (WebCore::PlatformBridge::isLinkVisited):
        (WebCore::PlatformBridge::notifyJSOutOfMemory):
        (WebCore::PlatformBridge::memoryUsageMB):
        (WebCore::PlatformBridge::actualMemoryUsageMB):
        (WebCore::PlatformBridge::screenDepth):
        (WebCore::PlatformBridge::screenDepthPerComponent):
        (WebCore::PlatformBridge::screenIsMonochrome):
        (WebCore::PlatformBridge::screenRect):
        (WebCore::PlatformBridge::screenAvailableRect):
        (WebCore::PlatformBridge::popupsAllowed):
        (WebCore::WorkerContextProxy::create):
        * src/ResourceHandle.cpp:
        (WebCore::ResourceHandle::cacheMetadata):
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::WebFrameImpl):
        (WebKit::WebFrameImpl::~WebFrameImpl):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::setIsAcceleratedCompositingActive):

2011-01-19  James Robinson  <jamesr@chromium.org>

        Unreviewed, rolling out r76194.
        http://trac.webkit.org/changeset/76194
        https://bugs.webkit.org/show_bug.cgi?id=51218

        Caused mysterious compile failure on the chromium win
        build.webkit.org bots

        * features.gypi:
        * public/WebWidget.h:
        * public/WebWidgetClient.h:
        * src/ChromeClientImpl.cpp:
        * src/ChromeClientImpl.h:
        * src/WebPopupMenuImpl.cpp:
        * src/WebPopupMenuImpl.h:
        * src/WebViewImpl.cpp:
        * src/WebViewImpl.h:

2011-01-19  James Robinson  <jamesr@chromium.org>

        Reviewed by Darin Fisher.

        Implement mozilla's requestAnimationFrame API
        https://bugs.webkit.org/show_bug.cgi?id=51218

        Chromium WebKit API support for window.webkitRequestAnimationFrame()

        * features.gypi:
        * public/WebWidget.h:
        * public/WebWidgetClient.h:
        (WebKit::WebWidgetClient::scheduleAnimation):
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::scheduleAnimation):
        * src/ChromeClientImpl.h:
        * src/WebPopupMenuImpl.cpp:
        (WebKit::WebPopupMenuImpl::animate):
        (WebKit::WebPopupMenuImpl::scheduleAnimation):
        * src/WebPopupMenuImpl.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::animate):
        * src/WebViewImpl.h:

2011-01-19  Tony Chang  <tony@chromium.org>

        Unreviewed, roll chromium deps to pick up fixes for the linux build.

        * DEPS:

2011-01-19  Satish Sampath  <satish@chromium.org>

        Reviewed by Jeremy Orlow.

        Send origin/url as part of speech input requests to the embedder.
        https://bugs.webkit.org/show_bug.cgi?id=52718

        * public/WebSpeechInputController.h:
        (WebKit::WebSpeechInputController::startRecognition): Updated prototype.
        * src/SpeechInputClientImpl.cpp:
        (WebKit::SpeechInputClientImpl::startRecognition): Pass up additional origin parameter.
        * src/SpeechInputClientImpl.h:
        * src/WebSpeechInputControllerMockImpl.cpp: Updated code to pass additional parameter.
        (WebKit::WebSpeechInputControllerMockImpl::startRecognition):
        * src/WebSpeechInputControllerMockImpl.h: Added new variant of startRecognition method.

2011-01-19  Pavel Feldman  <pfeldman@chromium.org>

        Not reviewed: updating Chromium devtools sanity tests for downstream use.

        * src/js/Tests.js:
        (.TestSuite.prototype._checkExecutionLine):

2011-01-18  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: make InjectedScriptAccess API a part of Web Inspector protocol.
        https://bugs.webkit.org/show_bug.cgi?id=52652

        Calls served by the InjectedScript should be first class protocol
        citizens, not dispatched via single protocol message.

        * src/js/Tests.js:

2011-01-18  Victoria Kirst  <vrk@chromium.org>

        Reviewed by Kenneth Russell.

        [chromium] Adding support for YV16 video frame formats.
        https://bugs.webkit.org/show_bug.cgi?id=52345

        * src/VideoFrameChromiumImpl.cpp:
        (WebKit::VideoFrameChromiumImpl::requiredTextureSize):

2011-01-18  Adam Klein  <adamk@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Replace ChromiumBridge::widgetSetCursor with ChromeClient::setCursor
        https://bugs.webkit.org/show_bug.cgi?id=42236

        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::setCursor):
        * src/ChromeClientImpl.h:
        * src/ChromiumBridge.cpp:

2011-01-17  Nico Weber  <thakis@chromium.org>

        Unreviewed.

        Roll chromium DEPS forward to pick up the skia roll to skia r692.
        https://bugs.webkit.org/show_bug.cgi?id=52600

        * DEPS:

2011-01-17  Naoki Takano  <takano.naoki@gmail.com>

        Reviewed by Kent Tamura.

        [Chromium] Fix popup menu re-positioning when the menu is opened upward, above the corresponding form field.
        https://bugs.webkit.org/show_bug.cgi?id=51382
        http://crbug.com/60427

        Calculate correct location of popup window whenever the items in the window change.

        No new tests, because this fix is for Chromium project and hard to test only in WebKit project

       * WebKit/chromium/src/WebViewImpl.cpp:
       (WebKit::WebViewImpl::refreshAutoFillPopup): Change the logic in refreshAutoFilPopup() to check both the location and the size of popup window.

2011-01-17  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Yury Semikhatsky.

        Chromium: updated DevTools tests.

        * src/js/Tests.js:
        (.TestSuite.prototype._waitForScriptPause):
        (.TestSuite.prototype._waitUntilScriptsAreParsed.waitForAllScripts):
        (.TestSuite.prototype._waitUntilScriptsAreParsed):

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

        Update path to reflect new WebKit directory location.

        * tests/WebFrameTest.cpp:
        (WebKit::WebFrameTest::registerMockedURLLoad):

2011-01-16  Kent Tamura  <tkent@chromium.org>

        Unreviewed, Chromium-linux build fix.

        * gyp_webkit: Fix a relative path to the top directory.

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

        Roll Chromium DEPS to pick up the changes reflecting the new location
        of WebKit.

        * DEPS:

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

        Rubber-stamped by Eric Seidel.

        Move WebKit into Source
        https://bugs.webkit.org/show_bug.cgi?id=52530

        * WebKit.grd:
        * WebKit.gyp:

2011-01-15  Jochen Eisinger  <jochen@chromium.org>

        Reviewed by David Levin.

        [chromium] remove obsolete createView method
        https://bugs.webkit.org/show_bug.cgi?id=52437

        * public/WebViewClient.h:
        (WebKit::WebViewClient::createView):

2011-01-14  Xiyuan Xia  <xiyuan@chromium.org>

        Reviewed by Darin Fisher.

        Prepare Linux WebThemeEngine interface to support new theme parts.
        https://bugs.webkit.org/show_bug.cgi?id=52413

        * public/linux/WebThemeEngine.h:

2011-01-14  Yuzo Fujishima  <yuzo@google.com>

        Reviewed by Antti Koivisto.

        Rename cache() to memoryCache()
        https://bugs.webkit.org/show_bug.cgi?id=52433

        * src/WebCache.cpp:
        (WebKit::WebCache::setCapacities):
        (WebKit::WebCache::clear):
        (WebKit::WebCache::getUsageStats):
        (WebKit::WebCache::getResourceTypeStats):

2011-01-14  Jochen Eisinger  <jochen@chromium.org>

        Unreviewed, roll chromium deps to r71432.

        * DEPS:

2011-01-14  Adam Klein  <adamk@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Replace BackForwardListClient with BackForwardControllerClient/BackForwardList
        https://bugs.webkit.org/show_bug.cgi?id=42237

        Replace Chromium-specific BackForwardListClient in WebCore with a Chromium impl
        of the BackForwardList interface.

        * WebKit.gyp:
        * src/BackForwardListChromium.cpp: Copied from WebKit/chromium/src/BackForwardListClientImpl.cpp.
        (WebKit::BackForwardListChromium::create):
        (WebKit::BackForwardListChromium::BackForwardListChromium):
        (WebKit::BackForwardListChromium::~BackForwardListChromium):
        (WebKit::BackForwardListChromium::addItem):
        (WebKit::BackForwardListChromium::goToItem):
        (WebKit::BackForwardListChromium::itemAtIndex):
        (WebKit::BackForwardListChromium::backListCount):
        (WebKit::BackForwardListChromium::forwardListCount):
        (WebKit::BackForwardListChromium::isActive):
        (WebKit::BackForwardListChromium::close):
        * src/BackForwardListChromium.h: Copied from WebKit/chromium/src/BackForwardListClientImpl.h.
        * src/BackForwardListClientImpl.cpp: Removed.
        * src/BackForwardListClientImpl.h: Removed.
        * src/FrameLoaderClientImpl.cpp:
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::loadHistoryItem):
        (WebKit::WebFrameImpl::currentHistoryItem):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::WebViewImpl):
        * src/WebViewImpl.h:

2011-01-14  Kent Tamura  <tkent@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] WebKit API: Add a function for form interactive validation setting
        https://bugs.webkit.org/show_bug.cgi?id=52430

        * public/WebSettings.h: Add a pure setInteractiveFormValidationEnabled().
        * src/WebSettingsImpl.cpp:
        (WebKit::WebSettingsImpl::setInteractiveFormValidationEnabled): Implemented.
        * src/WebSettingsImpl.h: Add a declaration.

2011-01-14  Vincent Scheib  <scheib@chromium.org>

        Reviewed by David Levin.

        Add support to DumpRenderTree to use the GPU rather than software renderer
        https://bugs.webkit.org/show_bug.cgi?id=52333

        * DEPS: Moved forward to take required support from webkit_support.h
        * WebKit.gyp: DumpRenderTree depends on Angle on windows

2011-01-14  Finnur Thorarinsson  <finnur.webkit@gmail.com>

        Reviewed by Ojan Vafai.

        Address some user-select-none issues better in our Find in page scoping
        function.

        The scoping function is in part based on Editor::countMatchesForText
        (formerly Frame::markAllMatchesForText), but was rewritten with
        asychronous search and interruptability in mind. At the time the
        function was written, countMatchesForText didn't work well with
        user-select-none style but that has now changed. While
        investigating http://crbug.com/68494 I noticed WebKit had fixed this
        very problem in the countMatchesForText and I believe we should make
        the same changes in our platform code. Therefore, this changelist
        adopts the same approach by integrating:
        https://bugs.webkit.org/show_bug.cgi?id=33508
        (r53142: handling user-select-none better) and
        https://bugs.webkit.org/show_bug.cgi?id=51623
        (r74886: handling match within textfield better).
        For more details see those changelists.

        This changelist, however, is tracked here:
        https://bugs.webkit.org/show_bug.cgi?id=52367

        The original changelists did not come with layout tests, but I'm adding
        a test on the Chromium side for this.

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

2011-01-14  Pavel Feldman  <pfeldman@chromium.org>

        Not reviewed: build fix.

        * src/WebDevToolsAgentImpl.h:

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

        Reviewed by Mihai Parparita.

        [chromium] Fix minor type in plugin printing
        https://bugs.webkit.org/show_bug.cgi?id=52410

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::printBegin):

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

        Reviewed by Eric Seidel.

        Rename RGBA32Buffer to ImageFrame
        https://bugs.webkit.org/show_bug.cgi?id=52363

        Update references to the new name.

        * src/WebImageDecoder.cpp:
        (WebKit::WebImageDecoder::isFrameCompleteAtIndex):
        (WebKit::WebImageDecoder::getFrameAtIndex):

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

        Reviewed by Tony Chang.

        [chromium]: Only swallow ctrl+c for windowless plugins if we know the plugin has a selection
        https://bugs.webkit.org/show_bug.cgi?id=52393

        * src/WebPluginContainerImpl.cpp:
        (WebKit::WebPluginContainerImpl::copy):
        (WebKit::WebPluginContainerImpl::handleKeyboardEvent):

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

        Reviewed by Darin Fisher.

        [chromium] Add support to allow printing just a plugin in a frame
        https://bugs.webkit.org/show_bug.cgi?id=52134

        * public/WebContextMenuData.h:
        * public/WebFrame.h:
        * src/ContextMenuClientImpl.cpp:
        (WebKit::ContextMenuClientImpl::getCustomMenuFromDefaultItems):
        * src/WebFrameImpl.cpp:
        (WebKit::ChromePluginPrintContext::ChromePluginPrintContext):
        (WebKit::ChromePluginPrintContext::end):
        (WebKit::ChromePluginPrintContext::computePageRects):
        (WebKit::ChromePluginPrintContext::spoolPage):
        (WebKit::WebFrameImpl::printBegin):

2011-01-13  Tony Chang  <tony@chromium.org>

        Reviewed by Kent Tamura.

        [chromium] fix plugins/plugin-javascript-access.html on Linux and Mac
        https://bugs.webkit.org/show_bug.cgi?id=52332

        * WebKit.gyp: Remove WebKitTestNetscapePlugIn

2011-01-12  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: embed injected script into the backend.
        https://bugs.webkit.org/show_bug.cgi?id=52312

        * WebKit.grd:

2011-01-12  Mihai Parparita  <mihaip@chromium.org>

        Reviewed by David Levin.

        [Chromium] Remove PartScrollbarHoriztonalTrack
        https://bugs.webkit.org/show_bug.cgi?id=52329
        
        Remove PartScrollbarHoriztonalTrack now that usages of it were removed
        with http://crrev.com/71249.

        * DEPS:
        * public/linux/WebThemeEngine.h:

2010-12-29  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        inspector/timeline-network-resource.html fails when run twice
        https://bugs.webkit.org/show_bug.cgi?id=37394

        Send didReceiveResponse notification to the timeline agent from ResourceLoadNotifier
        instead of ResourceLoader::didReceiveResponse to cover the cases when resources
        are loaded from memory cache.

        Network notifications are now sent to InspectorInstrumentation which dispatches
        them to interested agents and InspectorController.

        * src/SharedWorkerRepository.cpp:
        (WebCore::SharedWorkerScriptLoader::notifyFinished):
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::mainFrame):
        (WebKit::WebDevToolsAgentImpl::identifierForInitialRequest):
        (WebKit::WebDevToolsAgentImpl::willSendRequest):
        (WebKit::WebDevToolsAgentImpl::didReceiveData):
        (WebKit::WebDevToolsAgentImpl::didReceiveResponse):
        (WebKit::WebDevToolsAgentImpl::didFinishLoading):
        (WebKit::WebDevToolsAgentImpl::didFailLoading):
        * src/WebDevToolsAgentImpl.h:

2011-01-11  Tony Chang  <tony@chromium.org>

        Reviewed by Eric Seidel.

        [chromium] copy test netscape plugin into TestNetscapePlugin
        https://bugs.webkit.org/show_bug.cgi?id=52232

        * WebKit.gyp: Make a copy of the TestNetscapePlugIn in
            TestNetscapePlugIn and WebKitTestNetscapePlugIn

2011-01-11  Kenneth Russell  <kbr@google.com>

        Reviewed by James Robinson.

        [chromium] Move WebGraphicsContext3DDefaultImpl to Chromium repository
        https://bugs.webkit.org/show_bug.cgi?id=52235

        Deleted WebGraphicsContext3DDefaultImpl, which has been moved to
        the Chromium repository under WebGraphicsContext3DInProcessImpl.
        Removed WebGraphicsContext3D::createDefault(). Rolled forward
        Chromium version to pick up needed changes.

        Tested with build-webkit --chromium --debug and a run of the WebGL
        layout tests in DRT.

        * DEPS:
        * WebKit.gyp:
        * public/WebGraphicsContext3D.h:
        * src/GraphicsContext3DChromium.cpp:
        * src/WebGraphicsContext3D.cpp: Removed.
        * src/WebGraphicsContext3DDefaultImpl.cpp: Removed.
        * src/WebGraphicsContext3DDefaultImpl.h: Removed.

2011-01-11  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Yury Semikhatsky.

        Chromium DevTools: get rid of APU-related code in WebKit/chromium.
        https://bugs.webkit.org/show_bug.cgi?id=52152

        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::WebDevToolsAgentImpl):
        (WebKit::WebDevToolsAgentImpl::detach):
        (WebKit::WebDevToolsAgentImpl::frontendLoaded):
        (WebKit::WebDevToolsAgentImpl::setRuntimeProperty):
        (WebKit::WebDevToolsAgentImpl::sendMessageToFrontend):
        * src/WebDevToolsAgentImpl.h:

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

        Reviewed by Darin Adler.

        Introduce the notion of a "display-isolated" URL scheme for use by
        Chrome-internal URLs
        https://bugs.webkit.org/show_bug.cgi?id=50182

        This patch adds a Chromium API for registering schemes as
        display-isolated.  In a subsequent patch, I'll change the "chrome"
        scheme in Chrome to be display isolated instead of local.  That will
        prevent file URLs from linking to chrome URLs.

        * public/WebSecurityPolicy.h:
        * src/WebSecurityPolicy.cpp:
        (WebKit::WebSecurityPolicy::registerURLSchemeAsDisplayIsolated):

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

        Reviewed by James Robinson.

        [chromium] Call WebAutoFillClient instead of WebViewClient for autofill related callbacks
        https://bugs.webkit.org/show_bug.cgi?id=52169

        * public/WebView.h:
        * public/WebViewClient.h:
        (WebKit::WebViewClient::didUpdateInspectorSetting):
        * src/AutoFillPopupMenuClient.cpp:
        (WebKit::AutoFillPopupMenuClient::valueChanged):
        (WebKit::AutoFillPopupMenuClient::selectionChanged):
        (WebKit::AutoFillPopupMenuClient::selectionCleared):
        (WebKit::AutoFillPopupMenuClient::popupDidHide):
        * src/EditorClientImpl.cpp:
        (WebKit::EditorClientImpl::textFieldDidBeginEditing):
        (WebKit::EditorClientImpl::textFieldDidEndEditing):
        (WebKit::EditorClientImpl::textDidChangeInTextField):
        (WebKit::EditorClientImpl::doAutofill):
        (WebKit::EditorClientImpl::onAutocompleteSuggestionAccepted):
        (WebKit::EditorClientImpl::doTextFieldCommandFromEvent):
        * src/WebViewImpl.cpp:
        (WebKit::WebView::create):
        (WebKit::WebViewImpl::WebViewImpl):
        (WebKit::WebViewImpl::autocompleteHandleKeyEvent):
        * src/WebViewImpl.h:
        (WebKit::WebViewImpl::autoFillClient):
        * src/WebWorkerBase.cpp:
        (WebKit::WebWorkerBase::initializeLoader):

2011-01-10  John Knottenbelt  <jknotten@chromium.org>

        Reviewed by Jeremy Orlow.

        [Chromium] Remove non-client-based Geolocation code
        https://bugs.webkit.org/show_bug.cgi?id=50921

        * WebKit.gyp:
        * public/WebGeolocationService.h: Removed.
        * public/WebGeolocationServiceBridge.h: Removed.
        * public/WebGeolocationServiceMock.h: Removed.
        * src/AssertMatchingEnums.cpp:
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::requestGeolocationPermissionForFrame):
        (WebKit::ChromeClientImpl::cancelGeolocationPermissionRequestForFrame):
        * src/ChromiumBridge.cpp:
        * src/WebGeolocationServiceBridgeImpl.cpp: Removed.
        * src/WebGeolocationServiceBridgeImpl.h: Removed.
        * src/WebGeolocationServiceMock.cpp: Removed.
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::WebViewImpl):
        * src/WebViewImpl.h:

2011-01-09  Johnny Ding  <jnd@chromium.org>

        Unreviewed, fix Chromium windows compilation error according to James Robinson's report.

        https://bugs.webkit.org/show_bug.cgi?id=41441
        Fix Chromium window compilation error.

        * public/WebViewClient.h:
        (WebKit::WebViewClient::createView):

2011-01-09  Xianzhu Wang  <phnixwxz@gmail.com>

        Reviewed by Darin Fisher.

        https://bugs.webkit.org/show_bug.cgi?id=41441
        createWindow method should only do window-creating without URL navigation.
        Pass URL request to createView.

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

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

        Update Chromium DEPS to pickup new GYP files.

        * DEPS:

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

        Rubber-stamped by Eric Seidel.

        Move WebCore to Source
        https://bugs.webkit.org/show_bug.cgi?id=52050

        Update references to WebCore.

        * WebKit.grd:
        * WebKit.gyp:

2011-01-07  Mihai Parparita  <mihaip@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Scrollbar code cleanup
        https://bugs.webkit.org/show_bug.cgi?id=52073

        Scrollbar code cleanup:
        - Fix typo in Linux scrollbar enum name

        * public/linux/WebThemeEngine.h:
        * src/ChromiumBridge.cpp:
        (WebCore::WebThemePart):
        (WebCore::GetWebThemeExtraParams):

2011-01-07  James Robinson  <jamesr@chromium.org>

        Revert "Implement mozilla's animationTime property"
        https://bugs.webkit.org/show_bug.cgi?id=51952

        This approach isn't quite right.

        * public/WebWidget.h:
        * src/WebPopupMenuImpl.cpp:
        * src/WebPopupMenuImpl.h:
        * src/WebViewImpl.cpp:
        * src/WebViewImpl.h:

2011-01-05  Zhenyao Mo  <zmo@google.com>

        Reviewed by Kenneth Russell.

        Define GC3D types to match GL types and use them in GraphicsContext3D
        https://bugs.webkit.org/show_bug.cgi?id=45557

        * src/GraphicsContext3DChromium.cpp:
        (WebCore::GraphicsContext3DInternal::bindAttribLocation):
        (WebCore::GraphicsContext3DInternal::bufferData):
        (WebCore::GraphicsContext3DInternal::bufferSubData):
        (WebCore::GraphicsContext3DInternal::getActiveAttrib):
        (WebCore::GraphicsContext3DInternal::getActiveUniform):
        (WebCore::GraphicsContext3DInternal::getAttribLocation):
        (WebCore::GraphicsContext3DInternal::getString):
        (WebCore::GraphicsContext3DInternal::getUniformLocation):
        (WebCore::GraphicsContext3DInternal::texImage2D):
        (WebCore::GraphicsContext3DInternal::texSubImage2D):
        (WebCore::GraphicsContext3DInternal::uniform1fv):
        (WebCore::GraphicsContext3DInternal::uniform1iv):
        (WebCore::GraphicsContext3DInternal::uniform2fv):
        (WebCore::GraphicsContext3DInternal::uniform2iv):
        (WebCore::GraphicsContext3DInternal::uniform3fv):
        (WebCore::GraphicsContext3DInternal::uniform3iv):
        (WebCore::GraphicsContext3DInternal::uniform4fv):
        (WebCore::GraphicsContext3DInternal::uniform4iv):
        (WebCore::GraphicsContext3DInternal::uniformMatrix2fv):
        (WebCore::GraphicsContext3DInternal::uniformMatrix3fv):
        (WebCore::GraphicsContext3DInternal::uniformMatrix4fv):
        * src/GraphicsContext3DInternal.h:

2011-01-06  James Simonsen  <simonjam@chromium.org>

        Reviewed by Darin Fisher.

        [Web Timing] Remove vendor prefix
        https://bugs.webkit.org/show_bug.cgi?id=48922

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::performance): Rename to performance.

2011-01-06  James Robinson  <jamesr@chromium.org>

        Reviewed by Simon Fraser.

        Implement mozilla's animationTime property
        https://bugs.webkit.org/show_bug.cgi?id=51952

        WebKit API support for webkitAnimationTime.

        * public/WebWidget.h:
        * src/WebPopupMenuImpl.cpp:
        (WebKit::WebPopupMenuImpl::clearCurrentAnimationTime):
        * src/WebPopupMenuImpl.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::clearCurrentAnimationTime):
        * src/WebViewImpl.h:

2010-12-29  John Abd-El-Malek  <jam@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Add a WebAutoFillClient interface that moves some functions from WebViewClient
        https://bugs.webkit.org/show_bug.cgi?id=51710

        * WebKit.gyp:
        * public/WebAutoFillClient.h: Added.
        (WebKit::WebAutoFillClient::didAcceptAutoFillSuggestion):
        (WebKit::WebAutoFillClient::didSelectAutoFillSuggestion):
        (WebKit::WebAutoFillClient::didClearAutoFillSelection):
        (WebKit::WebAutoFillClient::removeAutocompleteSugestion):
        (WebKit::WebAutoFillClient::didAcceptAutocompleteSuggestion):
        (WebKit::WebAutoFillClient::textFieldDidBeginEditing):
        (WebKit::WebAutoFillClient::textFieldDidEndEditing):
        (WebKit::WebAutoFillClient::textFieldDidChange):
        (WebKit::WebAutoFillClient::textFieldDidReceiveKeyDown):
        (WebKit::WebAutoFillClient::~WebAutoFillClient):

2011-01-05  Chris Rogers  <crogers@google.com>

        Reviewed by Darin Fisher.

        Add WebKitClient::createAudioDevice() for Chromium port of web audio API
        https://bugs.webkit.org/show_bug.cgi?id=51424

        * WebKit.gyp:
        * public/WebAudioDevice.h: Added.
        (WebKit::WebAudioDevice::RenderCallback::~RenderCallback):
        (WebKit::WebAudioDevice::~WebAudioDevice):
        * public/WebKitClient.h:
        (WebKit::WebKitClient::createAudioDevice):
        * src/AudioDestinationChromium.cpp: Added.
        (WebCore::AudioDestination::create):
        (WebCore::AudioDestinationChromium::AudioDestinationChromium):
        (WebCore::AudioDestinationChromium::~AudioDestinationChromium):
        (WebCore::AudioDestinationChromium::start):
        (WebCore::AudioDestinationChromium::stop):
        (WebCore::AudioDestination::hardwareSampleRate):
        (WebCore::AudioDestinationChromium::render):
        * src/AudioDestinationChromium.h: Added.
        (WebCore::AudioDestinationChromium::isPlaying):
        (WebCore::AudioDestinationChromium::sampleRate):

2011-01-05  David Levin  <levin@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] WEBKIT_API and styling fixes for the chromium api.
        https://bugs.webkit.org/show_bug.cgi?id=51863

        Removed some incorrect uses of WEBKIT_API.
        Fixed some abbreviations by making them whole words.

        * public/WebAnimationController.h: Removed WEBKIT_API from virtual functions.
        * public/WebFormElement.h: Removed WEBKIT_API from inline functions
        and fixed some abbreviations.
        (WebKit::WebFormElement::WebFormElement):
        (WebKit::WebFormElement::operator=):
        (WebKit::WebFormElement::assign):
        * public/WebIDBDatabaseError.h: Ditto.
        (WebKit::WebIDBDatabaseError::WebIDBDatabaseError):
        (WebKit::WebIDBDatabaseError::operator=):
        * public/WebInputElement.h: Ditto.
        (WebKit::WebInputElement::WebInputElement):
        (WebKit::WebInputElement::operator=):
        (WebKit::WebInputElement::assign):
        * public/WebLabelElement.h: Ditto.
        (WebKit::WebLabelElement::WebLabelElement):
        (WebKit::WebLabelElement::operator=):
        (WebKit::WebLabelElement::assign):
        * public/WebOptionElement.h: Ditto.
        (WebKit::WebOptionElement::WebOptionElement):
        (WebKit::WebOptionElement::operator=):
        (WebKit::WebOptionElement::assign):
        * public/WebSelectElement.h: Ditto (and minor spacing cleanup).
        (WebKit::WebSelectElement::WebSelectElement):
        (WebKit::WebSelectElement::operator=):
        (WebKit::WebSelectElement::assign):

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

        Reviewed by David Levin.

        [Chromium] WebIDBKey clean-up
        https://bugs.webkit.org/show_bug.cgi?id=51925

        Remove constructors that are no longer used since the
        Chromium side has been updated.

        * public/WebIDBKey.h:

2011-01-04  Darin Fisher  <darin@chromium.org>

        Reviewed by David Levin.

        Update README file with a description of the WEBKIT_API macro and
        guidelines for its usage.  Also document the various WEBKIT_USING_*
        macros.

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

        * README:

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

        Reviewed by Tony Chang.

        [chromium] depend on harfbuzz explicitly
        https://bugs.webkit.org/show_bug.cgi?id=51895

        Update Chromium DEPS to pick up newer Chromium version
        that simplifies expressing the Harfbuzz dependency.

        * DEPS:

2011-01-04  Zhe Su  <suzhe@chromium.org>

        Reviewed by Kenneth Russell.

        Changes:
        1. Add WebKit::WebWidget::confirmComposition(const WebString& text)
           This new method corresponds to Editor::confirmComposition(text) and
           Editor::insertText(text). It'll be used by both DumpRenderTree's
           TextInputController and chromium browser.
        2. Fix WebFrameImpl::insertText
           It should call Editor::confirmComposition(text) rather than
           Editor::insertText(text) if there is an ongoing composition.
           It matches the behavior of WebKit Mac port.
        3. Fix WebFrameImpl::setMarkedText
           Editor::confirmComposition(text) shouldn't be called in this
           method, which incorrectly inserts the text.

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

        * public/WebWidget.h:
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::insertText):
        (WebKit::WebFrameImpl::setMarkedText):
        * src/WebPopupMenuImpl.cpp:
        (WebKit::WebPopupMenuImpl::confirmComposition):
        * src/WebPopupMenuImpl.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::confirmComposition):
        * src/WebViewImpl.h:
        * tests/PopupMenuTest.cpp:
        (WebKit::TestWebWidget::confirmComposition):

2011-01-03  Daniel Bates  <dbates@rim.com>

        Attempt to fix the Chromium Linux Release build after changeset 74895 <http://trac.webkit.org/changeset/74895>.

        The portion of the patch in <https://bugs.webkit.org/show_bug.cgi?id=51791> that modified the
        file src/WebSearchableFormData.cpp was not landed (why?). Although the change log entry
        associated with this change was landed.

        * src/WebSearchableFormData.cpp:
        (HTMLNames::IsInDefaultState):

2011-01-02  Dirk Schulze  <krit@webkit.org>

        Reviewed by Simon Fraser.

        Clarify ImageBuffer and ImageData relationship
        https://bugs.webkit.org/show_bug.cgi?id=51297

        Use ByteArray instead of ImageData.

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

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

        Reviewed by Eric Seidel.

        Move JavaScriptCore to Source
        https://bugs.webkit.org/show_bug.cgi?id=51604

        * WebKit.gyp:
          - Point to JavaScriptCore in its new location.

2010-12-30  Mihai Parparita  <mihaip@chromium.org>

        Reviewed by Kent Tamura.

        [Chromium] Add WebThemeEngineDRTMac so that Chromium DRT scrollbar rendering can match the Mac port's
        https://bugs.webkit.org/show_bug.cgi?id=51728
        
        Roll DEPS to pick up WebThemeEngine changes.

        * DEPS:

2010-12-29  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r74735.
        http://trac.webkit.org/changeset/74735
        https://bugs.webkit.org/show_bug.cgi?id=51715

        assert failures on fast/forms/input-maxlength-ime-
        completed.html (Requested by mihaip on #webkit).

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::setMarkedText):

2010-12-29  Zhe Su  <suzhe@chromium.org>

        Reviewed by Eric Seidel.

        Fix editing/input/ime-composition-clearpreedit.html test in chromium
        by removing the line "editor->confirmComposition(text);" from
        WebFrameImpl::setMarkedText() method, because that line will insert the
        text into the focused node, which is apparently wrong.

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

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::setMarkedText):

2010-12-23  Zhenyao Mo  <zmo@google.com>

        Reviewed by Kenneth Russell.

        Initialize to 0 for undefined values in CopyTexImage2D
        https://bugs.webkit.org/show_bug.cgi?id=51421

        * src/GraphicsContext3DChromium.cpp: Implement getInternalFramebufferSize().
        (WebCore::GraphicsContext3DInternal::getInternalFramebufferSize):
        * src/GraphicsContext3DInternal.h:

2010-12-23  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r74561.
        http://trac.webkit.org/changeset/74561
        https://bugs.webkit.org/show_bug.cgi?id=51565

        "Broke Chromium UI tests on Vista" (Requested by kbr_google on
        #webkit).

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

2010-12-23  Mihai Parparita  <mihaip@chromium.org>

        Reviewed by Kent Tamura.

        [Chromium] Add WebThemeEngine for Mac to allow scrollbar rendering to be overridden for the DRT
        https://bugs.webkit.org/show_bug.cgi?id=51507
        
        Adds WebThemeEngine for the Mac (it already has parallel definitions for
        Windows and Linux) so that scrollbar thumb rendering can be overridden
        for the DRT (to be consistent with the NSScroller-based rendering
        used by the Mac port).        

        * public/mac/WebThemeEngine.h: Added.
        (WebKit::WebThemeEngine::paintScrollbarThumb):
        * src/AssertMatchingEnums.cpp:
        * src/ChromiumBridge.cpp:
        (WebCore::ChromiumBridge::paintScrollbarThumb):

2010-12-23  Sam Weinig  <sam@webkit.org>

        Fix build.

        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::didSaveToPageCache):
        (WebKit::FrameLoaderClientImpl::didRestoreFromPageCache):

2010-12-22  Sam Weinig  <sam@webkit.org>

        Reviewed by Darin Adler.

        WebKit2 needs to mirror the frame tree in the UIProcess
        https://bugs.webkit.org/show_bug.cgi?id=51546

        - Add client functions to notify that a frame has been added or
          removed from the page cache.

        * src/FrameLoaderClientImpl.cpp:
        (WebKit::WebFrameLoaderClientImpl::didSaveToPageCache):
        (WebKit::WebFrameLoaderClientImpl::didRestoreFromPageCache):
        * src/FrameLoaderClientImpl.h:

2010-12-20  Adrienne Walker  <enne@google.com>

        Reviewed by Kenneth Russell.

        [chromium] Tile root layer of the compositor.
        https://bugs.webkit.org/show_bug.cgi?id=49947

        Refactor root layer logic out of WebViewImpl and into
        LayerTilerChromium.  The painting is now done through an interface
        rather than directly in WebViewImpl.

        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::scrollRootLayerRect):
        (WebKit::WebViewImpl::invalidateRootLayerRect):
        (WebKit::WebViewImpl::setIsAcceleratedCompositingActive):
        (WebKit::WebViewImplTilePaintInterface::WebViewImplTilePaintInterface):
        (WebKit::WebViewImplTilePaintInterface::paint):
        (WebKit::WebViewImplScrollbarPaintInterface::WebViewImplScrollbarPaintInterface):
        (WebKit::WebViewImplScrollbarPaintInterface::paint):
        (WebKit::WebViewImpl::doComposite):
        * src/WebViewImpl.h:

2010-12-22  Ryosuke Niwa  <rniwa@webkit.org>

        Reviewed by Eric Seidel.

        Editor.h doesn't need to include SelectionController.h
        https://bugs.webkit.org/show_bug.cgi?id=51441

        Renamed SelectionController::EDirection to SelectionDirection.

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::executeCommand):

2010-12-23  W. James MacLean  <wjmaclean@chromium.org>

        Reviewed by Kenneth Russell.

        [chromium] Add asserts to test for contiguous-pixel Skia bitmaps.
        https://bugs.webkit.org/show_bug.cgi?id=51186

        Add asserts to detect if assumptions (about contiguous pixels in Skia bitmaps) are violated.

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

2010-12-22  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r74503.
        http://trac.webkit.org/changeset/74503
        https://bugs.webkit.org/show_bug.cgi?id=51513

        breaks chromium mac debug compile (Requested by tonyg-cr on
        #webkit).

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

2010-12-22  W. James MacLean  <wjmaclean@chromium.org>

        Reviewed by Kenneth Russell.

        [chromium] Add asserts to test for contiguous-pixel Skia bitmaps.
        https://bugs.webkit.org/show_bug.cgi?id=51186

        Add asserts to detect if assumptions (about contiguous pixels in Skia bitmaps) are violated.

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

2010-12-21  Zhenyao Mo  <zmo@google.com>

        Reviewed by Kenneth Russell.

        WebGLRenderingContext needs to zero textures and renderbuffers
        https://bugs.webkit.org/show_bug.cgi?id=49355

        * src/WebGraphicsContext3DDefaultImpl.cpp:
        (WebKit::WebGraphicsContext3DDefaultImpl::texImage2D): Generate an INVALID_VALUE if pixels==null is passed in.

2010-12-20  Andrei Popescu  <andreip@google.com>

        Reviewed by Jeremy Orlow.

        IDBCursor::delete is not implemented.
        https://bugs.webkit.org/show_bug.cgi?id=51110

        * public/WebIDBCursor.h:
        (WebKit::WebIDBCursor::remove):
        (WebKit::WebIDBCursor::deleteFunction):
        * src/IDBCursorBackendProxy.cpp:
        (WebCore::IDBCursorBackendProxy::deleteFunction):
        * src/IDBCursorBackendProxy.h:
        * src/WebIDBCursorImpl.cpp:
        (WebKit::WebIDBCursorImpl::deleteFunction):
        * src/WebIDBCursorImpl.h:

2010-12-18  Tony Gentilcore  <tonyg@chromium.org>

        Reviewed by Laszlo Gombos.

        [Web Timing] Rename domContentLoaded{Start,End}->domContentLoadedEvent{Start,End}
        https://bugs.webkit.org/show_bug.cgi?id=50943

        Exposes all dom* times to the chromium port. I'm particularly interested in
        domContentLoadedEventEnd as it compares to the FinishDoc metric.

        * public/WebPerformance.h:
        * src/WebPerformance.cpp:
        (WebKit::WebPerformance::domLoading):
        (WebKit::WebPerformance::domInteractive):
        (WebKit::WebPerformance::domContentLoadedEventStart):
        (WebKit::WebPerformance::domContentLoadedEventEnd):
        (WebKit::WebPerformance::domComplete):

2010-12-17  Tony Gentilcore  <tonyg@chromium.org>

        Unreviewed, build fix.

        Add WebKitTools -> Tools rename that got missed.

        * WebKit.gyp:

2010-12-17  Dirk Pranke  <dpranke@chromium.org>

        Unreviewed, build fix.

        Add WebKitTools -> Tools rename that got missed.

        * WebKit.gyp:

2010-12-17  John Knottenbelt  <jknotten@chromium.org>

        Reviewed by Jeremy Orlow.

        Fix test failures where NULL GeolocationClient is provided
        https://bugs.webkit.org/show_bug.cgi?id=51256

        * src/GeolocationClientProxy.cpp:
        (WebKit::GeolocationClientProxy::geolocationDestroyed):

2010-12-17  Hans Wennborg  <hans@chromium.org>

        Reviewed by Jeremy Orlow.

        IndexedDB: Support Date objects as keys.
        https://bugs.webkit.org/show_bug.cgi?id=51193

        Update to match the underlying WebCore IDBKey class:
        add the DateType, add create() functions for each type,
        deprecate the public constructors (will be removed once
        Chromium side is updated).

        * public/WebIDBKey.h:
        (WebKit::WebIDBKey::WebIDBKey):
        * src/AssertMatchingEnums.cpp:
        * src/WebIDBKey.cpp:
        (WebKit::WebIDBKey::createString):
        (WebKit::WebIDBKey::createDate):
        (WebKit::WebIDBKey::createNumber):
        (WebKit::WebIDBKey::assignNull):
        (WebKit::WebIDBKey::assignString):
        (WebKit::WebIDBKey::assignDate):
        (WebKit::WebIDBKey::assignNumber):
        (WebKit::WebIDBKey::date):

2010-12-17  James Simonsen  <simonjam@chromium.org>

        Reviewed by Darin Fisher.

        [Web Timing] Navigation type enums should begin with TYPE_
        https://bugs.webkit.org/show_bug.cgi?id=51200

        * src/WebPerformance.cpp:
        (WebKit::WebPerformance::navigationType): Added TYPE_ to navigation types.

2010-12-16  John Knottenbelt  <jknotten@chromium.org>

        Reviewed by Jeremy Orlow.

        Enable client-based geolocation in Chromium
        https://bugs.webkit.org/show_bug.cgi?id=50562

        * features.gypi:

2010-12-16  Hans Wennborg  <hans@chromium.org>

        Reviewed by Jeremy Orlow.

        IndexedDB: Fix IDBDatabaseError code offset bug
        https://bugs.webkit.org/show_bug.cgi?id=51177

        WebIDBDatabaseError must use the
        IDBDatabaseError::createWithoutOffset() function.

        * src/WebIDBDatabaseError.cpp:
        (WebKit::WebIDBDatabaseError::assign):

2010-12-15  Chris Guillory  <chris.guillory@google.com>

        Reviewed by Darin Fisher.

        Expose AccessibilityObject::url() to Chromium
        https://bugs.webkit.org/show_bug.cgi?id=51046

        * public/WebAccessibilityObject.h:
        * src/WebAccessibilityObject.cpp:
        (WebKit::WebAccessibilityObject::url):

2010-12-14  Darin Fisher  <darin@chromium.org>

        Reviewed by Dimitri Glazkov.

        [chromium] AssociatedURLLoader leaks m_realLoader to its WebURLLoaderClient.
        https://bugs.webkit.org/show_bug.cgi?id=51062

        * src/AssociatedURLLoader.cpp: Intercept WebURLLoaderClient methods and
        forward |this| as the WebURLLoader parameter.
        (WebKit::AssociatedURLLoader::AssociatedURLLoader):
        (WebKit::AssociatedURLLoader::loadSynchronously):
        (WebKit::AssociatedURLLoader::loadAsynchronously):
        (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:

2010-12-14  Mihai Parparita  <mihaip@chromium.org>

        Reviewed by Dimitri Glazkov.

        Move asynchronous event dispatching out of Document
        https://bugs.webkit.org/show_bug.cgi?id=49785
        
        Change enqueueEvent callsite.

        * src/StorageAreaProxy.cpp:
        (WebCore::StorageAreaProxy::storageEvent):

2010-12-13  Mike Lawther  <mikelawther@chromium.org>

        Reviewed by James Robinson.

        Update chromium DEPS to pull in latest Skia
        https://bugs.webkit.org/show_bug.cgi?id=50984

        Roll to revision that pulled in Skia r632 (http://src.chromium.org/viewvc/chrome?view=rev&revision=68558) 

        * DEPS:

2010-12-13  David Holloway  <dhollowa@chromium.org>

        Reviewed by Eric Seidel.

        [chromium] Removes deprecated logic following the consolidation of AutoFill and
        Autocomplete popup menu handling (https://bugs.webkit.org/show_bug.cgi?id=41236).
        Filling of the form fields is now handled completely on the Chromium side, for
        both AutoFill and Autocomplete.

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

        * public/WebView.h:
        * src/AutoFillPopupMenuClient.cpp:
        (WebKit::AutoFillPopupMenuClient::AutoFillPopupMenuClient):
        (WebKit::AutoFillPopupMenuClient::valueChanged):
        * src/AutoFillPopupMenuClient.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::applyAutoFillSuggestions):
        * src/WebViewImpl.h:

2010-12-13  Yury Semikhatsky  <yurys@chromium.org>

        Unreviewed. Rollout 73914, 73915, 73917, 73920 and 73921.

        REGRESSION(r73914): "Chromium page_cycler_morejs fails" (Requested by yurys on #webkit).
        https://bugs.webkit.org/show_bug.cgi?id=50950

        * src/WebWorkerClientImpl.cpp:
        (WebKit::WebWorkerClientImpl::postExceptionToWorkerObject):
        (WebKit::WebWorkerClientImpl::postConsoleMessageToWorkerObject):
        (WebKit::WebWorkerClientImpl::postExceptionToWorkerObjectTask):
        (WebKit::WebWorkerClientImpl::postConsoleMessageToWorkerObjectTask):

2010-12-13  Ilya Tikhonovsky  <loislo@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: Protocol cleanup task. Assign domain attribute to Resources and Debugger specific functions.

        Debugger and Resources related notification functions of Inspector.idl were
        marked as such with help of "domain" attribute. The other changes in js files
        are reflecting this change. Some wrappers in WebInspector namespace were dropped,
        the others were moved to DebuggerModel class.

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

        * src/js/Tests.js:
        (.TestSuite.prototype._waitForScriptPause):
        (.TestSuite.prototype._waitUntilScriptsAreParsed.waitForAllScripts):
        (.TestSuite.prototype._waitUntilScriptsAreParsed):

2010-12-13  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Adam Barth.

        WebCore doesn't fire window.onerror event when uncaught JavaScript exceptions are thrown
        https://bugs.webkit.org/show_bug.cgi?id=8519

        Uncaught exceptions are propagated to window.onerror hander if one is present.
        The handler is expected to be a function accepting three arguments: error message,
        resource url and line number where the exception occured.

        * src/WebWorkerClientImpl.cpp:
        (WebKit::WebWorkerClientImpl::postExceptionToWorkerObject):
        (WebKit::WebWorkerClientImpl::postExceptionToWorkerObjectTask):

2010-12-13  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r73898.
        http://trac.webkit.org/changeset/73898
        https://bugs.webkit.org/show_bug.cgi?id=50919

        FileSystem and Database API's were broken (Requested by loislo
        on #webkit).

        * src/js/Tests.js:
        (.TestSuite.prototype._waitForScriptPause):

2010-12-13  Ilya Tikhonovsky  <loislo@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: Protocol cleanup task. Assign domain attribute to Resources and Debugger specific functions.

        Debugger and Resources related notification functions of Inspector.idl were
        marked as such with help of "domain" attribute. The other changes in js files
        are reflecting this change. Some wrappers in WebInspector namespace were dropped,
        the others were moved to DebuggerModel class.

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

        * src/js/Tests.js:
        (.TestSuite.prototype._waitForScriptPause):

2010-10-28  MORITA Hajime  <morrita@google.com>

        Reviewed by Ojan Vafai.

        spellcheck does not check pasted text
        https://bugs.webkit.org/show_bug.cgi?id=40092

        Added a stub implememntation.

        * src/EditorClientImpl.h:
        (WebKit::EditorClientImpl::requestCheckingOfString):

2010-12-10  Chris Fleizach  <cfleizach@apple.com>

        Reviewed by Darin Adler.

        AX: refactor AccessibilityRenderObject::doAccessibilityHitTest
        https://bugs.webkit.org/show_bug.cgi?id=50574

        * src/WebAccessibilityObject.cpp:
        (WebKit::WebAccessibilityObject::hitTest):

2010-12-10  Zhenyao Mo  <zmo@google.com>

        Reviewed by Adam Barth.

        Use enums instead of booleans in ImageSource/ImageDecoder constructors
        https://bugs.webkit.org/show_bug.cgi?id=50818

        * src/WebImageDecoder.cpp:
        (WebKit::WebImageDecoder::init): Use enums instead of boolean in ImageDecoder constructor.

2010-12-10  Kenneth Russell  <kbr@google.com>

        Reviewed by James Robinson.

        Implement extension entry points and remove EXTENSIONS enum
        https://bugs.webkit.org/show_bug.cgi?id=40316

        Added support for ensuring that a particular OpenGL extension is
        enabled.

        * public/WebGraphicsContext3D.h:
        * src/Extensions3DChromium.cpp:
        (WebCore::Extensions3DChromium::ensureEnabled):
        * src/GraphicsContext3DChromium.cpp:
        (WebCore::GraphicsContext3DInternal::initializeExtensions):
        (WebCore::GraphicsContext3DInternal::supportsExtension):
        (WebCore::GraphicsContext3DInternal::ensureExtensionEnabled):
        * src/GraphicsContext3DInternal.h:
        * src/WebGraphicsContext3DDefaultImpl.cpp:
        (WebKit::WebGraphicsContext3DDefaultImpl::getRequestableExtensionsCHROMIUM):
        (WebKit::WebGraphicsContext3DDefaultImpl::requestExtensionCHROMIUM):
        * src/WebGraphicsContext3DDefaultImpl.h:

2010-12-10  John Knottenbelt  <jknotten@chromium.org>

        Reviewed by Steve Block.

        [Chromium] Implement mocks for client-based geolocation
        https://bugs.webkit.org/show_bug.cgi?id=46895

        * WebKit.gyp:
        * public/WebGeolocationClientMock.h: Added.
        (WebKit::WebGeolocationClientMock::~WebGeolocationClientMock):
        (WebKit::WebGeolocationClientMock::WebGeolocationClientMock):
        * src/WebGeolocationClientMock.cpp: Added.
        (WebKit::WebGeolocationClientMock::create):
        (WebKit::WebGeolocationClientMock::initialize):
        (WebKit::WebGeolocationClientMock::reset):
        (WebKit::WebGeolocationClientMock::setMockGeolocationPosition):
        (WebKit::WebGeolocationClientMock::setMockGeolocationError):
        (WebKit::WebGeolocationClientMock::setMockGeolocationPermission):
        (WebKit::WebGeolocationClientMock::resetMock):
        (WebKit::WebGeolocationClientMock::startUpdating):
        (WebKit::WebGeolocationClientMock::stopUpdating):
        (WebKit::WebGeolocationClientMock::setEnableHighAccuracy):
        (WebKit::WebGeolocationClientMock::geolocationDestroyed):
        (WebKit::WebGeolocationClientMock::setController):
        (WebKit::WebGeolocationClientMock::lastPosition):
        (WebKit::WebGeolocationClientMock::requestPermission):
        (WebKit::WebGeolocationClientMock::cancelPermissionRequest):
        * src/WebGeolocationServiceMock.cpp:

2010-12-10  John Knottenbelt  <jknotten@chromium.org>

        Reviewed by Steve Block.

        [chromium] Implement client based geolocation bindings
        https://bugs.webkit.org/show_bug.cgi?id=45752

        Implements the necessary plumbing to expose client-based geolocation in Chromium
        webkit. The plan is to remove the non-client-based geolocation code (GeolocationService*)
        in the future.

        * WebKit.gyp:
        * public/WebGeolocationClient.h: Added.
        (WebKit::WebGeolocationClient::~WebGeolocationClient):
        * public/WebGeolocationController.h: Added.
        (WebKit::WebGeolocationController::WebGeolocationController):
        (WebKit::WebGeolocationController::reset):
        * public/WebGeolocationError.h:
        * public/WebGeolocationPermissionRequest.h: Added.
        (WebKit::WebGeolocationPermissionRequest::WebGeolocationPermissionRequest):
        (WebKit::WebGeolocationPermissionRequest::geolocation):
        * public/WebGeolocationPermissionRequestManager.h: Added.
        (WebKit::WebGeolocationPermissionRequestManager::WebGeolocationPermissionRequestManager):
        (WebKit::WebGeolocationPermissionRequestManager::~WebGeolocationPermissionRequestManager):
        * public/WebGeolocationPosition.h:
        * public/WebViewClient.h:
        (WebKit::WebViewClient::geolocationClient):
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::requestGeolocationPermissionForFrame):
        (WebKit::ChromeClientImpl::cancelGeolocationPermissionRequestForFrame):
        * src/GeolocationClientProxy.cpp: Added.
        (WebKit::GeolocationClientProxy::GeolocationClientProxy):
        (WebKit::GeolocationClientProxy::~GeolocationClientProxy):
        (WebKit::GeolocationClientProxy::setController):
        (WebKit::GeolocationClientProxy::geolocationDestroyed):
        (WebKit::GeolocationClientProxy::startUpdating):
        (WebKit::GeolocationClientProxy::stopUpdating):
        (WebKit::GeolocationClientProxy::setEnableHighAccuracy):
        (WebKit::GeolocationClientProxy::lastPosition):
        (WebKit::GeolocationClientProxy::requestPermission):
        (WebKit::GeolocationClientProxy::cancelPermissionRequest):
        * src/GeolocationClientProxy.h: Added.
        * src/WebGeolocationController.cpp: Added.
        (WebKit::WebGeolocationController::positionChanged):
        (WebKit::WebGeolocationController::errorOccurred):
        (WebKit::WebGeolocationController::controller):
        * src/WebGeolocationPermissionRequest.cpp: Added.
        (WebKit::WebGeolocationPermissionRequest::securityOrigin):
        (WebKit::WebGeolocationPermissionRequest::setIsAllowed):
        * src/WebGeolocationPermissionRequestManager.cpp: Added.
        (WebGeolocationPermissionRequestManager::add):
        (WebGeolocationPermissionRequestManager::remove):
        (WebGeolocationPermissionRequestManager::init):
        (WebGeolocationPermissionRequestManager::reset):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::WebViewImpl):
        * src/WebViewImpl.h:

2010-12-10  Hans Wennborg  <hans@chromium.org>

        Reviewed by Jeremy Orlow.

        IndexedDB: Numeric keys are floats.
        https://bugs.webkit.org/show_bug.cgi?id=50674

        Represent numeric keys as floating point values.

        * public/WebIDBKey.h:
        (WebKit::WebIDBKey::WebIDBKey):
        * src/WebIDBKey.cpp:
        (WebKit::WebIDBKey::assign):
        (WebKit::WebIDBKey::number):

2010-12-09  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r73616.
        http://trac.webkit.org/changeset/73616
        https://bugs.webkit.org/show_bug.cgi?id=50772

        Breaks chromium win build (Requested by hwennborg on #webkit).

        * public/WebIDBKey.h:
        (WebKit::WebIDBKey::WebIDBKey):
        * src/WebIDBKey.cpp:
        (WebKit::WebIDBKey::assign):
        (WebKit::WebIDBKey::number):

2010-12-09  Hans Wennborg  <hans@chromium.org>

        Reviewed by Jeremy Orlow.

        IndexedDB: Numeric keys are floats.
        https://bugs.webkit.org/show_bug.cgi?id=50674

        Represent numeric keys as floating point values.

        * public/WebIDBKey.h:
        (WebKit::WebIDBKey::WebIDBKey):
        * src/WebIDBKey.cpp:
        (WebKit::WebIDBKey::assign):
        (WebKit::WebIDBKey::number):

2010-12-07  Brian Weinstein  <bweinstein@apple.com>

        Reviewed by John Sullivan.

        Layering Violation in ContextMenu - member variable of type HitTestResult
        https://bugs.webkit.org/show_bug.cgi?id=50586
        
        Update users of ContextMenu and ContextMenuController to match where the new functions 
        are located.

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

2010-12-06  Darin Adler  <darin@apple.com>

        Reviewed by Sam Weinig.

        Pass security origin to make local file decision correctly
        https://bugs.webkit.org/show_bug.cgi?id=48603

        * src/ApplicationCacheHost.cpp:
        (WebCore::ApplicationCacheHost::selectCacheWithManifest): Pass security origin.
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::dispatchCreatePage): Ditto.
        (WebKit::FrameLoaderClientImpl::createFrame): Ditto.
        * src/WebPluginContainerImpl.cpp:
        (WebKit::WebPluginContainerImpl::loadFrameRequest): Ditto.

2010-12-07  Martin Robinson  <mrobinson@igalia.com>

        Unreviewed, rolling out r73392.
        http://trac.webkit.org/changeset/73392
        https://bugs.webkit.org/show_bug.cgi?id=50489

        This commit caused crashes on the GTK+ bots

        * src/ContextMenuClientImpl.cpp:
        (WebKit::ContextMenuClientImpl::getCustomMenuFromDefaultItems):
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::finishedLoading):
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::encoding):
        (WebKit::WebFrameImpl::loadJavaScriptURL):
        * src/WebPageSerializerImpl.cpp:
        (WebKit::WebPageSerializerImpl::preActionBeforeSerializeOpenTag):
        (WebKit::WebPageSerializerImpl::serialize):
        * src/WebSearchableFormData.cpp:
        (WebCore::GetFormEncoding):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::pageEncoding):

2010-12-07  Kenichi Ishibashi  <bashi@google.com>

        Reviewed by Kent Tamura.

        Let HTMLObjectElement be a form associated element
        https://bugs.webkit.org/show_bug.cgi?id=48821

        Modified to use FormAssociatedElement instead of HTMLFormControlElement.

        * src/WebFormElement.cpp: 
        (WebKit::WebFormElement::getFormControlElements): Modified to use
        FormAssociatedElement instead of HTMLFormControlElement.
        * src/WebPasswordFormUtils.cpp:
        (WebKit::findPasswordFormFields): Ditto.
        * src/WebSearchableFormData.cpp:
        (WebCore::GetButtonToActivate): Ditto.
        (WebCore::HasSuitableTextElement): Ditto.

2010-12-06  Nate Chapin  <japhet@chromium.org>

        Reviewed by Adam Barth.

        Update calls to DocumentWriter.
        https://bugs.webkit.org/show_bug.cgi?id=50489

        * src/ContextMenuClientImpl.cpp:
        (WebKit::ContextMenuClientImpl::getCustomMenuFromDefaultItems):
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::finishedLoading):
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::encoding):
        (WebKit::WebFrameImpl::loadJavaScriptURL):
        * src/WebPageSerializerImpl.cpp:
        (WebKit::WebPageSerializerImpl::preActionBeforeSerializeOpenTag):
        (WebKit::WebPageSerializerImpl::serialize):
        * src/WebSearchableFormData.cpp:
        (WebCore::GetFormEncoding):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::pageEncoding):

2010-12-03  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r73302.
        http://trac.webkit.org/changeset/73302
        https://bugs.webkit.org/show_bug.cgi?id=50499

        Causes crashes in debug LayoutTests (Requested by xan_ on
        #webkit).

        * public/WebAccessibilityObject.h:
        * src/WebAccessibilityObject.cpp:
        (WebKit::WebAccessibilityObject::parentObject):

2010-12-01  Ilya Tikhonovsky  <loislo@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: Inspector protocol cleanup task.

        The patch has just small renames and adjustments for the protocol things.
        'handler' keyword in idl file was replaced with 'domain'.
        'domain' property was assigned for the each backend to frontend messages.
        At the next step WebInspector wrapper functions will be removed and 'agents' will be called directly.

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

        * src/WebDevToolsFrontendImpl.cpp:
        (WebKit::WebDevToolsFrontendImpl::dispatchOnInspectorFrontend):

2010-12-03  Chris Guillory  <chris.guillory@google.com>

        Reviewed by Chris Fleizach.

        Include the FrameView widget of a RenderWidget in the accessibility tree.
        https://bugs.webkit.org/show_bug.cgi?id=49106

        * public/WebAccessibilityObject.h:
        * src/WebAccessibilityObject.cpp:
        (WebKit::WebAccessibilityObject::equals):
        (WebKit::WebAccessibilityObject::parentObject):

2010-11-29  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Clean up IndexedDB 2 sided roll bits
        https://bugs.webkit.org/show_bug.cgi?id=50160

        * public/WebIDBDatabase.h:
        (WebKit::WebIDBDatabase::version):
        (WebKit::WebIDBDatabase::objectStoreNames):
        (WebKit::WebIDBDatabase::deleteObjectStore):
        * public/WebIDBFactory.h:
        (WebKit::WebIDBFactory::open):
        * public/WebIDBKeyRange.h:
        * public/WebIDBObjectStore.h:
        (WebKit::WebIDBObjectStore::deleteFunction):
        * src/IDBDatabaseProxy.cpp:
        * src/IDBDatabaseProxy.h:
        * src/WebIDBKeyRange.cpp:

2010-12-02  Chris Rogers  <crogers@google.com>

        Reviewed by Darin Fisher.

        Fine-tune chromium WebKit API for loading audio resources
        https://bugs.webkit.org/show_bug.cgi?id=50406

        * public/WebAudioBus.h:
        (WebKit::WebAudioBus::~WebAudioBus):
        * public/WebKitClient.h:
        (WebKit::WebKitClient::loadAudioResource):
        * src/ChromiumBridge.cpp:
        (WebCore::ChromiumBridge::decodeAudioFileData):
        * src/WebAudioBus.cpp:
        (WebKit::WebAudioBus::reset):

2010-12-02  Darin Fisher  <darin@chromium.org>

        Fix the Windows multi-dll build.  Do not export functions that are
        implemented inline!

        * public/WebFormControlElement.h:
        (WebKit::WebFormControlElement::assign):

2010-12-02  Tony Chang  <tony@chromium.org>

        Unreviewed, roll chromium deps to r67980.

        * DEPS:

2010-12-01  Andrey Kosyakov  <caseq@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: [Resources panel] [HAR] Need a way to save timing data.
        Enable resource export to HAR for Chromium.
        https://bugs.webkit.org/show_bug.cgi?id=45663

        * src/js/DevTools.js: Preferences.resourceExportEnabled = true

2010-12-02  Vincent Scheib  <scheib@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] histograms api updated in WebKitClient/ChromiumBridge and histogram "GPU.setIsAcceleratedCompositingActive" added.
        https://bugs.webkit.org/show_bug.cgi?id=50285

        Test by loading "about:histograms" after navigating to accelerated pages.

        * public/WebKitClient.h:
        (WebKit::WebKitClient::histogramCustomCounts): api update.
        (WebKit::WebKitClient::histogramEnumeration): api update.
        * src/ChromiumBridge.cpp:
        (WebCore::ChromiumBridge::histogramCustomCounts): api update.
        (WebCore::ChromiumBridge::histogramEnumeration): api update.
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::setIsAcceleratedCompositingActive): "GPU.setIsAcceleratedCompositingActive" added.

2010-12-01  Jia Pu  <jpu@apple.com>

        Reviewed by Darin Adler.

        Support multiple correction candidates panel for misspelled word on Mac OS X.
        https://bugs.webkit.org/show_bug.cgi?id=50137
        <rdar://problem/8568059>

        Adopted new function signature defined in base class.

        * src/EditorClientImpl.cpp:
        (WebKit::EditorClientImpl::getGuessesForWord):
        * src/EditorClientImpl.h:

2010-12-01  Alexey Marinichev  <amarinichev@chromium.org>

        Reviewed by James Robinson.

        [chromium] renderer does not realize hardware compositing is disabled and crashes
        https://bugs.webkit.org/show_bug.cgi?id=50264

        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::setRootGraphicsLayer): repaint always
        (WebKit::WebViewImpl::setIsAcceleratedCompositingActive): null check
        (WebKit::WebViewImpl::reallocateRenderer):

2010-11-30  Vangelis Kokkevis  <vangelis@chromium.org>

        Reviewed by Darin Fisher.

        Get the value of the accelerated compositing triggers from the Settings
        class.  This allows setting the triggers via command line flags.
        https://bugs.webkit.org/show_bug.cgi?id=50301

        * public/WebSettings.h:
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::allowedCompositingTriggers):
        * src/WebSettingsImpl.cpp:
        (WebKit::WebSettingsImpl::setAcceleratedCompositingFor3DTransformsEnabled):
        (WebKit::WebSettingsImpl::setAcceleratedCompositingForVideoEnabled):
        (WebKit::WebSettingsImpl::setAcceleratedCompositingForPluginsEnabled):
        (WebKit::WebSettingsImpl::setAcceleratedCompositingForCanvasEnabled):
        (WebKit::WebSettingsImpl::setAcceleratedCompositingForAnimationEnabled):
        * src/WebSettingsImpl.h:

2010-12-01  Tony Chang  <tony@chromium.org>

        Unreviewed, rolling chromium deps to r67811.

        * DEPS:

2010-12-01  Andrey Kosyakov  <caseq@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: disable cookies tab in network resource view by default, enable for chromium
        https://bugs.webkit.org/show_bug.cgi?id=50249

        * src/js/DevTools.js:

2010-11-30  Ojan Vafai  <ojan@chromium.org>

        Revert r72876. It caused a ~30% perf regression in chromium's bloat-http test
        https://bugs.webkit.org/show_bug.cgi?id=50288

        2010-11-29 Adam Barth <abarth@webkit.org (:abarth) (r)>
        Reviewed by Darin Adler.
        Introduce the notion of a "display-isolated" URL scheme for use by Chrome-internal URLs
        https://bugs.webkit.org/show_bug.cgi?id=50182
        A display-isolated URL can only be displayed (e.g., put in an iframe,
        hyperlinked to) by documents from that scheme. In a sense, this is a
        generalization of some of the protections we give file URLs, but
        instead of lumping them all together into one "local" bucket, this
        patch creates a separate bucket for each scheme.
        For a while, I tried using a separate bucket for each origin. That
        would have played nicely with what Blob URLs are trying to do, but some
        "chrome" URL pages rely on being able to display other chrome URL
        pages, even in different origins. For example, the New Tab Page shows
        thumbnails from the "thumbnail" host.
        This patch also removes a bunch of unused code. I've also propagated
        the "deprecated" status of deprecatedCanDisplay to
        deprecatedShouldTreatURLAsLocal because that method has no other
        callers and is really asking for uppercase/lowercase bugs. I dream of
        someday removing these functions.
        2010-11-29 Adam Barth <abarth@webkit.org (:abarth) (r)>
        Reviewed by Darin Adler.
        Introduce the notion of a "display-isolated" URL scheme for use by Chrome-internal URLs
         https://bugs.webkit.org/show_bug.cgi?id=50182
        This patch adds a Chromium API for registering schemes as
        display-isolated. In a subsequent patch, I'll change the "chrome"
        scheme in Chrome to be display isolated instead of local. That will
        prevent file URLs from linking to chrome URLs.

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

2010-11-30  James Robinson  <jamesr@chromium.org>

        Reviewed by Dimitri Glazkov.

        [chromium] Update yasm entry in DEPS to match downstream
        https://bugs.webkit.org/show_bug.cgi?id=50274

        http://src.chromium.org/viewvc/chrome?view=rev&revision=67540 changed the downstream DEPS rule
        for yasm to pull unconditionally rather than pulling in each deps_os.  This changes the WebKit
        chromium DEPS to match.

        * DEPS:

2010-11-29  Vangelis Kokkevis  <vangelis@chromium.org>

        Reviewed by Simon Fraser.

        Provide more fine grained control to ports over when to turn on accelerated
        compositing.
        https://bugs.webkit.org/show_bug.cgi?id=49998

        As part of this change, the old hasAcceleratedCompositing method on the ChromeClient
        has now been replaced by allowedCompositingTriggers which returns a bitfield of
        all the features which can trigger the compositor.

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

2010-11-30  Jochen Eisinger  <jochen@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] pass webframe to web frame client's cookieJar
        https://bugs.webkit.org/show_bug.cgi?id=50148

        * public/WebFrameClient.h:
        (WebKit::WebFrameClient::cookieJar):
        * src/ChromiumBridge.cpp:
        (WebCore::getCookieJar):

2010-11-30  Jochen Eisinger  <jochen@chromium.org>

        Unreviewed. Roll chromium 67532:67541.

        * DEPS:

2010-11-29  Adam Barth  <abarth@webkit.org>

        Reviewed by Darin Adler.

        Introduce the notion of a "display-isolated" URL scheme for use by Chrome-internal URLs
        https://bugs.webkit.org/show_bug.cgi?id=50182

        This patch adds a Chromium API for registering schemes as
        display-isolated.  In a subsequent patch, I'll change the "chrome"
        scheme in Chrome to be display isolated instead of local.  That will
        prevent file URLs from linking to chrome URLs.

        * public/WebSecurityPolicy.h:
        * src/WebSecurityPolicy.cpp:
        (WebKit::WebSecurityPolicy::registerURLSchemeAsDisplayIsolated):

2010-11-29  Kent Tamura  <tkent@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Add substitution parameters to WebKitClient::queryLocalizedString()
        https://bugs.webkit.org/show_bug.cgi?id=50053

        * public/WebKitClient.h:
        (WebKit::WebKitClient::queryLocalizedString): Add overload functions with
          substitution string parameters, and remove the integer parameter overload.
        * src/LocalizedStrings.cpp:
        (WebCore::query): Add string parameter overloads, and remove the integer parameter overload.
        (WebCore::multipleFileUploadText): Call the string parameter query().
        (WebCore::validationMessageTooLongText): Pass the parameters to query().
        (WebCore::validationMessageRangeUnderflowText): ditto.
        (WebCore::validationMessageRangeOverflowText): ditto.
        (WebCore::validationMessageStepMismatchText): ditto.

2010-11-29  Dimitri Glazkov  <dglazkov@chromium.org>

        Remove Build directory that was erroneously added in r72103.

        * Build: Removed.

2010-11-29  Andrey Kosyakov  <caseq@chromium.org>

        Reviewed by Darin Fisher.

        Web Inspector: [Chromium] Expose extension API to select a node in WebInspector
        Added WebDevToolsAgent::inspect()
        https://bugs.webkit.org/show_bug.cgi?id=49727

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

2010-11-29  Dimitri Glazkov  <dglazkov@chromium.org>

        [Chromium] Remove python_24 dependency, because it is no longer necessary.

        * DEPS: Removed python_24 dependency.

2010-11-29  Bernhard Bauer  <bauerb@chromium.org>

        Reviewed by Jeremy Orlow.

        Remove databaseFileName from WebIDBFactory
        https://bugs.webkit.org/show_bug.cgi?id=50150

        * WebKit.gyp:
        * public/WebIDBFactory.h:
        (WebKit::WebIDBFactory::open):
        * src/WebIDBFactory.cpp: Removed.

2010-11-26  Andrei Popescu  <andreip@google.com>

        Reviewed by Jeremy Orlow.

        IDBDatabase and IDBObjectStore remove* methods should be renamed to delete*
        https://bugs.webkit.org/show_bug.cgi?id=50113

        * public/WebIDBDatabase.h:
        (WebKit::WebIDBDatabase::deleteObjectStore):
        (WebKit::WebIDBDatabase::removeObjectStore):
        * public/WebIDBObjectStore.h:
        (WebKit::WebIDBObjectStore::remove):
        (WebKit::WebIDBObjectStore::deleteFunction):
        (WebKit::WebIDBObjectStore::deleteIndex):
        * src/IDBDatabaseProxy.cpp:
        (WebCore::IDBDatabaseProxy::deleteObjectStore):
        * src/IDBDatabaseProxy.h:
        * src/IDBObjectStoreProxy.cpp:
        (WebCore::IDBObjectStoreProxy::deleteFunction):
        (WebCore::IDBObjectStoreProxy::deleteIndex):
        * src/IDBObjectStoreProxy.h:
        * src/WebIDBDatabaseImpl.cpp:
        (WebKit::WebIDBDatabaseImpl::deleteObjectStore):
        * src/WebIDBDatabaseImpl.h:
        * src/WebIDBObjectStoreImpl.cpp:
        (WebKit::WebIDBObjectStoreImpl::deleteFunction):
        (WebKit::WebIDBObjectStoreImpl::deleteIndex):
        * src/WebIDBObjectStoreImpl.h:

2010-11-26  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Steve Block.

        Make IDBKeyRange match the spec
        https://bugs.webkit.org/show_bug.cgi?id=50105

        Remove flags and instead add two booleans for being open.
        Change left to lower and right to upper everywhere.

        * public/WebIDBKeyRange.h:
        (WebKit::WebIDBKeyRange::WebIDBKeyRange):
        * src/WebIDBKeyRange.cpp:
        (WebKit::WebIDBKeyRange::assign):
        (WebKit::WebIDBKeyRange::left):
        (WebKit::WebIDBKeyRange::right):
        (WebKit::WebIDBKeyRange::lower):
        (WebKit::WebIDBKeyRange::upper):
        (WebKit::WebIDBKeyRange::lowerOpen):
        (WebKit::WebIDBKeyRange::upperOpen):
        (WebKit::WebIDBKeyRange::flags):

2010-11-25  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Steve Block.

        Clean up IDBDatabase.transaction and add checks to IDBTransaction.objectStore
        https://bugs.webkit.org/show_bug.cgi?id=50081

        Plumb IDBTransaction.objectStore's exception code.

        * public/WebIDBTransaction.h:
        (WebKit::WebIDBTransaction::objectStore):
        * src/IDBDatabaseProxy.cpp:
        (WebCore::IDBDatabaseProxy::transaction):
        * src/IDBTransactionBackendProxy.cpp:
        (WebCore::IDBTransactionBackendProxy::objectStore):
        * src/IDBTransactionBackendProxy.h:
        * src/WebIDBDatabaseImpl.cpp:
        (WebKit::WebIDBDatabaseImpl::createObjectStore):
        (WebKit::WebIDBDatabaseImpl::transaction):
        * src/WebIDBTransactionImpl.cpp:
        (WebKit::WebIDBTransactionImpl::objectStore):
        * src/WebIDBTransactionImpl.h:

2010-11-26  Hans Wennborg  <hans@chromium.org>

        Reviewed by Jeremy Orlow.

        IndexedDB: Rename IDBDatabase.objectStores to objectStoreNames
        https://bugs.webkit.org/show_bug.cgi?id=50102

        Rename as per the spec: http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#database-interface

        * public/WebIDBDatabase.h:
        (WebKit::WebIDBDatabase::objectStores):
        (WebKit::WebIDBDatabase::objectStoreNames):
        * src/IDBDatabaseProxy.cpp:
        (WebCore::IDBDatabaseProxy::objectStoreNames):
        * src/IDBDatabaseProxy.h:
        * src/WebIDBDatabaseImpl.cpp:
        (WebKit::WebIDBDatabaseImpl::objectStoreNames):
        * src/WebIDBDatabaseImpl.h:

2010-11-26  Andrei Popescu  <andreip@google.com>

        Reviewed by Jeremy Orlow.

        IDBFactory::open should not have a description argument.
        https://bugs.webkit.org/show_bug.cgi?id=50087

        * public/WebIDBDatabase.h:
        (WebKit::WebIDBDatabase::description):
        * public/WebIDBFactory.h:
        (WebKit::WebIDBFactory::open):
        * src/IDBFactoryBackendProxy.cpp:
        (WebCore::IDBFactoryBackendProxy::open):
        * src/IDBFactoryBackendProxy.h:
        * src/WebIDBDatabaseImpl.cpp:
        * src/WebIDBDatabaseImpl.h:
        * src/WebIDBFactory.cpp:
        * src/WebIDBFactoryImpl.cpp:
        (WebKit::WebIDBFactoryImpl::open):
        * src/WebIDBFactoryImpl.h:

2010-11-25  Ilya Tikhonovsky  <loislo@chromium.org>

        Unreviewed. Roll chromium 67004:67404.

        * DEPS:

2010-11-25  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Steve Block.

        Add exception code to WebIDBTransaction::objectStore
        https://bugs.webkit.org/show_bug.cgi?id=50030

        * public/WebIDBTransaction.h:
        (WebKit::WebIDBTransaction::objectStore):

2010-11-24  MORITA Hajime  <morrita@google.com>

        Reviewed by Kent Tamura.

        [Chromium][Windows] TestShell flakily crashes with EventSender.contextClick()
        https://bugs.webkit.org/show_bug.cgi?id=50052
        
        makeStringArrayImpl() assumed wtf::StringImpl data is
        null-terminated. But it is not.
        Changed the code to pass the string length explicitly instead of
        making it computed by v8::String::New().

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

2010-11-24  Eric Uhrhane  <ericu@chromium.org>

        Reviewed by David Levin.

        [Chromium] Implement FileWriterSync
        https://bugs.webkit.org/show_bug.cgi?id=49940

        Added waitForOperationToComplete, delegating to the bridge.
        * src/WorkerAsyncFileWriterChromium.cpp:
        * src/WorkerAsyncFileWriterChromium.h:

        Added waitForOperationToComplete and some debug-only code to make sure it's working properly.
        * src/WorkerFileWriterCallbacksBridge.cpp:
        (WebKit::WorkerFileWriterCallbacksBridge::postWriteToMainThread):
        (WebKit::WorkerFileWriterCallbacksBridge::postTruncateToMainThread):
        (WebKit::WorkerFileWriterCallbacksBridge::postAbortToMainThread):
        (WebKit::WorkerFileWriterCallbacksBridge::WorkerFileWriterCallbacksBridge):
        (WebKit::WorkerFileWriterCallbacksBridge::didWriteOnWorkerThread):
        (WebKit::WorkerFileWriterCallbacksBridge::didFailOnWorkerThread):
        (WebKit::WorkerFileWriterCallbacksBridge::didTruncateOnWorkerThread):
        (WebKit::WorkerFileWriterCallbacksBridge::waitForOperationToComplete):
        * src/WorkerFileWriterCallbacksBridge.h:

2010-11-24  Kenneth Russell  <kbr@google.com>

        Reviewed by Darin Fisher.

        [chromium] Disable antialiasing for compositor
        https://bugs.webkit.org/show_bug.cgi?id=50039

        * src/WebViewImpl.cpp:
        (WebCore::getCompositorContextAttributes):
        (WebKit::WebViewImpl::setIsAcceleratedCompositingActive):
        (WebKit::WebViewImpl::graphicsContext3D):

2010-11-24  Satish Sampath  <satish@chromium.org>

        Reviewed by Steve Block.

        Remove API migration code which is no longer used.
        https://bugs.webkit.org/show_bug.cgi?id=50013

        * public/WebSpeechInputControllerMock.h:

2010-11-23  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r72628.
        http://trac.webkit.org/changeset/72628
        https://bugs.webkit.org/show_bug.cgi?id=49994

        This patch is causing layout-test failtures on GTK Linux
        64-bit Debug (Requested by ctguil on #webkit).

        * public/WebAccessibilityObject.h:
        * src/WebAccessibilityObject.cpp:
        (WebKit::WebAccessibilityObject::parentObject):

2010-11-23  Chris Guillory  <chris.guillory@google.com>

        Reviewed by Dimitri Glazkov.

        Include the FrameView widget of a RenderWidget in the accessibility tree.
        https://bugs.webkit.org/show_bug.cgi?id=49106

        * public/WebAccessibilityObject.h:
        * src/WebAccessibilityObject.cpp:
        (WebKit::WebAccessibilityObject::equals):
        (WebKit::WebAccessibilityObject::parentObject):

2010-11-23  John Knottenbelt  <jknotten@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Introduce wrapper types for WebCore::GeolocationError, WebCore::GeolocationPosition.
        https://bugs.webkit.org/show_bug.cgi?id=49735

        Introduce WebKit API types so that the browser implementation can feed
        position and error updates to the WebCore::GeolocationController.

        * WebKit.gyp:
        * public/WebGeolocationError.h: Added.
        (WebKit::WebGeolocationError::WebGeolocationError):
        (WebKit::WebGeolocationError::~WebGeolocationError):
        * public/WebGeolocationPosition.h: Added.
        (WebKit::WebGeolocationPosition::WebGeolocationPosition):
        (WebKit::WebGeolocationPosition::~WebGeolocationPosition):
        * src/WebGeolocationError.cpp: Added.
        (WebKit::WebGeolocationError::assign):
        (WebKit::WebGeolocationError::reset):
        (WebKit::WebGeolocationError::WebGeolocationError):
        (WebKit::WebGeolocationError::operator=):
        (WebKit::WebGeolocationError::operator WTF::PassRefPtr<WebCore::GeolocationError>):
        * src/WebGeolocationPosition.cpp: Added.
        (WebKit::WebGeolocationPosition::assign):
        (WebKit::WebGeolocationPosition::reset):
        (WebKit::WebGeolocationPosition::operator=):
        (WebKit::WebGeolocationPosition::operator PassRefPtr<WebCore::GeolocationPosition>):

2010-11-23  Jonathan Backer  <backer@chromium.org>

        Reviewed by Kenneth Russell.

        Renderer is resizing IOSurfaces when accelerated compositing is disabled.
        https://bugs.webkit.org/show_bug.cgi?id=49827

        - IOSurfaces are only presented when accelerated compositing is enabled.
        - Slight performance increase (and clean-up for using this path for Linux and Windows).

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

2010-11-23  Grace Kloba  <klobag@chromium.org>

        Reviewed by Kenneth Russell.

        [chromium] Accumulated scroll damage rect should be in the content space
        https://bugs.webkit.org/show_bug.cgi?id=49842

        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::scrollRootLayerRect): Adjust the previous scroll damage with the scroll delta before union it with the new damage rect.

2010-11-18  Darin Fisher  <darin@chromium.org>

        Reviewed by Dimitri Glazkov.

        Add a mechanism for creating a WebURLLoader that is associated with a
        particular WebFrame.
        https://bugs.webkit.org/show_bug.cgi?id=49764

        This will be used by code that calls webKitClient()->createURLLoader()
        from within the Chromium source tree.

        An associated WebURLLoader should be treated like a subresource of the
        WebFrame's document.

        * WebKit.gyp:
        * public/WebFrame.h:
        * src/AssociatedURLLoader.cpp: Added.
        (WebKit::AssociatedURLLoader::AssociatedURLLoader):
        (WebKit::AssociatedURLLoader::~AssociatedURLLoader):
        (WebKit::AssociatedURLLoader::loadSynchronously):
        (WebKit::AssociatedURLLoader::loadAsynchronously):
        (WebKit::AssociatedURLLoader::cancel):
        (WebKit::AssociatedURLLoader::setDefersLoading):
        (WebKit::AssociatedURLLoader::PrepareRequest):
        * src/AssociatedURLLoader.h: Added.
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::createAssociatedURLLoader):
        * src/WebFrameImpl.h:

2010-11-23  Satish Sampath  <satish@chromium.org>

        Unreviewed, chromium build fix.

        * public/WebSpeechInputControllerMock.h:
        (WebKit::WebSpeechInputControllerMock::setMockRecognitionResult):

2010-11-18  Satish Sampath  <satish@chromium.org>

        Reviewed by Jeremy Orlow.

        For speech input event, send an event object containing all the recognition results and metadata.
        https://bugs.webkit.org/show_bug.cgi?id=49736

        Updated mock object's method to new signature.

        * public/WebSpeechInputControllerMock.h:
        * src/WebSpeechInputControllerMockImpl.cpp:
        (WebKit::WebSpeechInputControllerMockImpl::addMockRecognitionResult):
        * src/WebSpeechInputControllerMockImpl.h:

2010-11-22  Alexey Marinichev  <amarinichev@chromium.org>

        Reviewed by Kenneth Russell.

        [chromium] Implement Extensions3DChromium::getGraphicsResetStatusARB
        https://bugs.webkit.org/show_bug.cgi?id=49946

        * public/WebGraphicsContext3D.h: added isContextLost()
        * src/Extensions3DChromium.cpp:
        (WebCore::Extensions3DChromium::getGraphicsResetStatusARB):
        * src/GraphicsContext3DChromium.cpp:
        (WebCore::GraphicsContext3DInternal::isContextLost):
        * src/GraphicsContext3DInternal.h:
        * src/WebGraphicsContext3DDefaultImpl.cpp:
        (WebKit::WebGraphicsContext3DDefaultImpl::isContextLost):
        * src/WebGraphicsContext3DDefaultImpl.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::reallocateRenderer): ensure root layer repaining

2010-11-22  Jay Civelli  <jcivelli@chromium.org>

        Reviewed by David Levin.

        Don't create an external popup menu when there are no items to show.
        https://bugs.webkit.org/show_bug.cgi?id=49937

        * src/ExternalPopupMenu.cpp:
        (WebKit::ExternalPopupMenu::show):

2010-11-22  Nat Duca  <nduca@chromium.org>

        Reviewed by Kenneth Russell.

        [chromium] Send didActivateAcceleratedCompositing when compositor
        initializes but does not create the shared context3d.
        https://bugs.webkit.org/show_bug.cgi?id=49930

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

2010-11-22  Tony Chang  <tony@chromium.org>

        Unreviewed, roll Chromium DEPS to r67004.

        * DEPS:

2010-11-22  Pavel Feldman  <pfeldman@chromium.org>

        Not reviewed. Partially roll out r72282.
        It should not have modified devtools files.

        * src/js/devTools.css:

2010-11-19  Ilya Sherman  <isherman@chromium.org>

        Reviewed by Darin Fisher.

        Expose default value of maxLength in Chromium API
        https://bugs.webkit.org/show_bug.cgi?id=49723

        * public/WebInputElement.h: Added constant defaultMaximumLength
        * src/WebInputElement.cpp:

2010-11-18  Zhenyao Mo  <zmo@google.com>

        Reviewed by Kenneth Russell.

        GraphicsContext3D::reshape is clearing using current clear color instead of transparent
        https://bugs.webkit.org/show_bug.cgi?id=44064

        * src/WebGraphicsContext3DDefaultImpl.cpp:
        (WebKit::WebGraphicsContext3DDefaultImpl::reshape): Use 0 as clear values.

2010-11-19  Tony Chang  <tony@chromium.org>

        Unreviewed, updating Chromium DEPS to try and fix the chromium win build.

        * DEPS: r66792

2010-11-19  Tony Chang  <tony@chromium.org>

        Reviewed by Kent Tamura.

        [chromium] Enable webkit's TestNetscapePlugIn for DRT on win and linux
        https://bugs.webkit.org/show_bug.cgi?id=49706

        It is enabled simply by copying the plugin into
        {Debug,Release}/plugins.  This change also rolls in a version of
        Chromium that disables the old plugin.

        * WebKit.gyp:

2010-11-19  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r72399.
        http://trac.webkit.org/changeset/72399
        https://bugs.webkit.org/show_bug.cgi?id=49805

        Broke Chromium build (Requested by antonm_ on #webkit).

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

2010-11-19  Jay Civelli  <jcivelli@chromium.org>

        Reviewed by David Levin.

        Removing unused code to show popup externally on Mac.
        https://bugs.webkit.org/show_bug.cgi?id=49747

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

2010-11-19  Pavel Feldman  <pfeldman@chromium.org>

        Not reviewed: flip chromium version to mitigate two-sided patch impact.

        * DEPS:

2010-11-18  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: provide response code and status text as a part
        of raw headers data.
        https://bugs.webkit.org/show_bug.cgi?id=49668

        * WebKit.gyp:
        * public/WebHTTPLoadInfo.h: Renamed from WebKit/chromium/public/WebResourceRawHeaders.h.
        (WebKit::WebHTTPLoadInfo::WebHTTPLoadInfo):
        (WebKit::WebHTTPLoadInfo::~WebHTTPLoadInfo):
        (WebKit::WebHTTPLoadInfo::operator =):
        * public/WebURLResponse.h:
        * src/WebHTTPLoadInfo.cpp: Renamed from WebKit/chromium/src/WebResourceRawHeaders.cpp.
        (WebKit::WebHTTPLoadInfo::initialize):
        (WebKit::WebHTTPLoadInfo::reset):
        (WebKit::WebHTTPLoadInfo::assign):
        (WebKit::WebHTTPLoadInfo::WebHTTPLoadInfo):
        (WebKit::WebHTTPLoadInfo::operator WTF::PassRefPtr<WebCore::ResourceRawHeaders>):
        (WebKit::WebHTTPLoadInfo::responseCode):
        (WebKit::WebHTTPLoadInfo::setResponseCode):
        (WebKit::WebHTTPLoadInfo::statusText):
        (WebKit::WebHTTPLoadInfo::setStatusText):
        (WebKit::addHeader):
        (WebKit::WebHTTPLoadInfo::addRequestHeader):
        (WebKit::WebHTTPLoadInfo::addResponseHeader):
        * src/WebURLResponse.cpp:
        (WebKit::WebURLResponse::httpLoadInfo):
        (WebKit::WebURLResponse::setHTTPLoadInfo):

2010-11-18  Kent Tamura  <tkent@chromium.org>

        Reviewed by Tony Chang.

        Add more validation message functions
        https://bugs.webkit.org/show_bug.cgi?id=49716

        Add implementations of new functions and symbols for new messages.

        * public/WebLocalizedString.h:
        * src/LocalizedStrings.cpp:
        (WebCore::validationMessageValueMissingForCheckboxText):
        (WebCore::validationMessageValueMissingForFileText):
        (WebCore::validationMessageValueMissingForMultipleFileText):
        (WebCore::validationMessageValueMissingForRadioText):
        (WebCore::validationMessageValueMissingForSelectText):

2010-11-18  Tony Chang  <tony@chromium.org>

        Unreviewed, fix chromium compile.  We need ipc and openssl now.

        * DEPS:

2010-11-18  James Robinson  <jamesr@chromium.org>

        Reviewed by David Levin.

        [chromium] Update chromium DEPS to r66658 to pick up skia roll
        https://bugs.webkit.org/show_bug.cgi?id=49754

        * DEPS:

2010-11-18  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] IndexedDB API cleanup
        https://bugs.webkit.org/show_bug.cgi?id=49733

        Make it so that you can't directly instantiate our "interface"
        classes.  Remove some code for 2 sided merges.

        * public/WebIDBCursor.h:
        (WebKit::WebIDBCursor::WebIDBCursor):
        * public/WebIDBDatabase.h:
        (WebKit::WebIDBDatabase::WebIDBDatabase):
        * public/WebIDBIndex.h:
        (WebKit::WebIDBIndex::WebIDBIndex):
        * public/WebIDBObjectStore.h:
        (WebKit::WebIDBObjectStore::WebIDBObjectStore):
        * public/WebIDBTransaction.h:
        (WebKit::WebIDBTransaction::WebIDBTransaction):
        * src/IDBTransactionBackendProxy.cpp:
        (WebCore::IDBTransactionBackendProxy::IDBTransactionBackendProxy):

2010-11-18  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Yury Semikhatsky.

        Chrome DevTools: minify front-end JavaScript.
        https://bugs.webkit.org/show_bug.cgi?id=49657

        * scripts/concatenate_js_files.py:
        * scripts/jsmin.py: Added.

2010-11-18  Chris Rogers  <crogers@google.com>

        Reviewed by Dimitri Glazkov.

        Add loadPlatformAudioResource() and decodeAudioFileData() to ChromiumBridge
        https://bugs.webkit.org/show_bug.cgi?id=49557

        * WebKit.gyp:
        * public/WebAudioBus.h: Added.
        (WebKit::WebAudioBus::WebAudioBus):
        * public/WebKitClient.h:
        (WebKit::WebKitClient::decodeAudioFileData):
        * src/ChromiumBridge.cpp:
        (WebCore::ChromiumBridge::loadPlatformAudioResource):
        (WebCore::ChromiumBridge::decodeAudioFileData):
        * src/WebAudioBus.cpp: Added.
        (WebKit::WebAudioBus::~WebAudioBus):
        (WebKit::WebAudioBus::initialize):
        (WebKit::WebAudioBus::numberOfChannels):
        (WebKit::WebAudioBus::length):
        (WebKit::WebAudioBus::sampleRate):
        (WebKit::WebAudioBus::channelData):
        (WebKit::WebAudioBus::release):

2010-11-17  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r72228.
        http://trac.webkit.org/changeset/72228
        https://bugs.webkit.org/show_bug.cgi?id=49712

        Caused many >10 regressions on Win and Linux gpu layout test
        runs. (Requested by dave_levin on #webkit).

        * src/WebGraphicsContext3DDefaultImpl.cpp:
        (WebKit::bytesPerComponent):
        (WebKit::componentsPerPixel):
        (WebKit::imageSizeInBytes):
        (WebKit::WebGraphicsContext3DDefaultImpl::texImage2D):

2010-11-17  Dimitri Glazkov  <dglazkov@chromium.org>

        Reviewed by Darin Adler.

        Converge means of querying a parent node into one way, which is Node::parentNode.
        https://bugs.webkit.org/show_bug.cgi?id=49686

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::insertStyleText): Changed to use parentNode.
        (WebKit::WebFrameImpl::setFindEndstateFocusAndSelection): Ditto.

2010-11-16  Zhenyao Mo  <zmo@google.com>

        Reviewed by Kenneth Russell.

        WebGLRenderingContext needs to zero textures and renderbuffers
        https://bugs.webkit.org/show_bug.cgi?id=49355

        * src/WebGraphicsContext3DDefaultImpl.cpp: Don't deal with texture initialization at this level.

2010-11-17  Satish Sampath  <satish@chromium.org>

        Reviewed by Jeremy Orlow.

        Clear the speech input mock explicitly before each test.
        https://bugs.webkit.org/show_bug.cgi?id=49660

        * public/WebSpeechInputControllerMock.h:
        * src/WebSpeechInputControllerMockImpl.cpp:
        (WebKit::WebSpeechInputControllerMockImpl::clearResults): Added method to clear results.
        * src/WebSpeechInputControllerMockImpl.h:

2010-11-17  Eric Uhrhane  <ericu@chromium.org>

        Reviewed by David Levin.

        [Chromium] implementation of async FileWriter for workers
        https://bugs.webkit.org/show_bug.cgi?id=47681

        Tests are in a separate changelist.

        Added new files.
        * WebKit.gyp:

        * src/WorkerAsyncFileSystemChromium.cpp: Added WorkerAsyncFileWriterChromium construction.
        * src/WorkerAsyncFileWriterChromium.cpp: Added.
        * src/WorkerAsyncFileWriterChromium.h: Added.

        This class bridges between the context and main threads for the WorkerAsyncFileWriterChromium.
        * src/WorkerFileWriterCallbacksBridge.cpp: Added.
        * src/WorkerFileWriterCallbacksBridge.h: Added.

2010-11-17  John Mellor  <johnme@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Expose frame flattening setting in WebSettings.
        https://bugs.webkit.org/show_bug.cgi?id=49621

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

2010-11-17  Jonathan Backer  <backer@chromium.org>

        Reviewed by Kenneth Russell.

        [Chromium] Resize initiated by renderer.
        https://bugs.webkit.org/show_bug.cgi?id=49617

        To address synchronization issues with resizing, make resize work like DARWIN.

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

2010-11-17  Stuart Morgan  <stuartmorgan@chromium.org>

        Reviewed by Dimitri Glazkov.

        Fix click count for mouse-up events.
        - clickCount for mouse up was lost in conversion from NSEvent
        - clickCount was also lost when disptaching events through the
        plugin mouse capture event codepath.

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

        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::handleInputEvent):
        * src/mac/WebInputEventFactory.mm:
        (WebKit::WebInputEventFactory::mouseEvent):

2010-11-11  Zhenyao Mo  <zmo@google.com>

        Reviewed by Kenneth Russell.

        Implement UNPACK_COLORSPACE_CONVERSION_WEBGL
        https://bugs.webkit.org/show_bug.cgi?id=47196

        * src/WebImageDecoder.cpp:
        (WebKit::WebImageDecoder::init): Add ignoreGammaAndColorProfile parameter.

2010-11-12  Zhenyao Mo  <zmo@google.com>

        Reviewed by Kenneth Russell.

        Refactor GL backend flags
        https://bugs.webkit.org/show_bug.cgi?id=49460

        * public/WebGraphicsContext3D.h: Remove GL flag queries at this level.
        * src/GraphicsContext3DChromium.cpp: Ditto.
        * src/GraphicsContext3DInternal.h: Ditto.
        * src/WebGraphicsContext3DDefaultImpl.cpp: Ditto.
        * src/WebGraphicsContext3DDefaultImpl.h: Ditto.

2010-11-16  Pavel Feldman  <pfeldman@chromium.org>

        Not reviewed. Chromium build fix.

        * WebKit.gyp:
        * scripts/concatenate_css_files.py: Renamed from WebKit/chromium/Build/concatenate_css_files.py.
        * scripts/concatenate_js_files.py: Renamed from WebKit/chromium/Build/concatenate_js_files.py.
        * scripts/generate_devtools_html.py: Renamed from WebKit/chromium/Build/generate_devtools_html.py.

2010-11-16  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Yury Semikhatsky.

        Chrome DevTools: concatenate CSS files, do not link
        missing JS files in release mode.
        https://bugs.webkit.org/show_bug.cgi?id=49586

        * Build/concatenate_css_files.py: Added.
        * Build/concatenate_js_files.py: Added.
        * Build/generate_devtools_html.py: Added.
        * WebKit.gyp:

2010-11-15  Nat Duca  <nduca@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Make WebWidget actively notify client when compositing enables.
        https://bugs.webkit.org/show_bug.cgi?id=49396

        * public/WebWidgetClient.h:
        (WebKit::WebWidgetClient::didAcceleratedCompositingEnable):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::resize):
        (WebKit::WebViewImpl::paint):
        (WebKit::WebViewImpl::setRootLayerNeedsDisplay):
        (WebKit::WebViewImpl::scrollRootLayerRect):
        (WebKit::WebViewImpl::invalidateRootLayerRect):
        (WebKit::WebViewImpl::setIsAcceleratedCompositingActive):

2010-11-15  Kenneth Russell  <kbr@google.com>

        Reviewed by James Robinson.

        [chromium] Remove assumption that GL functions are function pointers
        https://bugs.webkit.org/show_bug.cgi?id=49486

        Added appropriate extension queries and no longer assume that GL
        function names are function pointers which can be tested.

        * src/WebGraphicsContext3DDefaultImpl.cpp:
        (WebKit::WebGraphicsContext3DDefaultImpl::WebGraphicsContext3DDefaultImpl):
        (WebKit::WebGraphicsContext3DDefaultImpl::initialize):
        (WebKit::WebGraphicsContext3DDefaultImpl::validateAttributes):
        (WebKit::WebGraphicsContext3DDefaultImpl::resolveMultisampledFramebuffer):
        (WebKit::WebGraphicsContext3DDefaultImpl::reshape):
        (WebKit::WebGraphicsContext3DDefaultImpl::generateMipmap):
        (WebKit::WebGraphicsContext3DDefaultImpl::getString):
        * src/WebGraphicsContext3DDefaultImpl.h:

2010-11-15  Ilya Sherman  <isherman@chromium.org>

        Reviewed by Kent Tamura.

        Add capability for displaying warnings to autofill popup
        Warnings are displayed in dark gray italic.
        https://bugs.webkit.org/show_bug.cgi?id=49291
        http://code.google.com/p/chromium/issues/detail?id=58509

        * src/AutoFillPopupMenuClient.cpp:
        (WebKit::AutoFillPopupMenuClient::canRemoveSuggestionAtIndex):
          Updated logic -- can only remove Autocomplete suggestions, which have unique ID 0.
        (WebKit::AutoFillPopupMenuClient::itemIsEnabled): False for warnings.
        (WebKit::AutoFillPopupMenuClient::itemStyle): Dark gray italic for warnings.
        (WebKit::AutoFillPopupMenuClient::menuStyle): Variable name changed.
        (WebKit::AutoFillPopupMenuClient::itemIsWarning): True for unique ID < 0.
        (WebKit::AutoFillPopupMenuClient::initialize): Updated cached styles (see above).
        * src/AutoFillPopupMenuClient.h: Added itemIsEnabled(), variable to cache warning style.
        * src/WebViewImpl.cpp: Minor cleanup.
        (WebKit::WebViewImpl::applyAutoFillSuggestions): 

2010-11-14  Kent Tamura  <tkent@chromium.org>

        Reviewed by Dimitri Glazkov.

        Improve API for form validation message strings
        https://bugs.webkit.org/show_bug.cgi?id=34945

        * public/WebLocalizedString.h:
        * src/LocalizedStrings.cpp:
        (WebCore::validationMessageTypeMismatchForEmailText):
        (WebCore::validationMessageTypeMismatchForMultipleEmailText):
        (WebCore::validationMessageTypeMismatchForURLText):
        (WebCore::validationMessageTooLongText):
        (WebCore::validationMessageRangeUnderflowText):
        (WebCore::validationMessageRangeOverflowText):
        (WebCore::validationMessageStepMismatchText):

2010-11-13  Shinichiro Hamaji  <hamaji@chromium.org>

        Reviewed by Kent Tamura.

        [Chromium] print doesn't work on http://nodejs.org/api.html
        https://bugs.webkit.org/show_bug.cgi?id=49304

        * src/WebFrameImpl.cpp:
        (WebKit::ChromePrintContext::begin):
        (WebKit::WebFrameImpl::printBegin):

2010-11-12  James Simonsen  <simonjam@chromium.org>

        Reviewed by Darin Fisher.

        [Web Timing] Rename interfaces:
        - Navigation -> PerformanceNavigation
        - Timing -> PerformanceTiming
        https://bugs.webkit.org/show_bug.cgi?id=48919

        * src/WebPerformance.cpp:
        (WebKit::WebPerformance::navigationType):

2010-11-12  Zhenyao Mo  <zmo@google.com>

        Reviewed by James Robinson.

        WebGraphicsContext3DDefaultImpl does not run on top of OpenGL ES 2.0 implementations
        https://bugs.webkit.org/show_bug.cgi?id=48282

        Simple fix for a regression introduced in r71793.

        * src/WebGraphicsContext3DDefaultImpl.cpp:
        (WebKit::WebGraphicsContext3DDefaultImpl::initialize):

2010-11-12  Ilya Sherman  <isherman@chromium.org>

        Reviewed by Eric Seidel.

        Remove some trailing whitespace
        https://bugs.webkit.org/show_bug.cgi?id=49433

        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::createPopupMenu):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::scrollRootLayerRect):
        (WebKit::WebViewImpl::invalidateRootLayerRect):

2010-11-11  MORITA Hajime  <morrita@google.com>

        Unreviewed another attempt to fx windows build.

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

2010-11-11  MORITA Hajime <morrita@google.com>

        Unreviewed attempt to fx windows build.

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

2010-11-11  MORITA Hajime  <morrita@google.com>

        Reviewed by Kent Tamura.

        editing/selection/context-menu-on-text.html fails on chromium
        https://bugs.webkit.org/show_bug.cgi?id=45898

        Added makeStringArray(), that is used by DumpRenderTree.
        
        * public/WebBindings.h:
        * src/WebBindings.cpp:
        (WebKit::makeStringArrayImpl): Added.
        (WebKit::WebBindings::makeStringArray): Added.

2010-11-11  Tony Gentilcore  <tonyg@chromium.org>

        Reviewed by Nate Chapin.

        [chromium] Convert WebPerformance doubles to seconds
        https://bugs.webkit.org/show_bug.cgi?id=49232

        This makes them suitable for passing to Time::FromDoubleT().

        * src/WebPerformance.cpp:
        (WebKit::millisecondsToSeconds):
        (WebKit::WebPerformance::navigationStart):
        (WebKit::WebPerformance::unloadEventEnd):
        (WebKit::WebPerformance::redirectStart):
        (WebKit::WebPerformance::redirectEnd):
        (WebKit::WebPerformance::fetchStart):
        (WebKit::WebPerformance::domainLookupStart):
        (WebKit::WebPerformance::domainLookupEnd):
        (WebKit::WebPerformance::connectStart):
        (WebKit::WebPerformance::connectEnd):
        (WebKit::WebPerformance::requestStart):
        (WebKit::WebPerformance::requestEnd):
        (WebKit::WebPerformance::responseStart):
        (WebKit::WebPerformance::responseEnd):
        (WebKit::WebPerformance::loadEventStart):
        (WebKit::WebPerformance::loadEventEnd):

2010-11-11  Hans Wennborg  <hans@chromium.org>

        Reviewed by Jeremy Orlow.

        IndexedDB: signal IDBFactoryBackendInterface destruction to embedder
        https://bugs.webkit.org/show_bug.cgi?id=49313

        Implement ChromiumBridge::idbShutdown(), passing through to the
        WebKitClient.

        * public/WebKitClient.h:
        (WebKit::WebKitClient::idbShutdown):
        * src/ChromiumBridge.cpp:
        (WebCore::ChromiumBridge::idbShutdown):

2010-11-10  Kenneth Russell  <kbr@google.com>

        Reviewed by James Robinson.

        [chromium] Clean up gfx::GetGLImplementation calls in WebGraphicsContext3DDefaultImpl
        https://bugs.webkit.org/show_bug.cgi?id=49336

        * src/WebGraphicsContext3DDefaultImpl.cpp:
        (WebKit::WebGraphicsContext3DDefaultImpl::initialize):
        (WebKit::WebGraphicsContext3DDefaultImpl::reshape):
        (WebKit::WebGraphicsContext3DDefaultImpl::readBackFramebuffer):
        (WebKit::WebGraphicsContext3DDefaultImpl::getIntegerv):

2010-11-10  Evan Stade  <estade@chromium.org>

        Reviewed by Tony Chang.

        [chromium] menu key doesn't work when capslock or numslock is on
        https://bugs.webkit.org/show_bug.cgi?id=49289

        Add a special bitmask for the "input" modifier keys (shift, alt, crtl, meta). The Modifier
        enum has grown to something that might be better termed State, but changing the nomenclature
        now is difficult. The bitmask gets its name from the related function getWebInputModifiers.

        * public/WebInputEvent.h: add InputModifiers mask for true modifier keys
        * src/WebViewImpl.cpp: disregard non-modifier keys
        (WebKit::WebViewImpl::keyEvent):

2010-11-10  Csaba Osztrogonác  <ossy@webkit.org>

        Reviewed by David Hyatt.

        HTML5 Ruby support should be mandatory feature
        https://bugs.webkit.org/show_bug.cgi?id=49272

        Remove Ruby as optional feature.

        * features.gypi:

2010-11-10  Tony Chang  <tony@chromium.org>

        Unreviewed, add libvpx as a chromium dependency.

        This should fix the chromium linux build.

        * DEPS:

2010-11-10  Peter Rybin  <peter.rybin@gmail.com>

        Reviewed by Adam Barth.

        HTML parser should provide script column position within HTML document to JavaScript engine
        https://bugs.webkit.org/show_bug.cgi?id=45271

        Replaces script line number with TextPosition structure.

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::executeScript):
        (WebKit::WebFrameImpl::executeScriptInIsolatedWorld):
        (WebKit::WebFrameImpl::executeScriptAndReturnValue):

2010-11-09  Kenneth Russell  <kbr@google.com>

        Reviewed by James Robinson.

        WebGraphicsContext3DDefaultImpl does not run on top of OpenGL ES 2.0 implementations
        https://bugs.webkit.org/show_bug.cgi?id=48282

        Fixed assumptions in WebGraphicsContext3DDefaultImpl that it was
        running on top of desktop GL.

        Tested various WebGL demos on Windows with ANGLE and
        --in-process-webgl --disable-accelerated-compositing; all are now
        working. Verified that --use-gl=desktop continues to work in the
        same configuration.

        * src/WebGraphicsContext3DDefaultImpl.cpp:
        (WebKit::WebGraphicsContext3DDefaultImpl::WebGraphicsContext3DDefaultImpl):
        (WebKit::WebGraphicsContext3DDefaultImpl::initialize):
        (WebKit::WebGraphicsContext3DDefaultImpl::validateAttributes):
        (WebKit::WebGraphicsContext3DDefaultImpl::resolveMultisampledFramebuffer):
        (WebKit::WebGraphicsContext3DDefaultImpl::isGLES2Compliant):
        (WebKit::WebGraphicsContext3DDefaultImpl::reshape):
        (WebKit::WebGraphicsContext3DDefaultImpl::readBackFramebuffer):
        (WebKit::WebGraphicsContext3DDefaultImpl::getIntegerv):
        (WebKit::WebGraphicsContext3DDefaultImpl::angleValidateShaderSource):
        * src/WebGraphicsContext3DDefaultImpl.h:

2010-11-09  Kent Tamura  <tkent@chromium.org>

        Reviewed by Dimitri Glazkov.

        [Chromium] Add form validation message support to WebLocalizedString.h
        https://bugs.webkit.org/show_bug.cgi?id=49239

        * DEPS: Roll Chromium revision to r65502 to have crrev.com/65502
        * public/WebLocalizedString.h: Add new symbols
        * src/LocalizedStrings.cpp: Call query() with the new symbols in the following functions.
        (WebCore::validationMessageValueMissingText):
        (WebCore::validationMessageTypeMismatchText):
        (WebCore::validationMessagePatternMismatchText):
        (WebCore::validationMessageTooLongText):
        (WebCore::validationMessageRangeUnderflowText):
        (WebCore::validationMessageRangeOverflowText):
        (WebCore::validationMessageStepMismatchText):

2010-11-09  Tony Chang  <tony@chromium.org>

        Unreviewed, rolling chromium DEPS.

        * DEPS: Roll to r65462.

2010-11-09  Mihai Parparita  <mihaip@chromium.org>

        Unreviewed Chromium Windows build fix.

        Add isDisplayNone to the PopupMenuStyle constructor call in
        PopupMenuTest (necessary after r71618).

        * tests/PopupMenuTest.cpp:
        (WebKit::TestPopupMenuClient::itemStyle):

2010-11-09  Shinichiro Hamaji  <hamaji@chromium.org>

        Reviewed by Dimitri Glazkov.

        [Chromium] display:none has no effect on <option> element
        https://bugs.webkit.org/show_bug.cgi?id=49169

        * src/AutoFillPopupMenuClient.cpp:
        (WebKit::AutoFillPopupMenuClient::initialize):

2010-11-09  James Simonsen  <simonjam@chromium.org>

        Reviewed by Dimitri Glazkov.

        [Web Timing] Remove requestEnd
        https://bugs.webkit.org/show_bug.cgi?id=48924

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

2010-11-08  John Knottenbelt  <jknotten@chromium.org>

        Reviewed by Steve Block.

        Convert to and from DOMTimeStamp with converter functions
        https://bugs.webkit.org/show_bug.cgi?id=49066

        * src/WebDataSourceImpl.cpp:
        (WebKit::WebDataSourceImpl::triggeringEventTime):


2010-11-08  Pierre-Antoine LaFayette  <pierre.lafayette@gmail.com>

        Reviewed by Darin Fisher.

        [chromium] Adding hasUserGesture flag to the ResourceRequest
        https://bugs.webkit.org/show_bug.cgi?id=37057

        This flag is to be used on the browser side to indicate when a
        download has been user initiated.

        * public/WebURLRequest.h:
        * src/WebURLRequest.cpp:
        (WebKit::WebURLRequest::hasUserGesture):
        (WebKit::WebURLRequest::setHasUserGesture):

2010-11-08  Jay Civelli  <jcivelli@chromium.org>

        Reviewed by Darin Fisher.

        Add an API to WebViewClient that report the load progress for a frame.
        https://bugs.webkit.org/show_bug.cgi?id=49137

        * public/WebViewClient.h:
        (WebKit::WebViewClient::didChangeLoadProgress):
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::postProgressEstimateChangedNotification):

 2010-11-08  Alexey Proskuryakov  <ap@apple.com>

        Reviewed by Darin Adler.

        https://bugs.webkit.org/show_bug.cgi?id=48685
        Notify UI process about focused frame

        Added an empty implementation of the new ChromeClient method.

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

2010-11-08  Andrey Kosyakov  <caseq@chromium.org>

        Reviewed by Yury Semikhatsky.

        Only call WebInspector_syncDispatch if it's actually a function.
        https://bugs.webkit.org/show_bug.cgi?id=49180

        * src/WebDevToolsFrontendImpl.cpp:
        (WebKit::WebDevToolsFrontendImpl::WebDevToolsFrontendImpl):
        (WebKit::WebDevToolsFrontendImpl::dispatchOnInspectorFrontend):
        * src/WebDevToolsFrontendImpl.h:

2010-11-07  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        Rename Cache to MemoryCache
        https://bugs.webkit.org/show_bug.cgi?id=49159

        * public/WebCache.h:
        * src/WebCache.cpp:
        (WebKit::ToResourceTypeStat):
        (WebKit::WebCache::setCapacities):
        (WebKit::WebCache::clear):
        (WebKit::WebCache::getUsageStats):
        (WebKit::WebCache::getResourceTypeStats):

2010-11-07  Jay Civelli  <jcivelli@chromium.org>

        Reviewed by Kent Tamura.

        Fixing a crasher with the select popup on Mac that happens when a
        page removes the select node when the select changes.
        https://bugs.webkit.org/show_bug.cgi?id=49108

        * src/ExternalPopupMenu.cpp:
        (WebKit::ExternalPopupMenu::didAcceptIndex):
        (WebKit::ExternalPopupMenu::didCancel):

2010-11-06  Pavel Feldman  <pfeldman@chromium.org>

        Not reviewed. Chromium DevTools: disable filesystem inspection
        until polished.
        https://bugs.webkit.org/show_bug.cgi?id=48963

        * src/js/DevTools.js:

2010-11-05  Ilya Sherman  <isherman@chromium.org>

        Reviewed by Simon Fraser.

        Querying selection start and end should be const
        https://bugs.webkit.org/show_bug.cgi?id=48786

        * public/WebInputElement.h:
        * src/WebInputElement.cpp:
        (WebKit::WebInputElement::selectionStart):
        (WebKit::WebInputElement::selectionEnd):

2010-11-05  Chris Marrin  <cmarrin@apple.com>

        Reviewed by Simon Fraser.

        Move resumeAnimations/suspendAnimations from Frame to AnimationController.
        https://bugs.webkit.org/show_bug.cgi?id=49073

        * src/WebAnimationControllerImpl.cpp:
        (WebKit::WebAnimationControllerImpl::suspendAnimations):
        (WebKit::WebAnimationControllerImpl::resumeAnimations):

2010-11-04  Zhenyao Mo  <zmo@google.com>

        Reviewed by Kenneth Russell.

        Need to simulate DEPTH_STENCIL in framebufferRenderbuffer / getFramebufferAttachmentParameter
        https://bugs.webkit.org/show_bug.cgi?id=49020

        * src/WebGraphicsContext3DDefaultImpl.cpp: Remove DEPTH_STENCIL_ATTACHMENT emulation at this level.

2010-11-05  Darin Fisher  <darin@chromium.org>

        Pull chromium@65229 to fix the build.

        * DEPS:

2010-11-05  Darin Fisher  <darin@chromium.org>

        Reviewed by Nate Chapin.

        Replace deprecated TargetIsSub{Frame,Resource} with TargetIsSub{frame,resource}.
        https://bugs.webkit.org/show_bug.cgi?id=49074

        * public/WebURLRequest.h:
        * src/FrameLoaderClientImpl.cpp:

2010-11-05  Charlie Reis  <creis@chromium.org>

        Reviewed by Darin Fisher.

        WebFrame::previousHistoryItem() should return last committed item.
        https://bugs.webkit.org/show_bug.cgi?id=48809

        * src/WebFrameImpl.cpp:

2010-10-27  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Steve Block.

        Clean up IDBTransactionBackend/Coordinator
        https://bugs.webkit.org/show_bug.cgi?id=48425

        Remove obsolete ::id() method.

        * public/WebIDBTransaction.h:
        * src/IDBTransactionBackendProxy.cpp:
        * src/IDBTransactionBackendProxy.h:
        * src/WebIDBTransactionImpl.cpp:
        * src/WebIDBTransactionImpl.h:

2010-11-04  usaini  <usaini08@gmail.com>

        Reviewed by Antonio Gomes.

        WebWindowFeatures has a faulty constructor for WebCore::WindowFeatures
        https://bugs.webkit.org/show_bug.cgi?id=48035

        * public/WebWindowFeatures.h:
        (WebKit::WebWindowFeatures::WebWindowFeatures): updated the constructor
        that takes in a WebCore::WindowFeature and had it copy all the variables
        over properly so that after calling the constructor WebWindowFeatures is
        always in a valid state. Before, the x,y,width,height booleans may be true, but
        the corresponding int values would not be updated.

2010-11-04  Zhenyao Mo  <zmo@google.com>

        Reviewed by Kenneth Russell.

        Remove IMPLEMENTATION_COLOR_READ_FORMAT and TYPE
        https://bugs.webkit.org/show_bug.cgi?id=48938

        * src/WebGraphicsContext3DDefaultImpl.cpp:
        (WebKit::WebGraphicsContext3DDefaultImpl::getIntegerv):

2010-11-04  Kavita Kanetkar  <kkanetkar@chromium.org>

        Reviewed by Adam Barth.

        Web Inspector: Enable files ystem UI for chromium
        https://bugs.webkit.org/show_bug.cgi?id=48963

        * src/js/DevTools.js:

2010-11-03  Adam Barth  <abarth@webkit.org>

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

        * DEPS:

2010-11-03  Vincent Scheib  <scheib@chromium.org>

        Reviewed by James Robinson.

        [chromium] GraphicsContext3D creation attributes include canRecoverFromContextLoss option
        https://bugs.webkit.org/show_bug.cgi?id=48850

        Implementations of GraphicsContext3D may respect the creation attribute
        canRecoverFromContextLoss being false, and then only succeeding initialization if
        the context can satisfy that request of never being lost. DX9 on XP can not satisfy
        such a request.

        Test by use of accelerated canvas 2d in Chromium with ANGLE on XP machines.

        * public/WebGraphicsContext3D.h:
        (WebKit::WebGraphicsContext3D::Attributes::Attributes):
        * src/GraphicsContext3DChromium.cpp:
        (WebCore::GraphicsContext3DInternal::initialize):

2010-11-03  Jenn Braithwaite  <jennb@chromium.org>

        Reviewed by Dmitry Titov.

        Chromium: Update resource tracking when moving a frame between documents
        https://bugs.webkit.org/show_bug.cgi?id=48363

        * public/WebFrameClient.h:
        (WebKit::WebFrameClient::removeIdentifierForRequest):
        Added
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::transferLoadingResourceFromPage):
        Notify current WebFrameClient of the resource and remove from
        former WebFrameClient.

2010-11-03  Adam Barth  <abarth@webkit.org>

        Roll Chromium DEPs
        https://bugs.webkit.org/show_bug.cgi?id=48959

        * DEPS:

2010-11-03  Kenneth Russell  <kbr@google.com>

        Reviewed by Chris Marrin.

        Redesign extension mechanism in GraphicsContext3D
        https://bugs.webkit.org/show_bug.cgi?id=46894

        Upon request, factored out extension support from GraphicsContext3D
        into a new Extensions3D class. (The plural was chosen because the
        class and subclasses hold multiple extensions.)

        Unlike GraphicsContext3D, Extensions3D contains only pure virtual
        methods. This was done because Extensions3D's inheritance diagram
        and usage pattern is very different from that of GraphicsContext3D,
        and the concrete subclasses need to decide how to implement the
        various entry points. Requiring them to be placed at the
        Extensions3D level will cause implementation details to leak into
        the base class, which is highly undesirable. Any virtual call
        overhead to these entry points will be negligible.

        Changed call sites utilizing these extensions to call through the
        Extensions3D object or its subclasses.

        Tested:
         - Chromium on Linux with accelerated 2D canvas and HTML5 video
         - Chromium on Mac OS X with WebGL and CSS 3D content
         - Safari on Mac OS X with WebGL and CSS 3D content

        No new tests. Covered by existing tests.

        * WebKit.gyp:
        * public/WebGraphicsContext3D.h:
        * src/Extensions3DChromium.cpp: Added.
        (WebCore::Extensions3DChromium::Extensions3DChromium):
        (WebCore::Extensions3DChromium::~Extensions3DChromium):
        (WebCore::Extensions3DChromium::supports):
        (WebCore::Extensions3DChromium::getGraphicsResetStatusARB):
        (WebCore::Extensions3DChromium::mapBufferSubDataCHROMIUM):
        (WebCore::Extensions3DChromium::unmapBufferSubDataCHROMIUM):
        (WebCore::Extensions3DChromium::mapTexSubImage2DCHROMIUM):
        (WebCore::Extensions3DChromium::unmapTexSubImage2DCHROMIUM):
        (WebCore::Extensions3DChromium::copyTextureToParentTextureCHROMIUM):
        * src/GraphicsContext3DChromium.cpp:
        (WebCore::GraphicsContext3DInternal::GraphicsContext3DInternal):
        (WebCore::GraphicsContext3DInternal::getExtensions):
        (WebCore::GraphicsContext3DInternal::supportsExtension):
        * src/GraphicsContext3DInternal.h:
        * src/WebGraphicsContext3DDefaultImpl.cpp:
        (WebKit::WebGraphicsContext3DDefaultImpl::copyTextureToParentTextureCHROMIUM):
        (WebKit::WebGraphicsContext3DDefaultImpl::getString):
        * src/WebGraphicsContext3DDefaultImpl.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::composite):

2010-11-03  Daniel Bates  <dbates@rim.com>

        For unnamed frames, window.name returns a generated name
        https://bugs.webkit.org/show_bug.cgi?id=6751

        Part 1 of 2.

        Substitute FrameTree::uniqueName() for FrameTree::name() in the Chromium port.

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::name):

2010-11-02  Al Patrick  <apatrick@chromium.org>

        Reviewed by Kenneth Russell.

        [chromium] Plugin instances can propagate the ID of the OpenGL texture they render to.

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

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

2010-11-02  Kavita Kanetkar  <kkanetkar@chromium.org>

        Reviewed by Dumitru Daniliuc.

        [FileSystem] Support not creating directories when queried by inspector.
        https://bugs.webkit.org/show_bug.cgi?id=48169

        * src/LocalFileSystemChromium.cpp:
        (WebCore::LocalFileSystem::readFileSystem):
        (WebCore::LocalFileSystem::requestFileSystem):

2010-11-02  Chris Guillory  <chris.guillory@google.com>

        Reviewed by Chris Fleizach.

        Chromium: Propagate a document value changed notification on scroll.
        https://bugs.webkit.org/show_bug.cgi?id=48817

        * src/WebAccessibilityObject.cpp:
        (WebKit::WebAccessibilityObject::boundingBoxRect):

2010-10-29  John Abd-El-Malek  <jam@chromium.org>

        Reviewed by Darin Fisher.

        [chromium]: Allow plugins to use optimized scrolling
        https://bugs.webkit.org/show_bug.cgi?id=48660

        * public/WebPluginContainer.h:
        * src/WebPluginContainerImpl.cpp:
        (WebKit::WebPluginContainerImpl::scrollRect):
        * src/WebPluginContainerImpl.h:

2010-11-02  Marc-Antoine Ruel  <maruel@chromium.org>

        Reviewed by Dimitri Glazkov.

        Disable incremental linking for webkit_unit_test and DumpRenderTRee on x86 Windows on chromium build.
        https://bugs.webkit.org/show_bug.cgi?id=48836

        It fails to link otherwise due to lack of virtual address space.

        * WebKit.gyp:

2010-11-02  Ilya Sherman  <isherman@chromium.org>

        Reviewed by Kent Tamura.

        Expose the sendChangeEvent parameter in WebInputElement::setValue() API,
        primarily so that chromium form autofill can fire the onChange event.
        https://bugs.webkit.org/show_bug.cgi?id=48177

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

2010-11-02  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Timothy Hatcher.

        Web Inspector: make properties and event listeners look consistent with the styles section.
        https://bugs.webkit.org/show_bug.cgi?id=48827

        * src/js/devTools.css:

2010-11-01  Tony Chang  <tony@chromium.org>

        Reviewed by Kent Tamura.

        [chromium] Compile TestNetscapePlugin on chromium win
        https://bugs.webkit.org/show_bug.cgi?id=48802

        It creates npTestNetscapePlugin.dll in the build directory, so
        it's not yet loaded by DRT or test_shell.

        * WebKit.gyp:

2010-11-01  Brady Eidson  <beidson@apple.com>

        Reviewed by Anders Carlsson.

        <rdar://problem/7660547> and https://bugs.webkit.org/show_bug.cgi?id=48699
        Context menu support for WebKit 2.

        * src/ChromeClientImpl.h:
        (WebKit::ChromeClientImpl::showContextMenu):

2010-11-01  Pavel Feldman  <pfeldman@chromium.org>

        Not reviewed: Chromium build fix.

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

2010-11-01  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Timothy Hatcher.

        Web Inspector: remove old resources panel.
        https://bugs.webkit.org/show_bug.cgi?id=45657

        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::setApuAgentEnabled):
        * src/WebDevToolsAgentImpl.h:

2010-11-01  Leandro Gracia Gil  <leandrogracia@google.com>

        Reviewed by Jeremy Orlow.

        This is the last part of a 4-sided patch for the language attribute
        in speech text buttons. This patch removes what now is dead code
        and re-enables the layout test introduced by bug 47089.
        https://bugs.webkit.org/show_bug.cgi?id=47420

        * public/WebSpeechInputControllerMock.h:
        * src/WebSpeechInputControllerMockImpl.cpp:
        * src/WebSpeechInputControllerMockImpl.h:

2010-10-31  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Timothy Hatcher.

        Web Inspector: unhide new network and resources panels.
        https://bugs.webkit.org/show_bug.cgi?id=48725

        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::setApuAgentEnabled):

2010-10-29  Daniel Bates  <dbates@rim.com>

        No review, rolling out 70971.
        http://trac.webkit.org/changeset/70971
        https://bugs.webkit.org/show_bug.cgi?id=6751

        Rolling out changeset 70971 <http://trac.webkit.org/changeset/70971> since
        it caused layout test failures on all bots. In particular, the
        child count in a generated frame name differs after this patch. We need
        to look into this further.

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::name):

2010-10-28  Antonio Gomes  <agomes@rim.com>

        Reviewed by Ojan Vafai.

        Needs a "LinuxEditingBehavior", perhaps with a better name
        https://bugs.webkit.org/show_bug.cgi?id=36627

        Added the corresponding Chromium setting to WebCore's EditingUnixBehavior: EditingBehaviorUnix.

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

2010-10-29  Daniel Bates  <dbates@rim.com>

        Reviewed by Adam Barth.

        For unnamed frames, window.name returns a generated name
        https://bugs.webkit.org/show_bug.cgi?id=6751

        Modified Chromium-port to use FrameTree::uniqueName().

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::name):

2010-10-29  Kavita Kanetkar  <kkanetkar@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: FileSystem integration
        https://bugs.webkit.org/show_bug.cgi?id=45982

        * public/WebFileUtilities.h:
        (WebKit::WebFileUtilities::revealFolderInOS):
        * src/ChromiumBridge.cpp:
        (WebCore::ChromiumBridge::revealFolderInOS):


2010-10-29  Darin Adler  <darin@apple.com>

        Reviewed by Sam Weinig.

        Change BackForwardList clients to use BackForwardListImpl to prepare for further refactoring
        https://bugs.webkit.org/show_bug.cgi?id=48574

        * src/BackForwardListClientImpl.h: Use BackForwardListImpl.h.
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::WebViewImpl): Cast to BackForwardList* before calling setClient.

2010-10-28  Michael Nordman  <michaeln@google.com>

        Reviewed by ap.

        [Chrome] Fix an appcache regression introduced in r69226
        https://bugs.webkit.org/show_bug.cgi?id=48592
        Provide a noop method body ApplicationCacheHost::maybeLoadMainResourceForRedirect.

        * src/ApplicationCacheHost.cpp:
        (WebCore::ApplicationCacheHost::maybeLoadMainResourceForRedirect):

2010-10-29  Aaron Colwell  <acolwell@chromium.org>

        Reviewed by James Robinson.

        Fix globalAlpha support when using drawImage() to copy a video frame
        to a 2D canvas context.
        https://bugs.webkit.org/show_bug.cgi?id=48094

        This fix applies the globalAlpha value to the canvas before passing it
        down to the lower layers that don't have access to the graphics
        context. This makes sure that any drawing on the canvas will have the
        proper global alpha value applied.

        * src/WebMediaPlayerClientImpl.cpp:
        (WebKit::WebMediaPlayerClientImpl::paint):

2010-10-29  Alexey Proskuryakov  <ap@apple.com>

        Reviewed by Darin Adler.

        https://bugs.webkit.org/show_bug.cgi?id=48576
        Let WebKit2 client know when a frame is a frameset

        Added a blank implementation of the new FrameLoaderClient method.

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

2010-10-29  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Timothy Hatcher.

        Web Inspector: add close button to network view, make tests pass
        for resource manager on all ports.
        https://bugs.webkit.org/show_bug.cgi?id=48628

        * src/js/Tests.js:

2010-10-29  Csaba Osztrogonác  <ossy@webkit.org>

        Reviewed by Adam Roben and David Kilzer.

        Fix and cleanup of build systems
        https://bugs.webkit.org/show_bug.cgi?id=48342

        * features.gypi: Remove unnecessary ENABLE_SANDBOX.

2010-10-29  Leandro Gracia Gil  <leandrogracia@google.com>

        Reviewed by Jeremy Orlow.

        Patch the current speech input implementation to use the nearest
        language tag. The language is now passed to the startRecognition
        methods so that language-specific recognition could be used. Also added
        a second parameter to setMockSpeechInputResult for the language used in
        speech recognition.
        https://bugs.webkit.org/show_bug.cgi?id=47089

        This is the 2nd of a 4-sided patch in Chromium and WebKit. For more
        details see http://codereview.chromium.org/3615005/show,
        http://codereview.chromium.org/3595018/show and
        https://bugs.webkit.org/show_bug.cgi?id=47420.

        * public/WebSpeechInputController.h:
        (WebKit::WebSpeechInputController::startRecognition):
        * public/WebSpeechInputControllerMock.h:
        * src/SpeechInputClientImpl.cpp:
        (WebKit::SpeechInputClientImpl::create):
        (WebKit::SpeechInputClientImpl::startRecognition):
        * src/SpeechInputClientImpl.h:
        * src/WebSpeechInputControllerMockImpl.cpp:
        (WebKit::WebSpeechInputControllerMockImpl::setMockRecognitionResult):
        (WebKit::WebSpeechInputControllerMockImpl::startRecognition):
        * src/WebSpeechInputControllerMockImpl.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::WebViewImpl):
        * src/WebViewImpl.h:

2010-10-28  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel, Peter Kasting, and Darin Fisher.
        (Eric reviewed the CoreGraphics interactions, Peter reviewed the image
        decoder interaction, and Darin Fisher SGTMed the policy decision.)

        [chromium] Chromium Mac should use WebKit's image decoders
        https://bugs.webkit.org/show_bug.cgi?id=47974

        Enable WebKit's image decoders.

        * features.gypi:

2010-10-28  Mihai Parparita  <mihaip@chromium.org>

        Reviewed by Darin Adler.

        [Chromium] History related tests REGRESSED after r70723
        https://bugs.webkit.org/show_bug.cgi?id=48513

        Since r70723 made BackForwardList::currentItem no longer be virtual,
        we were not reaching the implementation in Chromium's 
        BackForwardListClientImpl, and for Chromium currentItem is not the same
        as itemAtIndex(0).
        
        The fix is to make itemAtIndex(0) have the currentItem() behavior, which
        lets us keep currentItem as non-virtual (and remove its implementation
        from the Chromium side).
        
        This also switches Chromium to use the default implementation of 
        backItem() and forwardItem() (vs. the old stubs that just had
        ASSERT_NOT_REACHED) since they're actually reacheable with Chromium
        code thanks to the calls in FrameLoader::checkDidPerformFirstNavigation.

        * src/BackForwardListClientImpl.cpp:
        (WebKit::BackForwardListClientImpl::itemAtIndex):
        * src/BackForwardListClientImpl.h:

2010-10-28  Kinuko Yasuda  <kinuko@chromium.org>

        Reviewed by David Levin.

        [Chromium] Support FileSystem in chromium DRT
        https://bugs.webkit.org/show_bug.cgi?id=47643
        Update the chromium DEPS to pick up corresponding webkit_support change.
        Also add a temporary glue implementation with FIXME comment to
        WebFrameClient::openFileSystem.

        * DEPS:
        * public/WebFrameClient.h:
        (WebKit::WebFrameClient::openFileSystem):

2010-10-28  Satish Sampath  <satish@chromium.org>

        Reviewed by Steve Block.

        Remove obsolete public/API methods in chromium port
        https://bugs.webkit.org/show_bug.cgi?id=48504

        * public/WebSpeechInputController.h:
        (WebKit::WebSpeechInputController::startRecognition):

2010-10-27  Eric Uhrhane  <ericu@chromium.org>

        Reviewed by David Levin.

        [Chromium] Metadata queries should return full file info, not just modification time
        https://bugs.webkit.org/show_bug.cgi?id=48098

        * src/AssertMatchingEnums.cpp: Ensure WebFileInfo and FileMetadata use the same values for file/directory indicators.
        * src/WebFileSystemCallbacksImpl.cpp:
        (WebKit::WebFileSystemCallbacksImpl::didReadMetadata): Pass through the new information.

2010-10-27  Kenneth Russell  <kbr@google.com>

        Reviewed by Dimitri Glazkov.

        [chromium] WebGL does not work with the compositor in test_shell
        https://bugs.webkit.org/show_bug.cgi?id=48470

        * src/WebGraphicsContext3DDefaultImpl.cpp:
        (WebKit::WebGraphicsContext3DDefaultImpl::resolveMultisampledFramebuffer):
         - Properly restore the draw framebuffer after resolving.
        (WebKit::WebGraphicsContext3DDefaultImpl::prepareTexture):
         - Make the context current before calling resolveMultisampledFramebuffer.

2010-10-27  Stuart Morgan  <stuartmorgan@chromium.org>

        Reviewed by David Levin.

        Include caps lock state when converting NSEvent modifiers to
        WebInputEvent

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

        * src/mac/WebInputEventFactory.mm:
        (WebKit::modifiersFromEvent):

2010-10-27  Chris Rogers  <crogers@google.com>

        Reviewed by James Robinson.

        Add ENABLE_WEB_AUDIO feature enable flag (initially disabled) for Chromium
        https://bugs.webkit.org/show_bug.cgi?id=48465

        * features.gypi:

2010-10-25  Tony Chang  <tony@chromium.org>

        Reviewed by Anders Carlsson.

        compile TestNetscapePlugIn on chromium linux
        https://bugs.webkit.org/show_bug.cgi?id=48274

        * WebKit.gyp: Enable compilation of TestNetscapePlugIn on Linux.

2010-10-27  Satish Sampath  <satish@chromium.org>

        Unreviewed, rolling out r70665.
        http://trac.webkit.org/changeset/70665
        https://bugs.webkit.org/show_bug.cgi?id=47089

        Need to address Alexey's review comments.

        * public/WebSpeechInputController.h:
        (WebKit::WebSpeechInputController::startRecognition):
        * public/WebSpeechInputControllerMock.h:
        * src/SpeechInputClientImpl.cpp:
        (WebKit::SpeechInputClientImpl::startRecognition):
        * src/SpeechInputClientImpl.h:
        * src/WebSpeechInputControllerMockImpl.cpp:
        (WebKit::WebSpeechInputControllerMockImpl::setMockRecognitionResult):
        (WebKit::WebSpeechInputControllerMockImpl::startRecognition):
        * src/WebSpeechInputControllerMockImpl.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::WebViewImpl):
        * src/WebViewImpl.h:

2010-10-27  ZHenyao Mo  <zmo@google.com>

        Reviewed by Kenneth Russell.

        Must enable GL_POINT_SPRITE in GraphicsContext3D implementations
        https://bugs.webkit.org/show_bug.cgi?id=45908

        * src/WebGraphicsContext3DDefaultImpl.cpp: Enable for chromium --in-process-webgl port.
        (WebKit::WebGraphicsContext3DDefaultImpl::initialize):

2010-10-27  Leandro Gracia Gil  <leandrogracia@google.com>

        Reviewed by Jeremy Orlow.

        Patch the current speech input implementation to use the nearest
        language tag. The language is now passed to the startRecognition
        methods so that language-specific recognition could be used. Also added
        a second parameter to setMockSpeechInputResult for the language used in
        speech recognition.
        https://bugs.webkit.org/show_bug.cgi?id=47089

        This is the 2nd of a 4-sided patch in Chromium and WebKit. For more
        details see http://codereview.chromium.org/3615005/show and
        http://codereview.chromium.org/3595018/show. The last of the 4 patches
        depends also on the language tag validation provided by this patch:
        https://bugs.webkit.org/show_bug.cgi?id=48225.

        * public/WebSpeechInputController.h:
        (WebKit::WebSpeechInputController::startRecognition):
        * public/WebSpeechInputControllerMock.h:
        * src/SpeechInputClientImpl.cpp:
        (WebKit::SpeechInputClientImpl::create):
        (WebKit::SpeechInputClientImpl::startRecognition):
        * src/SpeechInputClientImpl.h:
        * src/WebSpeechInputControllerMockImpl.cpp:
        (WebKit::WebSpeechInputControllerMockImpl::setMockRecognitionResult):
        (WebKit::WebSpeechInputControllerMockImpl::startRecognition):
        * src/WebSpeechInputControllerMockImpl.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::WebViewImpl):
        * src/WebViewImpl.h:

2010-10-26  Victoria Kirst  <vrk@google.com>

        Reviewed by David Levin.

        Fix compile when ACCELERATED_COMPOSITING flag is not set
        https://bugs.webkit.org/show_bug.cgi?id=48373

        * src/WebMediaPlayerClientImpl.cpp:
        (WebKit::WebMediaPlayerClientImpl::~WebMediaPlayerClientImpl):
        (WebKit::WebMediaPlayerClientImpl::readyStateChanged):
        (WebKit::WebMediaPlayerClientImpl::load):
        * src/WebMediaPlayerClientImpl.h:

2010-10-26  MORITA Hajime  <morrita@google.com>

        Reviewed by Tony Chang.

        Rolling in r70512 again.
        
        spellcheck='' should be the same as spellcheck="true"
        https://bugs.webkit.org/show_bug.cgi?id=25539

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

2010-10-26  Jenn Braithwaite  <jennb@chromium.org>

        Reviewed by Dmitry Titov.

        Resource tracking failure when trying to move a frame between documents
        https://bugs.webkit.org/show_bug.cgi?id=44713

        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::transferLoadingResourceFromPage):
        Empty method.
        * src/FrameLoaderClientImpl.h:

2010-10-26  Satish Sampath  <satish@chromium.org>

        Reviewed by Jeremy Orlow.

        Add a 'grammar' attribute for speech input.
        https://bugs.webkit.org/show_bug.cgi?id=48339

        To differentiate between various types of speech input, we add a 'x-webkit-grammar' attribute to a
        speech enabled input element. This is passed without validation to the speech recognizer. Typical values
        could be "builtin:search", "builtin:dictation" and even an externally hosted SRGS grammar XML file URI.
        It is up to the recognizer to interpret the value and use it as an aid in recognition.

        * public/WebSpeechInputController.h:
        (WebKit::WebSpeechInputController::startRecognition):
        * src/SpeechInputClientImpl.cpp:
        (WebKit::SpeechInputClientImpl::startRecognition):
        * src/SpeechInputClientImpl.h:
        * src/WebSpeechInputControllerMockImpl.cpp:
        (WebKit::WebSpeechInputControllerMockImpl::startRecognition):
        * src/WebSpeechInputControllerMockImpl.h:

2010-10-26  Hans Wennborg  <hans@chromium.org>

        Reviewed by Jeremy Orlow.

        IndexedDB: update stale comments referring to WebIndexedDatabase.
        https://bugs.webkit.org/show_bug.cgi?id=48325

        WebIndexedDatabase was renamed to WebIDBFactory in
        http://trac.webkit.org/changeset/64344, but some comments referring to
        it were left unchanged.

        * public/WebIDBCursor.h:
        * public/WebIDBDatabase.h:
        * public/WebIDBDatabaseError.h:
        * public/WebIDBIndex.h:
        * public/WebIDBObjectStore.h:
        * public/WebIDBTransaction.h:
        * src/WebIDBDatabaseImpl.h:

2010-10-22  Stephen White  <senorblanco@chromium.org>

        Reviewed by Kenneth Russell.

        Implement copy-texture-to-parent-texture API for WebGraphicsContext3DDefaultImpl.
        https://bugs.webkit.org/show_bug.cgi?id=48152
        
        This allows the in-process implementation to do accelerated canvas and
        accelerated compositing together.  It requires some changes landed
        in chromium 63528, so this patch also rolls chromium DEPS to 63722
        (current LKGR).

        Covered by fast/canvas/arc360.html, and many more when run with
        --accelerated-compositing and --accelerated-2d-canvas.

        * src/WebGraphicsContext3DDefaultImpl.cpp:
        (WebKit::WebGraphicsContext3DDefaultImpl::WebGraphicsContext3DDefaultImpl):
        Add member vars to save the currently-bound texture and for the
        texture-to-texture FBO.
        (WebKit::WebGraphicsContext3DDefaultImpl::~WebGraphicsContext3DDefaultImpl):
        Delete the texture-to-texture FBO on destruction.

        (WebKit::WebGraphicsContext3DDefaultImpl::initialize):
        Generate the texture-to-texture FBO.
        (WebKit::WebGraphicsContext3DDefaultImpl::supportsCopyTextureToParentTextureCHROMIUM):
        Check for support of the glGetTexLevelParameteriv function (required
        for this implementation).
        (WebKit::WebGraphicsContext3DDefaultImpl::copyTextureToParentTextureCHROMIUM):
        Implement the extension:  bind the FBO, bind the child texture, then
        do a glCopyTexImage2D() into the parent texture.
        (WebKit::WebGraphicsContext3DDefaultImpl::bindTexture):
        Record the newly-bound texture in m_boundTexture.
        * src/WebGraphicsContext3DDefaultImpl.h:
        Add the two new member variables.
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::graphicsContext3D):
        Make sure the graphics context is reshaped to the correct size on all
        platforms.

2010-10-26  Alexey Marinichev  <amarinichev@chromium.org>

        Reviewed by Kenneth Russell.

        [chromium] Check getGraphicsResetStatusARB and reinitialize the
        renderer in an error is returned.
        https://bugs.webkit.org/show_bug.cgi?id=47848

        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::composite): added getGraphicsResetStatusARB check
        (WebKit::WebViewImpl::reallocateRenderer): added
        * src/WebViewImpl.h:

2010-10-26  Kenneth Russell  <kbr@google.com>

        Reviewed by Andreas Kling.

        Valgrind failure in GraphicsContext3DInternal::reshape
        https://bugs.webkit.org/show_bug.cgi?id=48284

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

2010-10-26  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Steve Block.

        Fix IndexedDB crashes
        https://bugs.webkit.org/show_bug.cgi?id=48266

        Make WebIDBObjectStoreImpl match the way that WebIDBIndexImpl passes
        in cursor parameters (which is the correct way). KeyRange knows how
        to convert itself to a WebCore type--even if the value is null.

        * src/WebIDBObjectStoreImpl.cpp:
        (WebKit::WebIDBObjectStoreImpl::openCursor):

2010-10-26  Satish Sampath  <satish@chromium.org>

        Reviewed by Steve Block.

        Remove obsolete public/API methods in chromium port.
        https://bugs.webkit.org/show_bug.cgi?id=48330

        * public/WebSpeechInputListener.h:

2010-10-26  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Steve Block.

        Quota for IndexedDB should be per origin not per database
        https://bugs.webkit.org/show_bug.cgi?id=48064

        * public/WebIDBFactory.h:
        * public/WebSecurityOrigin.h:
        * src/WebIDBFactory.cpp:
        (WebKit::WebIDBFactory::databaseFileName):
        * src/WebSecurityOrigin.cpp:
        (WebKit::WebSecurityOrigin::get):

2010-10-26  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r70512.
        http://trac.webkit.org/changeset/70512
        https://bugs.webkit.org/show_bug.cgi?id=48314

        crashes many tests (Requested by inferno-sec on #webkit).

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

2010-10-25  MORITA Hajime  <morrita@google.com>

        Reviewed by Tony Chang.

        spellcheck='' should be the same as spellcheck="true"
        https://bugs.webkit.org/show_bug.cgi?id=25539

        Followed API rename in WebCore.

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

2010-10-25  Satish Sampath  <satish@chromium.org>

        Unreviewed, fix for a build break caused by my earlier patch.

        * public/WebSpeechInputListener.h:
        (WebKit::WebSpeechInputListener::setRecognitionResult): Explicitly invoking the correct constructor.

2010-10-21  Satish Sampath  <satish@chromium.org>

        Reviewed by Jeremy Orlow.

        Allow embedder to pass on all the speech recognition results to the input element.
        https://bugs.webkit.org/show_bug.cgi?id=48068

        * WebKit.gyp: Added new files
        * public/WebSpeechInputListener.h:
        * public/WebSpeechInputResult.h: Added, wrapper around WebCore::SpeechInputResult
        (WebKit::WebSpeechInputResult::WebSpeechInputResult):
        (WebKit::WebSpeechInputResult::~WebSpeechInputResult):
        * src/SpeechInputClientImpl.cpp:
        (WebKit::SpeechInputClientImpl::setRecognitionResult): Accepts an array instead of a single string.
        * src/SpeechInputClientImpl.h:
        * src/WebSpeechInputControllerMockImpl.cpp:
        (WebKit::WebSpeechInputControllerMockImpl::setRecognitionResult):
        * src/WebSpeechInputControllerMockImpl.h:
        * src/WebSpeechInputResult.cpp: Added.
        (WebKit::WebSpeechInputResult::reset):
        (WebKit::WebSpeechInputResult::WebSpeechInputResult):
        (WebKit::WebSpeechInputResult::set):
        (WebKit::WebSpeechInputResult::operator PassRefPtr<WebCore::SpeechInputResult>):

2010-10-25  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r70451.
        http://trac.webkit.org/changeset/70451
        https://bugs.webkit.org/show_bug.cgi?id=48249

        Broke set-unloaded-frame-location.html under Qt (Requested by
        caseq on #webkit).

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::executeScript):
        (WebKit::WebFrameImpl::executeScriptInIsolatedWorld):
        (WebKit::WebFrameImpl::executeScriptAndReturnValue):

2010-10-25  Peter Rybin  <peter.rybin@gmail.com>

        Reviewed by Adam Barth.

        HTML parser should provide script column position within HTML document to JavaScript engine
        https://bugs.webkit.org/show_bug.cgi?id=45271

        Replaces script line number with TextPosition structure.

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::executeScript):
        (WebKit::WebFrameImpl::executeScriptInIsolatedWorld):
        (WebKit::WebFrameImpl::executeScriptAndReturnValue):

2010-10-20  Kinuko Yasuda  <kinuko@chromium.org>

        Reviewed by Jian Li.

        Renumber FileError/FileException error codes per latest File API spec changes
        https://bugs.webkit.org/show_bug.cgi?id=47936

        * public/WebFileError.h:
        * src/AssertMatchingEnums.cpp:
        * src/AsyncFileWriterChromium.cpp:
        (WebCore::AsyncFileWriterChromium::didFail):

2010-10-24  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r70361.
        http://trac.webkit.org/changeset/70361
        https://bugs.webkit.org/show_bug.cgi?id=48217

        Chromium tests NoInitialAutocompleteForReadOnly and
        InitialAutocomplete don't complete (Requested by yuzo on
        #webkit).

        * public/WebDocument.h:

2010-10-22  Jay Civelli  <jcivelli@chromium.org>

        Reviewed by David Levin.

        Turning on the Autocomplete implementation on the Chromium side.
        https://bugs.webkit.org/show_bug.cgi?id=41283

        * public/WebDocument.h:

2010-10-22  Sam Weinig  <sam@webkit.org>

        Reviewed by Anders Carlsson.

        WebKit2 needs to pass the current event modifier flags when requesting a new window
        https://bugs.webkit.org/show_bug.cgi?id=48140

        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::createWindow):
        * src/ChromeClientImpl.h:
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::dispatchCreatePage):
        * src/FrameLoaderClientImpl.h:
        Add NavigationAction parameter.

2010-10-22  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r70301.
        http://trac.webkit.org/changeset/70301
        https://bugs.webkit.org/show_bug.cgi?id=48126

        "Lang attribute layout tests failing" (Requested by satish on
        #webkit).

        * public/WebSpeechInputController.h:
        (WebKit::WebSpeechInputController::startRecognition):
        * public/WebSpeechInputControllerMock.h:
        * src/SpeechInputClientImpl.cpp:
        (WebKit::SpeechInputClientImpl::startRecognition):
        * src/SpeechInputClientImpl.h:
        * src/WebSpeechInputControllerMockImpl.cpp:
        (WebKit::WebSpeechInputControllerMockImpl::setMockRecognitionResult):
        (WebKit::WebSpeechInputControllerMockImpl::startRecognition):
        * src/WebSpeechInputControllerMockImpl.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::WebViewImpl):
        * src/WebViewImpl.h:

2010-10-22  Leandro Gracia Gil  <leandrogracia@google.com>

        Reviewed by Jeremy Orlow.

        Patch the current speech input implementation to use and validate the
        nearest language tag. The language is now passed to the startRecognition
        methods so that language-specific recognition could be used. Also added
        a second parameter to setMockSpeechInputResult for the language used in
        speech recognition.
        https://bugs.webkit.org/show_bug.cgi?id=47089

        This is the 2nd of a 4-sided patch in Chromium and WebKit. For more
        details see http://codereview.chromium.org/3615005/show and
        http://codereview.chromium.org/3595018/show.

        * public/WebSpeechInputController.h:
        (WebKit::WebSpeechInputController::startRecognition):
        * public/WebSpeechInputControllerMock.h:
        * src/SpeechInputClientImpl.cpp:
        (WebKit::SpeechInputClientImpl::create):
        (WebKit::SpeechInputClientImpl::startRecognition):
        * src/SpeechInputClientImpl.h:
        * src/WebSpeechInputControllerMockImpl.cpp:
        (WebKit::WebSpeechInputControllerMockImpl::setMockRecognitionResult):
        (WebKit::WebSpeechInputControllerMockImpl::startRecognition):
        * src/WebSpeechInputControllerMockImpl.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::WebViewImpl):
        * src/WebViewImpl.h:

2010-10-21  Yuzo Fujishima  <yuzo@google.com>

        Unreviewed build fix attempt for Chromium Linux Debug Clang

        * public/WebExternalPopupMenu.h:

2010-10-21  Tony Chang  <tony@chromium.org>

        Reviewed by Dimitri Glazkov.

        [chromium] roll chromium DEPS to include forwarding headers refactor
        https://bugs.webkit.org/show_bug.cgi?id=48097

        * DEPS: Roll chromium forward to include new forwarding headers script
        * WebKit.gyp: This dependency always existed, it's just exposed now
            that the header files are in a different include dir.

2010-10-21  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Yury Semikhatsky.

        Chromium: use dedicated event listener type in EventListenerWrapper.
        https://bugs.webkit.org/show_bug.cgi?id=48059

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

2010-10-21  Jay Civelli  <jcivelli@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Adding an API that allows external
        popup menus, without the use of WebCore::PopupMenuChromium.
        Once this is hooked up in Chromium, the plan is to remove
        entirely the external case from PopupMenuChromium.
        https://bugs.webkit.org/show_bug.cgi?id=46016

        * WebKit.gyp:
        * public/WebExternalPopupMenu.h: Added.
        * public/WebExternalPopupMenuClient.h: Added.
        * public/WebMenuItemInfo.h:
        (WebKit::WebMenuItemInfo::WebMenuItemInfo):
        * public/WebView.h:
        * public/WebViewClient.h:
        (WebKit::WebViewClient::createExternalPopupMenu):
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::createPopupMenu):
        * src/ExternalPopupMenu.cpp: Added.
        * src/ExternalPopupMenu.h: Added.
        * src/WebViewImpl.cpp:
        (WebKit::WebView::setUseExternalPopupMenus):
        (WebKit::WebViewImpl::useExternalPopupMenus):
        * src/WebViewImpl.h:

2010-10-20  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r70165.
        http://trac.webkit.org/changeset/70165
        https://bugs.webkit.org/show_bug.cgi?id=48007

        It broke tests on Qt bot (Requested by Ossy on #webkit).

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::executeScript):
        (WebKit::WebFrameImpl::executeScriptInIsolatedWorld):
        (WebKit::WebFrameImpl::executeScriptAndReturnValue):

2010-10-20  Peter Rybin  <peter.rybin@gmail.com>

        Reviewed by Adam Barth.

        HTML parser should provide script column position within HTML document to JavaScript engine
        https://bugs.webkit.org/show_bug.cgi?id=45271

        Replaces script line number with TextPosition structure.

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::executeScript):
        (WebKit::WebFrameImpl::executeScriptInIsolatedWorld):
        (WebKit::WebFrameImpl::executeScriptAndReturnValue):

2010-10-20  John Abd-El-Malek  <jam@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Fix crash when mousing over scrollview
        https://bugs.webkit.org/show_bug.cgi?id=47956

        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::mouseDidMoveOverElement):
        * src/ChromiumBridge.cpp:
        (WebCore::ChromiumBridge::pluginScriptableObject):
        * src/ContextMenuClientImpl.cpp:
        (WebKit::ContextMenuClientImpl::getCustomMenuFromDefaultItems):
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::redirectDataToPlugin):
        * src/WebPluginContainerImpl.h:
        (WebKit::WebPluginContainerImpl::isPluginContainer):

2010-10-20  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r70149.
        http://trac.webkit.org/changeset/70149
        https://bugs.webkit.org/show_bug.cgi?id=47989

        "Build breaks in mac and win" (Requested by satish on
        #webkit).

        * public/WebSpeechInputController.h:
        (WebKit::WebSpeechInputController::startRecognition):
        * public/WebSpeechInputControllerMock.h:
        * src/SpeechInputClientImpl.cpp:
        (WebKit::SpeechInputClientImpl::startRecognition):
        * src/SpeechInputClientImpl.h:
        * src/WebSpeechInputControllerMockImpl.cpp:
        (WebKit::WebSpeechInputControllerMockImpl::setMockRecognitionResult):
        (WebKit::WebSpeechInputControllerMockImpl::startRecognition):
        * src/WebSpeechInputControllerMockImpl.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::WebViewImpl):
        * src/WebViewImpl.h:

2010-10-20  Leandro Gracia Gil  <leandrogracia@google.com>

        Reviewed by Jeremy Orlow.

        Patch the current speech input implementation to use and validate the
        nearest language tag. The language is now passed to the startRecognition
        methods so that language-specific recognition could be used. Also added
        a second parameter to setMockSpeechInputResult for the language used in
        speech recognition.
        https://bugs.webkit.org/show_bug.cgi?id=47089

        This is the 2nd of a 4-sided patch in Chromium and WebKit. For more
        details see http://codereview.chromium.org/3615005/show and
        http://codereview.chromium.org/3595018/show.

        * public/WebSpeechInputController.h:
        (WebKit::WebSpeechInputController::startRecognition):
        * public/WebSpeechInputControllerMock.h:
        * src/SpeechInputClientImpl.cpp:
        (WebKit::SpeechInputClientImpl::create):
        (WebKit::SpeechInputClientImpl::startRecognition):
        * src/SpeechInputClientImpl.h:
        * src/WebSpeechInputControllerMockImpl.cpp:
        (WebKit::WebSpeechInputControllerMockImpl::setMockRecognitionResult):
        (WebKit::WebSpeechInputControllerMockImpl::startRecognition):
        * src/WebSpeechInputControllerMockImpl.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::WebViewImpl):
        * src/WebViewImpl.h:

2010-10-20  Dirk Schulze  <krit@webkit.org>

        Unreviewed Chromium win build fix.

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

2010-10-20  Dirk Schulze  <krit@webkit.org>

        Reviewed by Nikolas Zimmermann.

        Merge ColorSpace and ImageColorSpace enums
        https://bugs.webkit.org/show_bug.cgi?id=47922

        Renamed ColorSpace enum entries DeviceColorSpace and sRGBColorSpace to ColorSpaceDeviceRGB and ColorSpaceSRGB
        to follow webkit style rules.

        * src/WebFontImpl.cpp:
        (WebKit::WebFontImpl::drawText):
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::paintWithContext):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::doPixelReadbackToCanvas):
        * tests/TransparencyWinTest.cpp:
        (WebCore::TEST):

2010-10-19  Andrey Kosyakov  <caseq@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: expose request/response cookies in HAR
        https://bugs.webkit.org/show_bug.cgi?id=47894

        * src/WebResourceRawHeaders.cpp:
        (WebKit::addHeader): paste coalescent headers using "\n: as a separator instead of ", "

2010-10-19  Tony Chang  <tony@chromium.org>

        Reviewed by Kent Tamura.

        [chromium] Use webkit's TestNetscapePlugIn in DRT mac
        https://bugs.webkit.org/show_bug.cgi?id=47850

        * WebKit.gyp: Copy WebKitTestPlugIn into plugins and add
            GCC_SYMBOLS_PRIVATE_EXTERN: NO to export the symbols.

2010-10-19  Tony Chang  <tony@chromium.org>

        Unreviewed.  Rolling chromium DEPS to 63057 to pick up mac plugin
        loading in DRT.

        * DEPS: bump chromium DEPS to 63057.

2010-10-19  Tony Chang  <tony@chromium.org>

        Reviewed by Kent Tamura.

        [chromium] DumpRenderTree shouldn't put '.' in include path
        https://bugs.webkit.org/show_bug.cgi?id=47877

        * WebKit.gyp: Replace '.' with <(chromium_src_dir) and add public

2010-10-18  Adrienne Walker  <enne@google.com>

        Reviewed by Kenneth Russell.

        Turn off antialiasing when using Mesa during testing.
        https://bugs.webkit.org/show_bug.cgi?id=47697

        * src/WebGraphicsContext3DDefaultImpl.cpp:
        (WebKit::WebGraphicsContext3DDefaultImpl::validateAttributes):

2010-10-18  James Robinson  <jamesr@chromium.org>

        Update the chromium DEPS from 62399 to 62813 to pick up skia fixes

        * DEPS:

2010-10-17  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: Introduce InspectorResourceAgent.h/cpp and ResourceManager.js to
        fill network panel with data.
        https://bugs.webkit.org/show_bug.cgi?id=47779

        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::didReceiveResponse):

2010-10-17  Pascal Massimino  <pascal.massimino@gmail.com>

        Reviewed by Adam Barth.

        Add support for WebP image decoding in ImageDecoder
        using library libwebp-decode library available from
        http://www.webmproject.org/code/

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

        Tests: fast/images/webp-image-decoding.html

        * CMakeLists.txt:
            add platform/image-decoders/webp files and directory
        * GNUmakefile.am:
            add platform/image-decoders/webp directory
        * WebCore.gyp/WebCore.gyp:
            add platform/image-decoders/webp directory
        * WebCore.gypi:
            add platform/image-decoders/webp directory
        * features.gypi:
            add WTF_USE_WEBP=1
        * platform/image-decoders/ImageDecoder.cpp:
        (WebCore::ImageDecoder::create):
            instantiate webp decoder for file starting with 'RIFF????WEBP'
        * platform/image-decoders/webp: Added.
        * platform/image-decoders/webp/WEBPImageDecoder.cpp: Added.
        (WebCore::WEBPImageDecoder::WEBPImageDecoder):
        (WebCore::WEBPImageDecoder::~WEBPImageDecoder):
        (WebCore::WEBPImageDecoder::isSizeAvailable):
        (WebCore::WEBPImageDecoder::frameBufferAtIndex):
        (WebCore::WEBPImageDecoder::decode):
            sub-class handling decoding of webp images
        * platform/image-decoders/webp/WEBPImageDecoder.h: Added.
        (WebCore::WEBPImageDecoder::filenameExtension):
        (WebCore::WEBPImageDecoder::supportsAlpha):
            header for webp-decoder sub-class

2010-10-15  Tony Chang  <tony@chromium.org>

        Reviewed by Kent Tamura.

        [chromium] compile TestNetscapePlugIn on Chromium mac
        https://bugs.webkit.org/show_bug.cgi?id=47633

        * WebKit.gyp:  Add a mac specific target for compiling TestNetscapePlugIn
            Fix an include dir so we can compile in a chromium checkout.

2010-10-15  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r69809.
        http://trac.webkit.org/changeset/69809
        https://bugs.webkit.org/show_bug.cgi?id=47725

        Broke chromium mac compile (Requested by japhet on #webkit).

        * WebKit.gyp:

2010-10-15  Nikolas Zimmermann  <nzimmermann@rim.com>

        Reviewed by Dirk Schulze.

        Replace some String::format() usages by StringConcatenate in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=47714

        * src/BackForwardListClientImpl.cpp:
        (WebKit::BackForwardListClientImpl::itemAtIndex):
        * src/DebuggerAgentManager.cpp:
        (WebKit::DebuggerAgentManager::debugDetach):
        * src/LocalizedStrings.cpp:
        (WebCore::imageTitle):
        * src/WebPageSerializer.cpp:
        (WebKit::WebPageSerializer::generateMetaCharsetDeclaration):
        (WebKit::WebPageSerializer::generateBaseTagDeclaration):

2010-10-14  Wei Jia  <wjia@chromium.org>

        Reviewed by Darin Fisher.

        Retrieve info of lock keys from stashed currentInputEvent which
        is stored by chromium when it passes input event to WebCore.
        Retrieving only when stashed event is a keyboard event, which
        means synthetic KeyboardEvent inherits lock key state from real
        keyboard event.
        https://bugs.webkit.org/show_bug.cgi?id=46518

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

2010-10-14  John Abd-El-Malek  <jam@chromium.org>

        Reviewed by Tony Chang.

        [chromium] null check the widget before sending it data as calling didReceiveData might delete it
        https://bugs.webkit.org/show_bug.cgi?id=47708

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

2010-10-14  Tony Chang  <tony@chromium.org>

        Reviewed by Kent Tamura.

        [chromium] compile TestNetscapePlugIn on Chromium mac
        https://bugs.webkit.org/show_bug.cgi?id=47633

        * WebKit.gyp:  Add a mac specific target for compiling TestNetscapePlugIn

2010-10-13  Kinuko Yasuda  <kinuko@chromium.org>

        Reviewed by Jian Li.

        [Chromium] Enable FILE_SYSTEM by default for chromium
        https://bugs.webkit.org/show_bug.cgi?id=47639

        * features.gypi: Add FILE_SYSTEM=1. Also remove FILE_READER=1
        as it seems to be not used anymore.

2010-10-13  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Nate Chapin.

        IndexedDB should fire some errors synchronously
        https://bugs.webkit.org/show_bug.cgi?id=47530

        * public/WebIDBCursor.h:
        * public/WebIDBDatabase.h:
        (WebKit::WebIDBDatabase::transaction):
        * public/WebIDBFactory.h:
        (WebKit::WebIDBFactory::open):
        * public/WebIDBObjectStore.h:
        * public/WebIDBTransactionCallbacks.h:
        * src/IDBCursorBackendProxy.cpp:
        (WebCore::IDBCursorBackendProxy::update):
        (WebCore::IDBCursorBackendProxy::continueFunction):
        (WebCore::IDBCursorBackendProxy::remove):
        * src/IDBCursorBackendProxy.h:
        * src/IDBDatabaseProxy.cpp:
        (WebCore::IDBDatabaseProxy::createObjectStore):
        (WebCore::IDBDatabaseProxy::removeObjectStore):
        (WebCore::IDBDatabaseProxy::setVersion):
        (WebCore::IDBDatabaseProxy::transaction):
        * src/IDBDatabaseProxy.h:
        * src/IDBIndexBackendProxy.cpp:
        (WebCore::IDBIndexBackendProxy::openCursor):
        (WebCore::IDBIndexBackendProxy::openKeyCursor):
        (WebCore::IDBIndexBackendProxy::get):
        (WebCore::IDBIndexBackendProxy::getKey):
        * src/IDBIndexBackendProxy.h:
        * src/IDBObjectStoreProxy.cpp:
        (WebCore::IDBObjectStoreProxy::get):
        (WebCore::IDBObjectStoreProxy::put):
        (WebCore::IDBObjectStoreProxy::remove):
        (WebCore::IDBObjectStoreProxy::createIndex):
        (WebCore::IDBObjectStoreProxy::index):
        (WebCore::IDBObjectStoreProxy::removeIndex):
        (WebCore::IDBObjectStoreProxy::openCursor):
        * src/IDBObjectStoreProxy.h:
        * src/WebIDBCursorImpl.cpp:
        (WebKit::WebIDBCursorImpl::update):
        (WebKit::WebIDBCursorImpl::continueFunction):
        (WebKit::WebIDBCursorImpl::remove):
        * src/WebIDBCursorImpl.h:
        * src/WebIDBDatabaseImpl.cpp:
        (WebKit::WebIDBDatabaseImpl::createObjectStore):
        (WebKit::WebIDBDatabaseImpl::removeObjectStore):
        (WebKit::WebIDBDatabaseImpl::setVersion):
        (WebKit::WebIDBDatabaseImpl::transaction):
        * src/WebIDBDatabaseImpl.h:
        * src/WebIDBIndexImpl.cpp:
        (WebKit::WebIDBIndexImpl::openObjectCursor):
        (WebKit::WebIDBIndexImpl::openKeyCursor):
        (WebKit::WebIDBIndexImpl::getObject):
        (WebKit::WebIDBIndexImpl::getKey):
        * src/WebIDBIndexImpl.h:
        * src/WebIDBObjectStoreImpl.cpp:
        (WebKit::WebIDBObjectStoreImpl::get):
        (WebKit::WebIDBObjectStoreImpl::put):
        (WebKit::WebIDBObjectStoreImpl::remove):
        (WebKit::WebIDBObjectStoreImpl::createIndex):
        (WebKit::WebIDBObjectStoreImpl::index):
        (WebKit::WebIDBObjectStoreImpl::removeIndex):
        (WebKit::WebIDBObjectStoreImpl::openCursor):
        * src/WebIDBObjectStoreImpl.h:

2010-10-13  Brett Wilson  <brettw@chromium.org>

        Reviewed by Darin Fisher.

        Save and restore the GraphicsContext around setting the clip rect for
        drawing text.
        https://bugs.webkit.org/show_bug.cgi?id=47634

        * src/WebFontImpl.cpp:
        (WebKit::WebFontImpl::drawText):

2010-10-13  Kenneth Russell  <kbr@google.com>

        Reviewed by James Robinson.

        Revert changes to WebViewImpl in r69633
        https://bugs.webkit.org/show_bug.cgi?id=47610

        Revert change to WebViewImpl.cpp in
        http://trac.webkit.org/changeset/69633 which incorrectly used
        PassRefPtr for a local variable instead of RefPtr. This was a fix
        for changes in http://trac.webkit.org/changeset/69619 and
        http://trac.webkit.org/changeset/69624 .

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

2010-10-13  Gavin Barraclough  <barraclough@apple.com>

        Reviewed by Oliver Hunt.

        Bug 43987 - Downloading using XHR is much slower than before

        * src/WebPageSerializerImpl.cpp:
        (WebKit::WebPageSerializerImpl::encodeAndFlushBuffer):

2010-10-13  Adam Barth  <abarth@webkit.org>

        Reviewed by Tony Chang.

        [Chromium] Clean up WebPageSerializerImpl::serialize
        https://bugs.webkit.org/show_bug.cgi?id=47577

        This patch shouldn't have any behavior change.  I'm just trying to
        understand what this code does.

        * src/WebPageSerializerImpl.cpp:
        (WebKit::WebPageSerializerImpl::saveHTMLContentToBuffer):
        (WebKit::WebPageSerializerImpl::encodeAndFlushBuffer):
        (WebKit::WebPageSerializerImpl::serialize):
        * src/WebPageSerializerImpl.h:

2010-10-13  John Knottenbelt  <jknotten@chromium.org>

        Reviewed by Steve Block.

        First step towards client-based Geolocation in Chromium. Build
        fixes for CLIENT_BASED_GEOLOCATION preprocessor feature define.
        https://bugs.webkit.org/show_bug.cgi?id=47586

        * WebKit.gyp:
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::requestGeolocationPermissionForFrame):
        (WebKit::ChromeClientImpl::cancelGeolocationPermissionRequestForFrame):
        * src/ChromiumBridge.cpp:
        * src/WebGeolocationServiceMock.cpp:
        (WebKit::WebGeolocationServiceMock::createWebGeolocationServiceMock):
        (WebKit::WebGeolocationServiceMock::setMockGeolocationPermission):
        (WebKit::WebGeolocationServiceMock::setMockGeolocationPosition):
        (WebKit::WebGeolocationServiceMock::setMockGeolocationError):

2010-10-11  Andrei Popescu  <andreip@google.com>

        Reviewed by Jeremy Orlow.

        [Chromium] Cleanup WebIDBFactory::open once the Chromium plumbing has landed.
        https://bugs.webkit.org/show_bug.cgi?id=47531

        Remove the temporary open() method since the appropriate Chromium plumbing was
        added in http://codereview.chromium.org/3729003/

        * public/WebIDBFactory.h:
        (WebKit::WebIDBFactory::open):

2010-10-13  Adam Barth  <abarth@webkit.org>

        Reviewed by Darin Fisher.

        [Chromium] Clean up SerializeDomParam
        https://bugs.webkit.org/show_bug.cgi?id=47580

        This patch just renames a bunch of the members of this struct to be
        more sensible.  No behavior change, well, except for one struct member
        that wasn't initialized.  I didn't trace through this code to see if
        the uninitialized value was used anywhere, but initializing all the
        values seems like a good idea.

        * src/WebPageSerializerImpl.cpp:
        (WebKit::WebPageSerializerImpl::SerializeDomParam::SerializeDomParam):
        (WebKit::WebPageSerializerImpl::preActionBeforeSerializeOpenTag):
        (WebKit::WebPageSerializerImpl::postActionAfterSerializeOpenTag):
        (WebKit::WebPageSerializerImpl::postActionAfterSerializeEndTag):
        (WebKit::WebPageSerializerImpl::encodeAndFlushBuffer):
        (WebKit::WebPageSerializerImpl::openTagToString):
        (WebKit::WebPageSerializerImpl::endTagToString):
        (WebKit::WebPageSerializerImpl::buildContentForNode):
        * src/WebPageSerializerImpl.h:

2010-10-13  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: stack information is inconsistent between console.trace and runtime errors.
        https://bugs.webkit.org/show_bug.cgi?id=47252

        * DEPS: bump up V8 revision

2010-10-12  Kenneth Russell  <kbr@google.com>

        Unreviewed. Fixes for all WebGL content causing assertion failures
        in Chromium after http://trac.webkit.org/changeset/69619 and
        http://trac.webkit.org/changeset/69624 .

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

2010-10-12  Alok priyadarshi  <alokp@chromium.org>

        Reviewed by Kenneth Russell.

        Remove support for ANGLE SH_VERSION <= 100
        https://bugs.webkit.org/show_bug.cgi?id=47307

        * src/WebGraphicsContext3DDefaultImpl.cpp:
        (WebKit::WebGraphicsContext3DDefaultImpl::angleCreateCompilers):
        (WebKit::WebGraphicsContext3DDefaultImpl::angleValidateShaderSource):

2010-10-12  James Robinson  <jamesr@chromium.org>

        Unreviewed chromium compile fixes for http://trac.webkit.org/changeset/69619.

        * src/GraphicsContext3DChromium.cpp:
        (WebCore::GraphicsContext3D::create):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::setIsAcceleratedCompositingActive):
        * src/WebViewImpl.h:

2010-10-12  Jian Li  <jianli@chromium.org>

        Unreviewed. Bump up revision in order to pick up fix.

        * DEPS:

2010-10-12  Jian Li  <jianli@chromium.org>

        Unreview. Build fix for chromium.

        * public/WebBlobRegistry.h:

2010-10-12  Jian Li  <jianli@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Update WebBlobData to adapt to BlobData change in terms of
        handling string data item.
        https://bugs.webkit.org/show_bug.cgi?id=47423

        Also remove unneeded methods in WebBlobData. WebBlobStorageData.* are
        also removed since they're not longer needed.

        * WebKit.gyp:
        * public/WebBlobData.h:
        * public/WebBlobRegistry.h:
        * public/WebBlobStorageData.h: Removed.
        * public/WebThreadSafeData.h: Added.
        * src/WebBlobData.cpp:
        * src/WebBlobStorageData.cpp: Removed.
        * src/WebThreadSafeData.cpp: Added.

2010-10-12  Kavita Kanetkar  <kkanetkar@chromium.org>

        Reviewed by Dumitru Daniliuc.

        [FileSystem] Add ability to pass a bool to create or not create root path while opening filesystem.
        https://bugs.webkit.org/show_bug.cgi?id=47519

        * public/WebCommonWorkerClient.h:
        (WebKit::WebCommonWorkerClient::openFileSystem):
        * public/WebFrameClient.h:
        (WebKit::WebFrameClient::openFileSystem):

2010-10-12  James Robinson  <jamesr@chromium.org>

        Reviewed by Nate Chapin (in person).

        Fix chromium compile.

        * src/WebPageSerializerImpl.cpp:
        (WebKit::WebPageSerializerImpl::WebPageSerializerImpl):
        (WebKit::WebPageSerializerImpl::serialize):

2010-10-12  Nikolas Zimmermann  <nzimmermann@rim.com>

        Reviewed by Gavin Barraclough.

        Unify JSC::StringBuilder & WebCore::StringBuilder
        https://bugs.webkit.org/show_bug.cgi?id=47538

        * src/LocalizedStrings.cpp:
        (WebCore::imageTitle): Use WTF::StringBuilder.
        * src/WebEntities.cpp:
        (WebKit::WebEntities::convertEntitiesInString): Ditto.
        * src/WebPageSerializerImpl.cpp: Remove useless includes.
        (WebKit::WebPageSerializerImpl::encodeAndFlushBuffer): 
        * src/WebPageSerializerImpl.h: Use WTF::StringBuilder.

2010-10-07  Stephen White  <senorblanco@chromium.org>

        Reviewed by James Robinson.

        [chromium] Zero-out all textures created via WebGraphicsContext3DDefaultImpl::texImage2D().
        https://bugs.webkit.org/show_bug.cgi?id=47178
        
        Covered by fast/canvas/toDataURL-alpha.html, when run with --accelerated-2d-canvas.

        * src/WebGraphicsContext3DDefaultImpl.cpp:
        (WebKit::bytesPerComponent):
        (WebKit::componentsPerPixel):
        (WebKit::imageSizeInBytes):
        (WebKit::WebGraphicsContext3DDefaultImpl::texImage2D):

2010-10-12  Dave Moore  <davemoore@chromium.org>

        Reviewed by Tony Chang.

        Use new WebThemeEngine api on chromium / linux to draw scrollbars.
        https://bugs.webkit.org/show_bug.cgi?id=47473

        * public/WebThemeEngine.h: Removed.
        * chromium/src/ChromiumBridge.cpp:

2010-10-11  Daniel Cheng  <dcheng@chromium.org>

        Reviewed by Tony Chang.

        [chromium] Prepare Clipboard/DragData for transition to new drag-and-drop interface.
        https://bugs.webkit.org/show_bug.cgi?id=44992

        Add a new entry point for drag in to allow a graceful transition
        from the legacy drag and drop model, where all data is copied in at the
        beginning of a drag, to a model where data is retrieved on demand via
        IPCs. The rationale for this is when we begin supporting arbitrary MIME
        types in dataTransfer, we don't want to be copying aribtrary amounts of
        data over for each start drag IPC.

        * public/WebView.h:
        * src/WebDragData.cpp:
        (WebKit::WebDragData::initialize): Use the legacy data object.
        (WebKit::WebDragData::ensureMutable): Change the if to an ASSERT.
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::dragTargetDragEnterNew): New entry point.
        * src/WebViewImpl.h:

2010-10-11  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Nate Chapin.

        [Chromium] Add plumbing for synchronous indexedDB exceptions
        https://bugs.webkit.org/show_bug.cgi?id=47511

        Add a WebExceptionCode file (already run by fishd) and add versions of
        each applicable method that take such a parameter.  A follow up patch
        will be posted with the meat.

        * WebKit.gyp:
        * public/WebExceptionCode.h: Added.
        * public/WebIDBCursor.h:
        (WebKit::WebIDBCursor::update):
        (WebKit::WebIDBCursor::continueFunction):
        (WebKit::WebIDBCursor::remove):
        * public/WebIDBDatabase.h:
        (WebKit::WebIDBDatabase::objectStore):
        (WebKit::WebIDBDatabase::createObjectStore):
        (WebKit::WebIDBDatabase::removeObjectStore):
        (WebKit::WebIDBDatabase::setVersion):
        (WebKit::WebIDBDatabase::transaction):
        * public/WebIDBIndex.h:
        (WebKit::WebIDBIndex::openObjectCursor):
        (WebKit::WebIDBIndex::openKeyCursor):
        (WebKit::WebIDBIndex::getObject):
        (WebKit::WebIDBIndex::getKey):
        * public/WebIDBObjectStore.h:
        (WebKit::WebIDBObjectStore::get):
        (WebKit::WebIDBObjectStore::put):
        (WebKit::WebIDBObjectStore::remove):
        (WebKit::WebIDBObjectStore::createIndex):
        (WebKit::WebIDBObjectStore::index):
        (WebKit::WebIDBObjectStore::removeIndex):
        (WebKit::WebIDBObjectStore::openCursor):

2010-10-11  Andrei Popescu  <andreip@google.com>

        Reviewed by Jeremy Orlow.

        The names of IndexedDB-specific attributes of DOMWindow should be prefixed with 'webkit'.
        https://bugs.webkit.org/show_bug.cgi?id=47508

        * src/WebRuntimeFeatures.cpp:
        (WebKit::WebRuntimeFeatures::enableIndexedDatabase):
        (WebKit::WebRuntimeFeatures::isIndexedDatabaseEnabled):

2010-10-11  Tony Chang  <tony@chromium.org>

        Unreviewed, roll chromium DEPS to pick up Dave's fix for
        scrollbar painting.  This will be needed by an upcoming patch.

        * DEPS:

2010-10-11  Kinuko Yasuda  <kinuko@google.com>

        Reviewed by David Levin.

        Support DirectoryEntry.removeRecursively for FileSystem API
        https://bugs.webkit.org/show_bug.cgi?id=47400

        * src/AsyncFileSystemChromium.cpp:
        (WebCore::AsyncFileSystemChromium::removeRecursively): Added.
        * src/AsyncFileSystemChromium.h:
        * src/WorkerAsyncFileSystemChromium.cpp:
        (WebCore::WorkerAsyncFileSystemChromium::removeRecursively): Added.
        * src/WorkerAsyncFileSystemChromium.h:
        * src/WorkerFileSystemCallbacksBridge.cpp:
        (WebKit::WorkerFileSystemCallbacksBridge::postRemoveRecursivelyToMainThread): Added.
        (WebKit::WorkerFileSystemCallbacksBridge::removeRecursivelyOnMainThread): Added.
        * src/WorkerFileSystemCallbacksBridge.h:

2010-10-09  Varun Jain  <varunjain@chromium.org>

        Reviewed by Darin Fisher.

        Adding one method to the WebView interface: method to inform the
        renderer to scroll the currently focused element into view, for
        instance, when it is hidden due to window resizing.
        Also adding methods to WebNode and WebElement to expose more
        features of the underlying WebCore::Node.
        https://bugs.webkit.org/show_bug.cgi?id=46296

        * public/WebElement.h:
        * public/WebNode.h:
        * public/WebView.h:
        * src/WebElement.h:
        (WebKit::WebElement::isTextFormControlElement):
        * src/WebNode.cpp:
        (WebKit::WebNode::isContentEditable):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::scrollFocusedNodeIntoView):
        * src/WebViewImpl.h:

2010-10-08  Andrei Popescu  <andreip@google.com>

        Reviewed by Jeremy Orlow.

        [Chromium] IDBFactory::open only works in single process mode.
        https://bugs.webkit.org/show_bug.cgi?id=47444

        * public/WebIDBFactory.h:
        (WebKit::WebIDBFactory::open):

2010-10-08  Andrei Popescu  <andreip@google.com>

        Reviewed by Jeremy Orlow.

        IndexedDB does not have a quota mechanism.
        https://bugs.webkit.org/show_bug.cgi?id=47389

        * public/WebIDBFactory.h:
        (WebKit::WebIDBFactory::open):
        * src/IDBFactoryBackendProxy.cpp:
        (WebCore::IDBFactoryBackendProxy::open):
        * src/IDBFactoryBackendProxy.h:
        * src/WebIDBFactoryImpl.cpp:
        (WebKit::WebIDBFactoryImpl::open):
        * src/WebIDBFactoryImpl.h:

2010-10-07  Zhenyao Mo  <zmo@google.com>

        Unreviewed, roll chromium to r61902.

        * DEPS:

2010-10-07  Zhenyao Mo  <zmo@google.com>

        Reviewed by Tony Chang.

        Copy mesa lib into DumpRenderTree bundle in Mac
        https://bugs.webkit.org/show_bug.cgi?id=47385

        * WebKit.gyp:

2010-10-07  Daniel Cheng  <dcheng@chromium.org>

        Reviewed by Tony Chang.

        [chromium] Minor naming cleanup in WebDragData, part 2
        https://bugs.webkit.org/show_bug.cgi?id=47227

        Chromium no longer uses the deprecated methods, so delete them.

        * DEPS:
        * public/WebDragData.h:
        * src/WebDragData.cpp:

2010-10-07  Dave Moore  <davemoore@chromium.org>

        Reviewed by Kent Tamura.

        Add WebThemeEngine api for chromium/linux
        https://bugs.webkit.org/show_bug.cgi?id=47278
        Create new linux specific version of WinThemeEngine.h and move
        existing windows specific one to win directory. Keep old top
        level file until chromium is updated to use the new ones.

        * WebKit.gyp:
        * public/WebThemeEngine.h:
        * src/ChromiumBridge.cpp:

2010-10-07  Andrey Kosyakov  <caseq@chromium.org>

        Reviewed by Yury Semikhatsky.

        Chromium multi-dll build broken due to WebResourceRawHeaders methods lacking WEBKIT_API decl spec
        https://bugs.webkit.org/show_bug.cgi?id=47329

        * public/WebResourceRawHeaders.h:
        (WebKit::WebResourceRawHeaders::WebResourceRawHeaders):
        (WebKit::WebResourceRawHeaders::~WebResourceRawHeaders):
        (WebKit::WebResourceRawHeaders::operator =):
        * src/WebResourceRawHeaders.cpp:
        (WebKit::WebResourceRawHeaders::initialize):
        (WebKit::WebResourceRawHeaders::reset):
        (WebKit::WebResourceRawHeaders::assign):

2010-10-06  Chris Guillory  <chris.guillory@google.com>

        Reviewed by Chris Fleizach.

        Remove unused accessibility functions from webkit.
        https://bugs.webkit.org/attachment.cgi?bugid=46707

        * public/WebAccessibilityCache.h:
        * public/WebViewClient.h:
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::focusedNodeChanged):
        * src/WebAccessibilityCacheImpl.cpp:
        * src/WebAccessibilityCacheImpl.h:

2010-10-06  Kinuko Yasuda  <kinuko@chromium.org>

        Reviewed by David Levin.

        Add FileSystemSync implementation for Worker
        https://bugs.webkit.org/show_bug.cgi?id=47044

        * src/LocalFileSystemChromium.cpp:
        (WebCore::LocalFileSystem::requestFileSystem): Added a new parameter
        for synchronous mode.
        * src/WebFileSystemCallbacksImpl.cpp:
        (WebKit::WebFileSystemCallbacksImpl::WebFileSystemCallbacksImpl): Added
        a parameter for synchronous mode.
        (WebKit::WebFileSystemCallbacksImpl::didOpenFileSystem): Changed to
        creates WorkerAsyncFileSystemChromium with synchronous flag.
        * src/WebFileSystemCallbacksImpl.h:
        * src/WebWorkerBase.cpp:
        (WebKit::WebWorkerBase::openFileSystem): Added a parameter for
        synchronous mode.
        * src/WebWorkerBase.h:
        * src/WorkerAsyncFileSystemChromium.cpp:
        (WebCore::WorkerAsyncFileSystemChromium::WorkerAsyncFileSystemChromium):
        (WebCore::WorkerAsyncFileSystemChromium::waitForOperationToComplete):
        Added.
        (WebCore::WorkerAsyncFileSystemChromium::move):
        (WebCore::WorkerAsyncFileSystemChromium::copy):
        (WebCore::WorkerAsyncFileSystemChromium::remove):
        (WebCore::WorkerAsyncFileSystemChromium::readMetadata):
        (WebCore::WorkerAsyncFileSystemChromium::createFile):
        (WebCore::WorkerAsyncFileSystemChromium::createDirectory):
        (WebCore::WorkerAsyncFileSystemChromium::fileExists):
        (WebCore::WorkerAsyncFileSystemChromium::directoryExists):
        (WebCore::WorkerAsyncFileSystemChromium::readDirectory):
        (WebCore::WorkerAsyncFileSystemChromium::createWorkerFileSystemCallbacksBridge):
        Updated to store the created bridge in a member variable so that
        we can call bridge->stop() later when the RunLoop is terminating.
        * src/WorkerAsyncFileSystemChromium.h:
        (WebCore::WorkerAsyncFileSystemChromium::create): Added a new
        parameter for synchronous mode.

2010-10-06  Andrei Popescu  <andreip@google.com>

        Reviewed by Jeremy Orlow.

        IDBDatabase and IDBObjectStore metadata is not recovered correctly when the setVersion transactions aborts.
        https://bugs.webkit.org/show_bug.cgi?id=47245

        * src/IDBTransactionBackendProxy.cpp:
        (WebCore::IDBTransactionBackendProxy::scheduleTask):
        * src/IDBTransactionBackendProxy.h:

2010-10-06  Victor Wang  <victorw@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Add webkit unit tests to chromium multi-dll build.

        In chromium multi-dll build mode, compile the webkit unit tests
        code in webkit.dll and export an api that runs the tests.

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

        * WebKit.gyp:
        * WebKit.gypi:
        * tests/RunAllTests.cpp:
        (main):
        * tests/WebUnitTests.cpp: Added.
        (WebKit::RunAllUnitTests):
        * tests/WebUnitTests.h: Added.

2010-10-05  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Nate Chapin.

        [Chromium] WebIDBKeyRange should handle null left/right pointers
        https://bugs.webkit.org/show_bug.cgi?id=47247

        * src/WebIDBKeyRange.cpp:
        (WebKit::WebIDBKeyRange::assign):
        (WebKit::WebIDBKeyRange::left):
        (WebKit::WebIDBKeyRange::right):
        (WebKit::WebIDBKeyRange::flags):

2010-10-06  Tony Chang  <tony@chromium.org>

        Unreviewed, rolling out r69202.
        http://trac.webkit.org/changeset/69202
        https://bugs.webkit.org/show_bug.cgi?id=46937

        Broke compile of test_shell

        * DEPS:
        * public/WebDragData.h:
        * src/WebDragData.cpp:
        (WebKit::WebDragData::hasFileNames):
        (WebKit::WebDragData::fileNames):
        (WebKit::WebDragData::setFileNames):
        (WebKit::WebDragData::appendToFileNames):
        (WebKit::WebDragData::fileContentFileName):
        (WebKit::WebDragData::setFileContentFileName):

2010-10-06  Daniel Cheng  <dcheng@chromium.org>

        Reviewed by Tony Chang.

        [chromium] Minor naming cleanup in WebDragData, part 2
        https://bugs.webkit.org/show_bug.cgi?id=46937

        Chromium no longer uses the deprecated methods, so delete them.

        * DEPS:
        * public/WebDragData.h:
        * src/WebDragData.cpp:

2010-09-29  Alpha Lam  <hclam@chromium.org>

        Reviewed by James Robinson.

        Render textures in video frame directly.
        https://bugs.webkit.org/show_bug.cgi?id=46765

        Add getter for accessing textures stored in VideoFrameChromium and WebVideoFrame.
        Also explicitly instruct VideoLayerChromium to release video frame when the owner
        of video frame is going away.

        * public/WebVideoFrame.h:
        * src/AssertMatchingEnums.cpp:
        * src/VideoFrameChromiumImpl.cpp:
        (WebKit::VideoFrameChromiumImpl::texture):
        * src/VideoFrameChromiumImpl.h:
        * src/WebMediaPlayerClientImpl.cpp:
        (WebKit::WebMediaPlayerClientImpl::~WebMediaPlayerClientImpl):
        (WebKit::WebMediaPlayerClientImpl::load):
        * src/WebMediaPlayerClientImpl.h:

2010-10-05  Nat Duca  <nduca@chromium.org>

        Reviewed by James Robinson.

        [chromium] Handle composited root layer invalidations in screenspace,
        fixing the disappearing scrollbar problem.
        https://bugs.webkit.org/show_bug.cgi?id=46864

        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::composite):
        (WebKit::WebViewImpl::scrollRootLayerRect):
        (WebKit::WebViewImpl::invalidateRootLayerRect):
        (WebKit::WebViewImpl::doComposite):

2010-10-05  Kenneth Russell  <kbr@google.com>

        Unreviewed, follow up to 47216. Add newline above "protected:".

        * public/WebFrame.h:

2010-10-05  Kenneth Russell  <kbr@google.com>

        Reviewed by Tony Chang.

        [chromium] Implement layerTreeAsText in DumpRenderTree
        https://bugs.webkit.org/show_bug.cgi?id=47216

        Plumbed Frame::layerTreeAsText through Chromium's WebKit API to
        make it callable from DumpRenderTree.

        No new tests; verified with existing compositor layout tests.

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

2010-10-05  Andrew Wilson  <atwilson@chromium.org>

        Reviewed by Andreas Kling.

        Notification onclick() events don't act like user gestures
        https://bugs.webkit.org/show_bug.cgi?id=47137

        * src/WebNotification.cpp:
        (WebKit::WebNotification::dispatchClickEvent):
        Use UserGestureIndicator to make sure click events are treated like user gestures.

2010-10-05  Alok Priyadarshi  <alokp@chromium.org>

        Reviewed by Kenneth Russell.

        Supported ANGLE SH_VERSION > 100
        https://bugs.webkit.org/show_bug.cgi?id=47024

        * src/WebGraphicsContext3DDefaultImpl.cpp:
        (WebKit::WebGraphicsContext3DDefaultImpl::angleCreateCompilers):
        (WebKit::WebGraphicsContext3DDefaultImpl::angleValidateShaderSource):

2010-10-04  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Nate Chapin.

        Rename get* and open*Cursor per the spec on IDBIndex
        https://bugs.webkit.org/show_bug.cgi?id=46906

        The spec changed so that:
        IDBIndex.get -> getKey
        IDBIndex.getObject -> get
        IDBIndex.openCursor -> openKeyCursor
        IDBIndex.openObjectCursor -> openCursor

        * public/WebIDBIndex.h:
        (WebKit::WebIDBIndex::openCursor):
        (WebKit::WebIDBIndex::openKeyCursor):
        (WebKit::WebIDBIndex::get):
        (WebKit::WebIDBIndex::getKey):
        * src/IDBIndexBackendProxy.cpp:
        (WebCore::IDBIndexBackendProxy::openCursor):
        (WebCore::IDBIndexBackendProxy::openKeyCursor):
        (WebCore::IDBIndexBackendProxy::get):
        (WebCore::IDBIndexBackendProxy::getKey):
        * src/IDBIndexBackendProxy.h:
        * src/WebIDBIndexImpl.cpp:
        (WebKit::WebIDBIndexImpl::openObjectCursor):
        (WebKit::WebIDBIndexImpl::openKeyCursor):
        (WebKit::WebIDBIndexImpl::getObject):
        (WebKit::WebIDBIndexImpl::getKey):
        * src/WebIDBIndexImpl.h:

2010-10-04  Andrei Popescu  <andreip@google.com>

        Reviewed by Jeremy Orlow.

        IDBDatabase::createObjectStore/removeObjectStore and IDBObjectStore::createIndex/removeIndex should be synchronous.
        https://bugs.webkit.org/show_bug.cgi?id=46883

        * public/WebIDBDatabase.h:
        (WebKit::WebIDBDatabase::createObjectStore):
        (WebKit::WebIDBDatabase::removeObjectStore):
        * public/WebIDBObjectStore.h:
        (WebKit::WebIDBObjectStore::createIndex):
        (WebKit::WebIDBObjectStore::removeIndex):
        * src/IDBDatabaseProxy.cpp:
        (WebCore::IDBDatabaseProxy::createObjectStore):
        (WebCore::IDBDatabaseProxy::removeObjectStore):
        * src/IDBDatabaseProxy.h:
        * src/IDBObjectStoreProxy.cpp:
        (WebCore::IDBObjectStoreProxy::createIndex):
        (WebCore::IDBObjectStoreProxy::removeIndex):
        * src/IDBObjectStoreProxy.h:
        * src/WebIDBDatabaseImpl.cpp:
        (WebKit::WebIDBDatabaseImpl::createObjectStore):
        (WebKit::WebIDBDatabaseImpl::removeObjectStore):
        * src/WebIDBDatabaseImpl.h:
        * src/WebIDBObjectStoreImpl.cpp:
        (WebKit::WebIDBObjectStoreImpl::createIndex):
        (WebKit::WebIDBObjectStoreImpl::removeIndex):
        * src/WebIDBObjectStoreImpl.h:

2010-10-04  Andrey Kosyakov  <caseq@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: [Chromium][Extension API] provide tab id of inspected tab in extension API
        https://bugs.webkit.org/show_bug.cgi?id=47080

        * src/js/DevTools.js: Added a way for extension to get tabId of inspected window.
        (WebInspector.platformExtensionAPI):
        (WebInspector.buildPlatformExtensionAPI):
        (WebInspector.setInspectedTabId):

2010-10-04  Tony Gentilcore  <tonyg@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Properly clear WebKit cache when chromium cache is cleared
        https://bugs.webkit.org/show_bug.cgi?id=47119

        Contributed by Ricardo Vargas.

        See: http://code.google.com/p/chromium/issues/detail?id=54336

        * src/WebCache.cpp:
        (WebKit::WebCache::clear):

2010-10-04  Nico Weber  <thakis@chromium.org>

        Reviewed by Kenneth Russell.

        Fix broken C++ in PODInterval and PODIntervalTree
        https://bugs.webkit.org/show_bug.cgi?id=47063

        Change functions to be template specializations, like it's now required
        by PODIntervalTree and friends.

        * tests/PODIntervalTreeTest.cpp:

2010-10-04  Matt Mueller  <mattm@chromium.org>

        Reviewed by Darin Fisher.

        When building under chromium, build libwebkit as the same type (shared
        or static) as chromium.  Fixes problems with multiple calls to global
        initializers/finalizers in shared chromium build.
        https://bugs.webkit.org/show_bug.cgi?id=46762

        * WebKit.gyp:

2010-10-04  Alpha Lam  <hclam@chromium.org>

        Build fix. Not reviewed.

        Remove a function declaration.

        * src/ChromeClientImpl.h:

2010-10-04  Alpha Lam  <hclam@chromium.org>

        Build fix. Not reviewed.

        https://bugs.webkit.org/show_bug.cgi?id=47135
        Add a stub method to make the build happy.

        * src/ApplicationCacheHost.cpp:
        (WebCore::ApplicationCacheHost::stopLoadingInFrame):

2010-10-04  Chris Marrin  <cmarrin@apple.com>

        Reviewed by James Robinson.

        Move SharedGraphicsContext3D from ChromeClient to Page
        https://bugs.webkit.org/show_bug.cgi?id=47113

        * src/ChromeClientImpl.cpp:
        * src/WebViewImpl.cpp:
        * src/WebViewImpl.h:

2010-10-04  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Nate Chapin.

        Implement IndexedDB's oncomplete and ontimeout.
        https://bugs.webkit.org/show_bug.cgi?id=47106

        * public/WebIDBTransactionCallbacks.h:
        (WebKit::WebIDBTransactionCallbacks::id):
        (WebKit::WebIDBTransactionCallbacks::onAbort):
        (WebKit::WebIDBTransactionCallbacks::onComplete):
        (WebKit::WebIDBTransactionCallbacks::onTimeout):
        * src/IDBTransactionCallbacksProxy.cpp:
        (WebCore::IDBTransactionCallbacksProxy::onComplete):
        (WebCore::IDBTransactionCallbacksProxy::onTimeout):
        * src/IDBTransactionCallbacksProxy.h:
        * src/WebIDBTransactionCallbacksImpl.cpp:
        (WebCore::WebIDBTransactionCallbacksImpl::onComplete):
        (WebCore::WebIDBTransactionCallbacksImpl::onTimeout):
        * src/WebIDBTransactionCallbacksImpl.h:

2010-10-04  Adam Barth  <abarth@webkit.org>

        Reviewed by Darin Adler.

        Rename RedirectScheduler to NavigationScheduler
        https://bugs.webkit.org/show_bug.cgi?id=47037

        Update for name change.

        * src/ApplicationCacheHost.cpp:
        (WebCore::ApplicationCacheHost::selectCacheWithManifest):
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::loadJavaScriptURL):

2010-10-01  Victoria Kirst  <vrk@google.com>

        Reviewed by James Robinson.

        Fixing crash when audio media player is destructed
        https://bugs.webkit.org/show_bug.cgi?id=47020

        Creates the VideoLayerChromium layer only if the media player contains
        a video.

        * src/WebMediaPlayerClientImpl.cpp:
        (WebKit::WebMediaPlayerClientImpl::readyStateChanged):
        (WebKit::WebMediaPlayerClientImpl::create):

2010-10-01  Mihai Parparita  <mihaip@chromium.org>

        Reviewed by Nate Chapin.

        [Chromium] Remove WebURLLoaderClient::didFinishLoading(WebURLLoader*)
        https://bugs.webkit.org/show_bug.cgi?id=47008

        Now that WebURLLoaderClient::didFinishLoading(WebURLLoader*) has no
        more callers, it can be removed (requires a Chromium roll to
        http://crrev.com/61206, which actually removed the last usage).

        * DEPS:
        * public/WebURLLoaderClient.h:

2010-10-01  Daniel Cheng  <dcheng@chromium.org>

        Reviewed by Tony Chang.

        [chromium] Minor naming cleanup in WebDragData
        https://bugs.webkit.org/show_bug.cgi?id=46937

        This is a two-part patch--one to add the new methods with normalized
        names that follow general WebKit convention, and a followup patch to
        remove the original methods once Chromium is updated.

        * public/WebDragData.h:
        * src/WebDragData.cpp:
        (WebKit::WebDragData::hasFileNames): renamed to containsFilenames
        (WebKit::WebDragData::fileNames): renamed to filenames
        (WebKit::WebDragData::setFileNames): renamed to setFilenames
        (WebKit::WebDragData::appendToFileNames): renamed to appendToFilenames
        (WebKit::WebDragData::containsFilenames):
        (WebKit::WebDragData::filenames):
        (WebKit::WebDragData::setFilenames):
        (WebKit::WebDragData::appendToFilenames):
        (WebKit::WebDragData::fileContentFileName): renamed to fileContentFilename
        (WebKit::WebDragData::setFileContentFileName): renamed to setFileContentFilename
        (WebKit::WebDragData::fileContentFilename):
        (WebKit::WebDragData::setFileContentFilename):

2010-10-01  Jochen Eisinger  <jochen@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] add an identifier method to WebFrame. The identifier can be used to identify
        a given frame of a view over time. Using a pointer to the WebFrame object is fragile,
        since a new frame might have been allocated at the same address as an old, deleted frame.
        https://bugs.webkit.org/show_bug.cgi?id=46884

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

2010-09-29  John Abd-El-Malek  <jam@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Changes to consolidate plugin zoom
        https://bugs.webkit.org/show_bug.cgi?id=46550

        * public/WebPlugin.h:
        (WebKit::WebPlugin::setZoomLevel):
        * public/WebPluginContainer.h:
        * public/WebView.h:
        * public/WebViewClient.h:
        (WebKit::WebViewClient::zoomLimitsChanged):
        (WebKit::WebViewClient::zoomLevelChanged):
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::createPlugin):
        * src/WebPluginContainerImpl.cpp:
        (WebKit::WebPluginContainerImpl::loadFrameRequest):
        (WebKit::WebPluginContainerImpl::zoomChanged):
        (WebKit::WebPluginContainerImpl::zoomLimitsChanged):
        * src/WebPluginContainerImpl.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::WebViewImpl):
        (WebKit::WebViewImpl::zoomLevel):
        (WebKit::WebViewImpl::setZoomLevel):
        (WebKit::WebViewImpl::zoomLimitsChanged):
        (WebKit::WebViewImpl::fullFramePluginZoomLevelChanged):
        (WebKit::WebView::zoomLevelToZoomFactor):
        (WebKit::WebView::zoomFactorToZoomLevel):
        * src/WebViewImpl.h:

2010-09-30  MORITA Hajime  <morrita@google.com>

        Reviewed by James Robinson.

        [Chromium] build fails unless ACCELERATED_2D_CANVAS defined
        https://bugs.webkit.org/show_bug.cgi?id=46955
        
        Added ifdef guard around SharedGraphicsContext3D.

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

2010-09-30  Alexey Marinichev  <amarinichev@chromium.org>

        Reviewed by Chris Marrin.

        Add GetGraphicsResetStatusARB entry point from ARB_robustness
        extension to GraphicsContext3D
        https://bugs.webkit.org/show_bug.cgi?id=46850

        Added a stub for GraphicsContext3D::getGraphicsResetStatusARB.

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

2010-09-30  Dumitru Daniliuc  <dumi@chromium.org>

        Reviewed by Darin Fisher.

        Remove WebHTTPBody::appendFileRange(..., const WebFileInfo&).

        * public/WebHTTPBody.h:
        * src/WebHTTPBody.cpp:
        (WebKit::WebHTTPBody::elementAt):

2010-09-30  Nico Weber  <thakis@chromium.org>

        Reviewed by Adam Barth.

        [chromium] Fix clang error in KURLTest.cpp
        https://bugs.webkit.org/show_bug.cgi?id=46861

        * tests/KURLTest.cpp:
        (WTF::operator<<):

2010-09-30  Daniel Cheng  <dcheng@chromium.org>

        Reviewed by Tony Chang.

        [chromium] Refactor ChromiumDataObject to use getters/setters.
        https://bugs.webkit.org/show_bug.cgi?id=46559

        This is an intermediate step to converting ChromiumDataObject to use
        callbacks to the browser to retrieve data.

        * public/WebDragData.h:
        * src/WebDragData.cpp:
        (WebKit::WebDragData::initialize):
        (WebKit::WebDragData::url):
        (WebKit::WebDragData::setURL):
        (WebKit::WebDragData::urlTitle):
        (WebKit::WebDragData::setURLTitle):
        (WebKit::WebDragData::downloadMetadata):
        (WebKit::WebDragData::setDownloadMetadata):
        (WebKit::WebDragData::fileExtension):
        (WebKit::WebDragData::setFileExtension):
        (WebKit::WebDragData::hasFileNames):
        (WebKit::WebDragData::fileNames):
        (WebKit::WebDragData::setFileNames):
        (WebKit::WebDragData::appendToFileNames):
        (WebKit::WebDragData::plainText):
        (WebKit::WebDragData::setPlainText):
        (WebKit::WebDragData::htmlText):
        (WebKit::WebDragData::setHTMLText):
        (WebKit::WebDragData::htmlBaseURL):
        (WebKit::WebDragData::setHTMLBaseURL):
        (WebKit::WebDragData::fileContentFileName):
        (WebKit::WebDragData::setFileContentFileName):
        (WebKit::WebDragData::fileContent):
        (WebKit::WebDragData::setFileContent):

2010-09-29  Zhenyao Mo  <zmo@google.com>

        Reviewed by Kenneth Russell.

        glsl-conformance.html on khronos will crash chromium --in-process-webgl
        https://bugs.webkit.org/show_bug.cgi?id=46863

        * src/WebGraphicsContext3DDefaultImpl.cpp: Make ShaderSourceMap as <ShaderID, ShaderSourceEntry*>, so map resizing will be efficient and we don't need to worry about pointer copying.
        (WebKit::WebGraphicsContext3DDefaultImpl::~WebGraphicsContext3DDefaultImpl):
        (WebKit::WebGraphicsContext3DDefaultImpl::compileShader):
        (WebKit::WebGraphicsContext3DDefaultImpl::getShaderiv):
        (WebKit::WebGraphicsContext3DDefaultImpl::getShaderInfoLog):
        (WebKit::WebGraphicsContext3DDefaultImpl::getShaderSource):
        (WebKit::WebGraphicsContext3DDefaultImpl::shaderSource):
        (WebKit::WebGraphicsContext3DDefaultImpl::createShader):
        (WebKit::WebGraphicsContext3DDefaultImpl::deleteShader):
        * src/WebGraphicsContext3DDefaultImpl.h: Ditto.
        (WebKit::WebGraphicsContext3DDefaultImpl::ShaderSourceEntry::ShaderSourceEntry):

2010-09-30  Andrei Popescu  <andreip@google.com>

        Reviewed by Jeremy Orlow.

        [Chromium] WebIDBDatabase and WebIDBObjectStore are missing methods called from Chromium land.
        https://bugs.webkit.org/show_bug.cgi?id=46922
        
        The missing functions were removed in r68795.

        * public/WebIDBDatabase.h:
        (WebKit::WebIDBDatabase::createObjectStore):
        (WebKit::WebIDBDatabase::removeObjectStore):
        * public/WebIDBObjectStore.h:
        (WebKit::WebIDBObjectStore::createIndex):
        (WebKit::WebIDBObjectStore::removeIndex):

2010-09-29  Kenneth Russell  <kbr@google.com>

        Reviewed by Dimitri Glazkov.

        [chromium] Add accelerated compositing support to DumpRenderTree and test_shell
        https://bugs.webkit.org/show_bug.cgi?id=46849

        Added offscreen code path for WebGraphicsContext3DDefaultImpl which
        works with the compositor integration in both DumpRenderTree and
        test_shell, since both pass a non-null WebCanvas* to WebViewImpl::paint
        and thereby trigger the compositor's readback code path. Added support
        for --enable-accelerated-compositing to DumpRenderTree.

        Tested in both test_shell and DumpRenderTree on Linux, the latter by
        modifying a compositing layout test, dumping the pixels and verifying
        that they matched the output when the compositor was active.

        * src/WebGraphicsContext3DDefaultImpl.cpp:
        (WebKit::WebGraphicsContext3DDefaultImpl::WebGraphicsContext3DDefaultImpl):
        (WebKit::WebGraphicsContext3DDefaultImpl::initialize):
        (WebKit::WebGraphicsContext3DDefaultImpl::resolveMultisampledFramebuffer):
        (WebKit::WebGraphicsContext3DDefaultImpl::getPlatformTextureId):
        (WebKit::WebGraphicsContext3DDefaultImpl::prepareTexture):
        (WebKit::WebGraphicsContext3DDefaultImpl::readBackFramebuffer):
        (WebKit::WebGraphicsContext3DDefaultImpl::copyTexImage2D):
        (WebKit::WebGraphicsContext3DDefaultImpl::copyTexSubImage2D):
        (WebKit::WebGraphicsContext3DDefaultImpl::readPixels):
        * src/WebGraphicsContext3DDefaultImpl.h:

2010-09-29  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Steve Block.

        Finished IDBTransaction for IndexedDB
        https://bugs.webkit.org/show_bug.cgi?id=46823

        Plumbing.

        * public/WebIDBCallbacks.h:
        (WebKit::WebIDBCallbacks::onSuccess):
        * public/WebIDBDatabase.h:
        (WebKit::WebIDBDatabase::createObjectStore):
        (WebKit::WebIDBDatabase::removeObjectStore):
        (WebKit::WebIDBDatabase::close):
        * public/WebIDBIndex.h:
        (WebKit::WebIDBIndex::openObjectCursor):
        (WebKit::WebIDBIndex::openCursor):
        (WebKit::WebIDBIndex::getObject):
        (WebKit::WebIDBIndex::get):
        * public/WebIDBObjectStore.h:
        (WebKit::WebIDBObjectStore::get):
        (WebKit::WebIDBObjectStore::put):
        (WebKit::WebIDBObjectStore::remove):
        (WebKit::WebIDBObjectStore::createIndex):
        (WebKit::WebIDBObjectStore::removeIndex):
        (WebKit::WebIDBObjectStore::openCursor):
        * public/WebIDBTransaction.h:
        (WebKit::WebIDBTransaction::id):
        (WebKit::WebIDBTransaction::getIDBTransactionBackendInterface):
        * src/IDBCallbacksProxy.cpp:
        (WebCore::IDBCallbacksProxy::onSuccess):
        * src/IDBCallbacksProxy.h:
        * src/IDBDatabaseProxy.cpp:
        (WebCore::IDBDatabaseProxy::createObjectStore):
        (WebCore::IDBDatabaseProxy::removeObjectStore):
        (WebCore::IDBDatabaseProxy::close):
        * src/IDBDatabaseProxy.h:
        * src/IDBIndexBackendProxy.cpp:
        (WebCore::IDBIndexBackendProxy::openObjectCursor):
        (WebCore::IDBIndexBackendProxy::openCursor):
        (WebCore::IDBIndexBackendProxy::getObject):
        (WebCore::IDBIndexBackendProxy::get):
        * src/IDBIndexBackendProxy.h:
        * src/IDBObjectStoreProxy.cpp:
        (WebCore::IDBObjectStoreProxy::put):
        (WebCore::IDBObjectStoreProxy::remove):
        (WebCore::IDBObjectStoreProxy::createIndex):
        (WebCore::IDBObjectStoreProxy::removeIndex):
        (WebCore::IDBObjectStoreProxy::openCursor):
        * src/IDBObjectStoreProxy.h:
        * src/IDBTransactionBackendProxy.cpp:
        (WebCore::IDBTransactionBackendProxy::IDBTransactionBackendProxy):
        * src/WebIDBCallbacksImpl.cpp:
        (WebCore::WebIDBCallbacksImpl::onSuccess):
        * src/WebIDBCallbacksImpl.h:
        * src/WebIDBDatabaseImpl.cpp:
        (WebKit::WebIDBDatabaseImpl::createObjectStore):
        (WebKit::WebIDBDatabaseImpl::removeObjectStore):
        (WebKit::WebIDBDatabaseImpl::close):
        * src/WebIDBDatabaseImpl.h:
        * src/WebIDBIndexImpl.cpp:
        (WebKit::WebIDBIndexImpl::openCursor):
        (WebKit::WebIDBIndexImpl::openObjectCursor):
        (WebKit::WebIDBIndexImpl::getObject):
        (WebKit::WebIDBIndexImpl::get):
        * src/WebIDBIndexImpl.h:
        * src/WebIDBObjectStoreImpl.cpp:
        (WebKit::WebIDBObjectStoreImpl::put):
        (WebKit::WebIDBObjectStoreImpl::remove):
        (WebKit::WebIDBObjectStoreImpl::createIndex):
        (WebKit::WebIDBObjectStoreImpl::removeIndex):
        (WebKit::WebIDBObjectStoreImpl::openCursor):
        * src/WebIDBObjectStoreImpl.h:

2010-09-29  Andrey Kosyakov  <caseq@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: display headers actually used by network stack in Resources tab
        Added plumbing for raw headers flag and response field between chromium and WebCore.
        https://bugs.webkit.org/show_bug.cgi?id=46092

        * WebKit.gyp:
        * public/WebResourceRawHeaders.h: Added.
        * public/WebURLRequest.h:
        * public/WebURLResponse.h:
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::willSendRequest):
        * src/WebResourceRawHeaders.cpp: Added.
        (WebKit::WebResourceRawHeaders::WebResourceRawHeaders):
        (WebKit::WebResourceRawHeaders::~WebResourceRawHeaders):
        (WebKit::WebResourceRawHeaders::operator WTF::PassRefPtr<WebCore::ResourceRawHeaders>):
        (WebKit::addHeader):
        (WebKit::WebResourceRawHeaders::addRequestHeader):
        (WebKit::WebResourceRawHeaders::addResponseHeader):
        * src/WebURLRequest.cpp:
        (WebKit::WebURLRequest::setReportRawHeaders):
        (WebKit::WebURLRequest::reportRawHeaders):
        * src/WebURLResponse.cpp:
        (WebKit::WebURLResponse::resourceRawHeaders):
        (WebKit::WebURLResponse::setResourceRawHeaders):
        * src/WebURLResponsePrivate.h:

2010-09-30  Avi Drissman  <avi@google.com>

        Reviewed by Kenneth Russell.

        [Chromium] Tabbing into page doesn't always select the first element
        https://bugs.webkit.org/show_bug.cgi?id=46856

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

2010-09-30  Alexey Marinichev  <amarinichev@chromium.org>

        Reviewed by Kenneth Russell.

        Rename chromium's GraphicsContext3D.cpp to match others.
        https://bugs.webkit.org/show_bug.cgi?id=46771

        * WebKit.gyp:
        * src/GraphicsContext3DChromium.cpp: Renamed from WebKit/chromium/src/GraphicsContext3D.cpp.

2010-09-29  Kent Tamura  <tkent@chromium.org>

        Reviewed by Dimitri Glazkov.

        Refactor HTMLInputElement: Make DeprecatedInputType private.
        https://bugs.webkit.org/show_bug.cgi?id=46791

        * src/WebPasswordFormUtils.cpp:
        (WebKit::findPasswordFormFields):
         Accept any text field types as a username field.
        * src/WebSearchableFormData.cpp:
        (WebCore::HasSuitableTextElement):
         Accept any text field types as a search query field.

2010-09-29  Kinuko Yasuda  <kinuko@chromium.org>

        Reviewed by Dumitru Daniliuc.

        Add removeRecursively to WebKit WebFileSystem API
        https://bugs.webkit.org/show_bug.cgi?id=46842

        * public/WebFileSystem.h:
        (WebKit::WebFileSystem::removeRecursively): Added.

2010-09-29  Kinuko Yasuda  <kinuko@chromium.org>

        Reviewed by David Levin.

        Fix DirectoryReader's behavior to trigger only one EntriesCallback per readEntries
        https://bugs.webkit.org/show_bug.cgi?id=46563

        * src/WebFileSystemCallbacksImpl.cpp:
        (WebKit::WebFileSystemCallbacksImpl::didReadDirectory):

2010-09-29  Tony Chang  <tony@chromium.org>

        Reviewed by James Robinson.

        [chromium] enable -Werror for DRT and webkit_unit_tests on Linux
        https://bugs.webkit.org/show_bug.cgi?id=46829

        * WebKit.gyp:
        * tests/ArenaTestHelpers.h:
        (WebCore::ArenaTestHelpers::TrackedAllocator::free):
        * tests/IDBKeyPathTest.cpp:
        (WebCore::checkKeyPath):

2010-09-29  Tony Chang  <tony@chromium.org>

        Reviewed by James Robinson.

        [chromium] enable -Werror on chromium linux webkit
        https://bugs.webkit.org/show_bug.cgi?id=46821

        * WebKit.gyp:
        * src/gtk/WebInputEventFactory.cpp:

2010-09-29  Mihai Parparita  <mihaip@chromium.org>

        Unreviewed removal of unused #define from WebHistory.h.
        Chromium usage of WEBKIT_BUG_40451_IS_FIXED was removed with
        http://crrev.com/50642.

        * public/WebHistoryItem.h:

2010-09-29  Kinuko Yasuda  <kinuko@chromium.org>

        Unreviewed, adding one more missing change from the last patch.
        https://bugs.webkit.org/show_bug.cgi?id=46524

        * WebKit.gyp:

2010-09-29  Kinuko Yasuda  <kinuko@chromium.org>

        Unreviewed, adding the new files that were supposed to be added
        but I missed to include in my previous patch.
        https://bugs.webkit.org/show_bug.cgi?id=46524

        * src/WorkerAsyncFileSystemChromium.cpp: Added.
        * src/WorkerAsyncFileSystemChromium.h: Added.

2010-09-29  Kinuko Yasuda  <kinuko@chromium.org>

        Reviewed by David Levin.

        Bridge all FileSystem operations on Workers to the MainThread
        https://bugs.webkit.org/show_bug.cgi?id=46524

        * src/LocalFileSystemChromium.cpp:
        (WebCore::LocalFileSystem::requestFileSystem): Changed the worker case
        code to create WebFileSystemCallbacksImpl with the current
        ScriptExecutionContext (WorkerContext).
        * src/WebFileSystemCallbacksImpl.cpp:
        (WebKit::WebFileSystemCallbacksImpl::WebFileSystemCallbacksImpl): Added
        a new constructor that takes ScriptExecutionContext (WorkerContext)
        for workers.
        (WebKit::WebFileSystemCallbacksImpl::didOpenFileSystem): Added the
        code for workers that creates WorkerAsyncFileSystemChromium.
        * src/WebFileSystemCallbacksImpl.h:
        * src/WorkerAsyncFileSystemChromium.cpp: Added.
        * src/WorkerAsyncFileSystemChromium.h: Added.
        * src/WorkerFileSystemCallbacksBridge.cpp: Added methods for regular
        file system operations to proxy them to the main thread.
        (WebKit::WorkerFileSystemCallbacksBridge::createForOpenFileSystem):
        (WebKit::WorkerFileSystemCallbacksBridge::createForMove):
        (WebKit::WorkerFileSystemCallbacksBridge::createForCopy):
        (WebKit::WorkerFileSystemCallbacksBridge::createForRemove):
        (WebKit::WorkerFileSystemCallbacksBridge::createForReadMetadata):
        (WebKit::WorkerFileSystemCallbacksBridge::createForCreateFile):
        (WebKit::WorkerFileSystemCallbacksBridge::createForCreateDirectory):
        (WebKit::WorkerFileSystemCallbacksBridge::createForFileExists):
        (WebKit::WorkerFileSystemCallbacksBridge::createForDirectoryExists):
        (WebKit::WorkerFileSystemCallbacksBridge::createForReadDirectory):
        (WebKit::MainThreadFileSystemCallbacks::didSucceed):
        (WebKit::MainThreadFileSystemCallbacks::didReadMetadata):
        (WebKit::MainThreadFileSystemCallbacks::didReadDirectory):
        (WebKit::WorkerFileSystemCallbacksBridge::openFileSystemOnMainThread):
        (WebKit::WorkerFileSystemCallbacksBridge::moveOnMainThread):
        (WebKit::WorkerFileSystemCallbacksBridge::copyOnMainThread):
        (WebKit::WorkerFileSystemCallbacksBridge::removeOnMainThread):
        (WebKit::WorkerFileSystemCallbacksBridge::readMetadataOnMainThread):
        (WebKit::WorkerFileSystemCallbacksBridge::createFileOnMainThread):
        (WebKit::WorkerFileSystemCallbacksBridge::createDirectoryOnMainThread):
        (WebKit::WorkerFileSystemCallbacksBridge::fileExistsOnMainThread):
        (WebKit::WorkerFileSystemCallbacksBridge::directoryExistsOnMainThread):
        (WebKit::WorkerFileSystemCallbacksBridge::readDirectoryOnMainThread):
        (WebKit::WorkerFileSystemCallbacksBridge::didSucceedOnMainThread):
        (WebKit::WorkerFileSystemCallbacksBridge::didReadMetadataOnMainThread):
        (WebKit::WorkerFileSystemCallbacksBridge::didReadDirectoryOnMainThread):
        (WebKit::WorkerFileSystemCallbacksBridge::didSucceedOnWorkerThread):
        (WebKit::WorkerFileSystemCallbacksBridge::didReadMetadataOnWorkerThread):
        (WebKit::WorkerFileSystemCallbacksBridge::didReadDirectoryOnWorkerThread):
        (WebKit::WorkerFileSystemCallbacksBridge::derefIfWorkerIsStopped):
        * src/WorkerFileSystemCallbacksBridge.h:

2010-09-29  Matt Perry  <mpcomplete@chromium.org>

        Reviewed by Darin Fisher.

        Remove obsolete registerExtension variants from chromium port.
        https://bugs.webkit.org/show_bug.cgi?id=46683

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

2010-09-29  Chris Guillory  <chris.guillory@google.com>

        Reviewed by Dimitri Glazkov.

        Add method which checks if a WebAccessibilityObject is in the cache.
        https://bugs.webkit.org/show_bug.cgi?id=46605

        * public/WebAccessibilityCache.h:
        * src/WebAccessibilityCacheImpl.cpp:
        (WebKit::WebAccessibilityCacheImpl::isCached):
        * src/WebAccessibilityCacheImpl.h:

2010-09-29  Anantanarayanan G Iyengar  <ananta@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Honor z-index specified by a plugin
        https://bugs.webkit.org/show_bug.cgi?id=46223
        
        The Chromium plugin code which implements the iframe shim technique
        for overlaying a windowed plugin with content on the page should
        honor the z-index specified on the plugin widget. If the z-index
        here is greater than the enclosing iframe shim then the plugin
        should be displayed over the iframe. Updated the layout test to test
        for this case. Skipped the plugins/iframe-shims.html layout test on
        platforms which don't support it.

        * src/WebPluginContainerImpl.cpp:

2010-09-28  Vangelis Kokkevis  <vangelis@chromium.org>

        Reviewed by Kenneth Russell.

        [chromium] Keep the accelerated compositor around even after a page is
        done using it to avoid startup costs in pages that frequently switch
        the compositor on and off.
        https://bugs.webkit.org/show_bug.cgi?id=45845

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

2010-09-28  Nat Duca  <nduca@chromium.org>

        Reviewed by James Robinson.

        [chromium] invalidateRootLayerRect needs to schedule compositor
        https://bugs.webkit.org/show_bug.cgi?id=46219

        Make sure setRootLayerNedsDisplay is called by root invalidation.
        To avoid confusion about root-layer versus non-root-layer
        behavior, move the root layer damage state to the WebView.

        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::setRootLayerNeedsDisplay):
        (WebKit::WebViewImpl::scrollRootLayerRect):
        (WebKit::WebViewImpl::invalidateRootLayerRect):
        (WebKit::WebViewImpl::doComposite):
        * src/WebViewImpl.h:

2010-09-28  Jenn Braithwaite  <jennb@chromium.org>

        Reviewed by Dmitry Titov.

        Added oldPage param to FrameLoaderClient::didTransferChildFrameToNewDocument.
        https://bugs.webkit.org/show_bug.cgi?id=46663

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

2010-09-28  Andrei Popescu  <andreip@google.com>

        Reviewed by Jeremy Orlow.

        [Chromium] Linking error due to wrong guard in WebIDBTransaction.h
        https://bugs.webkit.org/show_bug.cgi?id=46710

        Remove the wrong guard.

        * public/WebIDBTransaction.h:
        (WebKit::WebIDBTransaction::getIDBTransactionBackendInterface):

2010-09-27  Alpha Lam  <hclam@chromium.org>

        Build fix. Not reviewed.

        Use if instead of switch to avoid compilation error.

        * src/VideoFrameChromiumImpl.cpp:
        (WebKit::VideoFrameChromiumImpl::requiredTextureSize):

2010-09-27  Alpha Lam  <hclam@chromium.org>

        Build fix. Not reviewed.

        Remove constant definitions from this file.

        * src/VideoFrameChromiumImpl.cpp:

2010-09-27  Alpha Lam  <hclam@chromium.org>

        Build fix. Not reviewed.

        Fix warnings again.

        * src/VideoFrameChromiumImpl.cpp:
        (WebKit::VideoFrameChromiumImpl::requiredTextureSize):

2010-09-27  Alpha Lam  <hclam@chromium.org>

        Build fix. Not reviewed.

        Add a default for unhandled cases for switch statement.

        * src/VideoFrameChromiumImpl.cpp:
        (WebKit::VideoFrameChromiumImpl::requiredTextureSize):

2010-09-27  Victoria Kirst  <vrk@google.com>

        Reviewed by James Robinson.

        Fixing constants in VideoFrameChromiumImpl so that it overloads the
        VideoFrameChromium const declarations. Also adding logic such that a
        VideoFrameChromium understands what size its texture should be based
        on frame format.
        https://bugs.webkit.org/show_bug.cgi?id=45069

        * src/VideoFrameChromiumImpl.cpp:

2010-09-27  Vangelis Kokkevis  <vangelis@chromium.org>

        Reviewed by James Robinson.

        [chromium] WebViewImpl now holds a ref counted pointer to the LayerRendererChromium
        to ensure that the compositor does not get destroyed before the layers used
        by it do. This was done to ensure that layers properly clean up their texture
        resources on destruction.
        https://bugs.webkit.org/show_bug.cgi?id=46139

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

2010-09-24  Zhenyao Mo  <zmo@google.com>

        Reviewed by Kenneth Russell.

        Hook up ANGLE with chromium --in-process-webgl port
        https://bugs.webkit.org/show_bug.cgi?id=44309

        * WebKit.gyp: Add angle dependency.
        * src/WebGraphicsContext3DDefaultImpl.cpp: Using angle for shader validation and translation.
        (WebKit::WebGraphicsContext3DDefaultImpl::WebGraphicsContext3DDefaultImpl):
        (WebKit::WebGraphicsContext3DDefaultImpl::~WebGraphicsContext3DDefaultImpl):
        (WebKit::WebGraphicsContext3DDefaultImpl::initialize):
        (WebKit::WebGraphicsContext3DDefaultImpl::compileShader):
        (WebKit::WebGraphicsContext3DDefaultImpl::getIntegerv): Using defined const instead.
        (WebKit::WebGraphicsContext3DDefaultImpl::getShaderiv):
        (WebKit::WebGraphicsContext3DDefaultImpl::getShaderInfoLog):
        (WebKit::WebGraphicsContext3DDefaultImpl::getShaderSource):
        (WebKit::WebGraphicsContext3DDefaultImpl::shaderSource):
        (WebKit::WebGraphicsContext3DDefaultImpl::createShader):
        (WebKit::WebGraphicsContext3DDefaultImpl::deleteShader):
        (WebKit::WebGraphicsContext3DDefaultImpl::angleCreateCompilers):
        (WebKit::WebGraphicsContext3DDefaultImpl::angleDestroyCompilers):
        (WebKit::WebGraphicsContext3DDefaultImpl::angleValidateShaderSource):
        * src/WebGraphicsContext3DDefaultImpl.h: Add necessary data and functions for angle stuff.
        (WebKit::WebGraphicsContext3DDefaultImpl::ShaderSourceEntry::ShaderSourceEntry):
        (WebKit::WebGraphicsContext3DDefaultImpl::ShaderSourceEntry::~ShaderSourceEntry):

2010-09-27  Kinuko Yasuda  <kinuko@chromium.org>

        Reviewed by Adam Barth.

        [Cleanup] Add create method to FileSystemCallbacks to get rid of naked new's
        https://bugs.webkit.org/show_bug.cgi?id=46561

        Also cleanup the callbacks layering to pass AsyncFileSystemCallbacks
        object to LocalFileSystem::requestFileSystem (rather than
        FileSystemCallback and ErrorCallback) so that all the callbacks class
        we pass from WebCore to WebKit/chromium/src will be
        AsyncFileSystemCallbacks.

        * src/LocalFileSystemChromium.cpp:
        (WebCore::LocalFileSystem::requestFileSystem): Changed to take
        AsyncFileSystemCallbacks as (a) callback argument(s).

2010-09-24  Tony Chang  <tony@chromium.org>

        Reviewed by Kent Tamura.

        [chromium] remove unused gtk WebScreenInfoFactory
        https://bugs.webkit.org/show_bug.cgi?id=46526

        AFAICT these files aren't referenced in code or by gyp.

        * WebKit.gyp: Remove duplicate filename.
        * public/gtk/WebScreenInfoFactory.h: Removed.
        * src/gtk/WebScreenInfoFactory.cpp: Removed.

2010-09-26  Mihai Parparita  <mihaip@chromium.org>

        Reviewed by Adam Barth.

        [Chromium] Remove no longer used WebView member functions
        https://bugs.webkit.org/show_bug.cgi?id=46515
        
        With http://crrev.com/60526 there's no longer any Chromium code calling
        the non-static versions of addUserScript and addUserStyleSheet.

        * public/WebView.h:

2010-09-25  Nicolas Weber  <thakis@chromium.org>

        Reviewed by James Robinson.

        [chromium] Fix clang warning/error.
        https://bugs.webkit.org/show_bug.cgi?id=46552

        * src/WorkerFileSystemCallbacksBridge.h:

2010-09-24  Mihai Parparita  <mihaip@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Unnecessary blob dependency in WebKit.gyp
        https://bugs.webkit.org/show_bug.cgi?id=46488
        
        r66322 shouldn't have added a blob dependency by hand to targets in
        WebKit.gyp, instead blob should be a dependency of webkit_support.
        http://crrev.com/59406 did that, so we can now remove these deps.

        * WebKit.gyp:

2010-09-24  Ryosuke Niwa  <rniwa@webkit.org>

        Reviewed by Tony Chang.

        [chromium] Implement TextInputController::firstRectForCharacterRange
        https://bugs.webkit.org/show_bug.cgi?id=38100

        Implemented TextInputController::firstRectForCharacterRange for chromium platform.
        Because the function needs to return an array of integers, added makeIntArray to WebBindings.
        makeIntArray does not take Vector because WebBindings.h is included in plugin glue code
        where it cannot find wtf/Vector.h.

        No new tests are added since we need to implement the same feature in chromium side
        in order to enable any tests that uses this function.

        * public/WebBindings.h:
        * public/WebFrame.h:
        * src/WebBindings.cpp:
        (WebKit::makeIntArrayImpl): Added.
        (WebKit::WebBindings::makeIntArray): Added.
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::firstRectForCharacterRange): Added.
        * src/WebFrameImpl.h:

2010-09-24  Tony Chang  <tony@chromium.org>

        Unreviewed, fix chromium compile after r68276 which renamed
        Render*::minPrefWidth to minPreferredLogicalWidth.

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::contentsPreferredWidth):

2010-09-24  Eric Uhrhane  <ericu@chromium.org>

        Reviewed by David Levin.

        Remove unnecessary parameter from AsyncFileWriterClient::didTruncate
        https://bugs.webkit.org/show_bug.cgi?id=46390

        * public/WebFileWriterClient.h:
        * src/AsyncFileWriterChromium.cpp:
        * src/AsyncFileWriterChromium.h:

2010-09-24  Chris Guillory   <chris.guillory@google.com>

        Reviewed by Chris Fleizach.

        Send webkit accessibility notifications to Chromium.
        https://bugs.webkit.org/show_bug.cgi?id=45156

        * public/WebAccessibilityCache.h:
        * public/WebViewClient.h:
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::focusedNodeChanged):
        (WebKit::ChromeClientImpl::getPopupMenuInfo):
        * src/ChromeClientImpl.h:
        * src/WebAccessibilityCache.cpp:
        (WebKit::WebAccessibilityCache::accessibilityEnabled):

2010-09-23  Kent Tamura  <tkent@chromium.org>

        Reviewed by Dimitri Glazkov.

        [Chromium] Fix some IndexedDB tests for DRT
        https://bugs.webkit.org/show_bug.cgi?id=46444

        * DEPS: Roll Chromium revision to 60394, which added
        WebKitClient::createIDBKeysFromSerializedValuesAndKeyPath() implementation.

2010-09-23  Kinuko Yasuda  <kinuko@chromium.org>

        Unreviewed, another attempt to fix build.  The code didn't have proper if-defs.

        * src/WebWorkerBase.cpp:
        (WebKit::WebWorkerBase::openFileSystem):
        * src/WebWorkerBase.h:
        * src/WorkerFileSystemCallbacksBridge.h:

2010-09-23  Kinuko Yasuda  <kinuko@chromium.org>

        Unreviewed; build fix attempt.

        * src/WebWorkerBase.cpp:
        (WebKit::WebWorkerBase::openFileSystem):
        * src/WorkerFileSystemCallbacksBridge.h:

2010-09-23  Kinuko Yasuda  <kinuko@chromium.org>

        Reviewed by David Levin.

        Add Worker support for FileSystem API
        https://bugs.webkit.org/show_bug.cgi?id=45808

        Added WebWorkerBase::openFileSystem and WebCommonWorkerClient::
        openFileSystem to call in to the browser via Worker stub/proxy
        in the chromium.

        Also added WorkerFileSystemCallbacksBridge class that proxies
        requests and callbacks between from/to worker thread to/from the
        main thread.

        * public/WebCommonWorkerClient.h:
        (WebKit::WebCommonWorkerClient::openFileSystem): Added.
        * src/LocalFileSystemChromium.cpp:
        (WebCore::LocalFileSystem::localFileSystem): Added.
        (WebCore::LocalFileSystem::requestFileSystem): Added implementation
        for workers. In worker case this calls WebWorkerBase::openFileSystem.
        * src/WebWorkerBase.cpp:
        (WebKit::WebWorkerBase::openFileSystem): Added. This is called from
        LocalFileSystem::requestFileSystem on the worker thread and creates
        a bridge to call WebCommonWorkerClient::openFileSystem on the main
        thread.
        * src/WebWorkerBase.h:
        * src/WebWorkerClientImpl.h:
        (WebKit::WebWorkerClientImpl::openFileSystem): Added.
        * src/WorkerFileSystemCallbacksBridge.cpp: Added.
        * src/WorkerFileSystemCallbacksBridge.h: Added.

2010-09-23  Tony Chang  <tony@chromium.org>

        Reviewed by Dimitri Glazkov.

        [chromium] implement layoutTestController.sampleSVGAnimationForElementAtTime
        https://bugs.webkit.org/show_bug.cgi?id=46426

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

2010-09-23  Tony Chang  <tony@chromium.org>

        Reviewed by David Levin.

        [chromium] add caretBrowsingEnabled to WebSettings and DRT
        https://bugs.webkit.org/show_bug.cgi?id=46388

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

2010-09-23  Eric Uhrhane  <ericu@chromium.org>

        Reviewed by David Levin.

        Rename FileWriterClient to AsyncFileWriterClient.
        https://bugs.webkit.org/show_bug.cgi?id=46325

        * src/AsyncFileSystemChromium.cpp:
        * src/AsyncFileSystemChromium.h:
        * src/AsyncFileWriterChromium.cpp:
        * src/AsyncFileWriterChromium.h:

2010-09-23  Nate Chapin  <japhet@chromium.org>

        Reviewed by Darin Fisher.

        Add hyperlink auditing settings (i.e., <a ping>).
        https://bugs.webkit.org/show_bug.cgi?id=30458

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

2010-09-23  Andrey Kosyakov  <caseq@chromium.org>

        Unreviewed build fix ("WTF/" -> "wtf/" in include, broke Arm build)

        * src/AsyncFileWriterChromium.h:

2010-09-08  Tony Gentilcore  <tonyg@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Add chromium port API for accessing Web Timing information
        https://bugs.webkit.org/show_bug.cgi?id=45428

        * WebKit.gyp:
        * public/WebFrame.h:
        * public/WebPerformance.h: Added.
        (WebKit::WebPerformance::WebPerformance):
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::performance):
        * src/WebFrameImpl.h:
        * src/WebPerformance.cpp: Added.
        (WebKit::WebPerformance::WebPerformance):
        (WebKit::WebPerformance::~WebPerformance):
        (WebKit::WebPerformance::operator=):
        (WebKit::WebPerformance::navigationType):
        (WebKit::WebPerformance::navigationStart):
        (WebKit::WebPerformance::unloadEventEnd):
        (WebKit::WebPerformance::redirectStart):
        (WebKit::WebPerformance::redirectEnd):
        (WebKit::WebPerformance::redirectCount):
        (WebKit::WebPerformance::fetchStart):
        (WebKit::WebPerformance::domainLookupStart):
        (WebKit::WebPerformance::domainLookupEnd):
        (WebKit::WebPerformance::connectStart):
        (WebKit::WebPerformance::connectEnd):
        (WebKit::WebPerformance::requestStart):
        (WebKit::WebPerformance::requestEnd):
        (WebKit::WebPerformance::responseStart):
        (WebKit::WebPerformance::responseEnd):
        (WebKit::WebPerformance::loadEventStart):
        (WebKit::WebPerformance::loadEventEnd):
        (WebKit::WebPerformance::operator PassRefPtr<Performance>):

2010-09-23  Andrei Popescu  <andreip@google.com>

        Reviewed by Jeremy Orlow.

        IDBObjectStore::get should run in a transaction.
        https://bugs.webkit.org/show_bug.cgi?id=44700

        * public/WebIDBFactory.h:
        * public/WebIDBObjectStore.h:
        * public/WebIDBTransaction.h:
        (WebKit::WebIDBTransaction::didCompleteTaskEvents):
        (WebKit::WebIDBTransaction::getIDBTransactionBackendInterface):
        * src/IDBDatabaseProxy.h:
        * src/IDBFactoryBackendProxy.cpp:
        * src/IDBFactoryBackendProxy.h:
        * src/IDBObjectStoreProxy.cpp:
        (WebCore::IDBObjectStoreProxy::get):
        * src/IDBObjectStoreProxy.h:
        * src/IDBTransactionBackendProxy.cpp:
        (WebCore::IDBTransactionBackendProxy::scheduleTask):
        (WebCore::IDBTransactionBackendProxy::didCompleteTaskEvents):
        * src/IDBTransactionBackendProxy.h:
        (WebCore::IDBTransactionBackendProxy::getWebIDBTransaction):
        * src/WebIDBFactoryImpl.cpp:
        * src/WebIDBFactoryImpl.h:
        * src/WebIDBObjectStoreImpl.cpp:
        (WebKit::WebIDBObjectStoreImpl::get):
        * src/WebIDBObjectStoreImpl.h:
        * src/WebIDBTransactionImpl.cpp:
        (WebKit::WebIDBTransactionImpl::didCompleteTaskEvents):
        (WebKit::WebIDBTransactionImpl::getIDBTransactionBackendInterface):
        * src/WebIDBTransactionImpl.h:

2010-09-23  Jeremy Orlow  <jorlow@chromium.org>

        Unreviewed small fix for my last patch.

        * public/WebIDBTransaction.h:
        (WebKit::WebIDBTransaction::id):

2010-09-22  Mihai Parparita  <mihaip@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] User style layout tests don't pass on Chromium
        https://bugs.webkit.org/show_bug.cgi?id=46069
        
        Expose UserStyleInjectionTime in WebView.

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

2010-09-22  James Robinson  <jamesr@chromium.org>

        [chromium] Re-synchronizes features.gypi with upstream feature_overrides.gypi.

        * features.gypi:

2010-09-22  Ruben  <chromium@hybridsource.org>

        Reviewed by Tony Chang.

        [chromium] added ifdefs for FreeBSD support
        https://bugs.webkit.org/show_bug.cgi?id=46316

        * WebKit.gyp:
        * features.gypi:
        * src/ChromiumBridge.cpp:
        * src/WebFrameImpl.cpp:
        (WebKit::ChromePrintContext::spoolPage):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::mouseDown):
        (WebKit::WebViewImpl::mouseUp):
        (WebKit::WebViewImpl::keyEvent):
        (WebKit::WebViewImpl::setScrollbarColors):
        (WebKit::WebViewImpl::setSelectionColors):

2010-09-22  Eric Uhrhane  <ericu@chromium.org>

        Reviewed by Dumitru Daniliuc.

        Add Chromium implementation for FileWriter
        https://bugs.webkit.org/show_bug.cgi?id=44361

        No new tests; the implementation's not yet far enough along for that.

        This makes a chain of construction-and-linking-up for various sorts of
        FileWriter interfaces to call through to Chromium, and for various
        sorts of FileWriterClients to call back, with object ownership always
        pointing towards the Chromium API.  That is, the DOM object owns an
        AsyncFileWriter, which owns its implementation object, and the reverse
        (client) direction is raw pointers.

        File metadata is looked up before the FileWriter is returned, so that
        we know the file exists and can cache its length.

        The WebKit/chromium interface here is modeled after that of the
        FileSystem.
        
        * public/WebFileInfo.h:
        (WebKit::WebFileInfo::WebFileInfo):
        * src/AsyncFileSystemChromium.cpp:
        (WebCore::FileWriterHelperCallbacks::FileWriterHelperCallbacks):
        (WebCore::FileWriterHelperCallbacks::didSucceed):
        (WebCore::FileWriterHelperCallbacks::didReadMetadata):
        (WebCore::FileWriterHelperCallbacks::didReadDirectory):
        (WebCore::FileWriterHelperCallbacks::didOpenFileSystem):
        (WebCore::FileWriterHelperCallbacks::didCreateFileWriter):
        (WebCore::FileWriterHelperCallbacks::didFail):
        (WebCore::AsyncFileSystemChromium::createWriter):
        * src/AsyncFileSystemChromium.h:
        * src/AsyncFileWriterChromium.cpp:
        (WebCore::AsyncFileWriterChromium::setWebFileWriter):
        (WebCore::AsyncFileWriterChromium::write):
        (WebCore::AsyncFileWriterChromium::didFail):
        * src/AsyncFileWriterChromium.h:
        * src/WebFileSystemCallbacksImpl.h:

2010-09-22  Kenneth Russell  <kbr@google.com>

        Unreviewed, Chromium build fix. Fix build when accelerated
        compositing is not enabled at compile time.

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

2010-09-22  Matt Perry  <mpcomplete@chromium.org>

        Reviewed by Darin Fisher.

        Trying to reland a version of r67749:
        Have V8DOMWindowShell ask the embedder whether to run a V8 extension
        in a particular script context.
        https://bugs.webkit.org/show_bug.cgi?id=45721

        * public/WebFrameClient.h:
        (WebKit::WebFrameClient::allowScriptExtension):
        * public/WebScriptController.h:
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::allowScriptExtension):
        * src/FrameLoaderClientImpl.h:
        * src/WebScriptController.cpp:
        (WebKit::WebScriptController::registerExtension):

2010-09-22  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Change WebKit API for IDBTransaciton to new style
        https://bugs.webkit.org/show_bug.cgi?id=46263

        * public/WebIDBIndex.h:
        (WebKit::WebIDBIndex::openObjectCursor):
        (WebKit::WebIDBIndex::openCursor):
        (WebKit::WebIDBIndex::getObject):
        (WebKit::WebIDBIndex::get):
        * public/WebIDBObjectStore.h:
        (WebKit::WebIDBObjectStore::get):
        (WebKit::WebIDBObjectStore::put):
        (WebKit::WebIDBObjectStore::remove):
        (WebKit::WebIDBObjectStore::openCursor):
        * src/WebIDBIndexImpl.cpp:
        (WebKit::WebIDBIndexImpl::openCursor):
        (WebKit::WebIDBIndexImpl::openObjectCursor):
        (WebKit::WebIDBIndexImpl::getObject):
        (WebKit::WebIDBIndexImpl::get):
        * src/WebIDBIndexImpl.h:
        * src/WebIDBObjectStoreImpl.cpp:
        (WebKit::WebIDBObjectStoreImpl::get):
        (WebKit::WebIDBObjectStoreImpl::put):
        (WebKit::WebIDBObjectStoreImpl::remove):
        (WebKit::WebIDBObjectStoreImpl::openCursor):
        * src/WebIDBObjectStoreImpl.h:

2010-09-22  Pavel Podivilov  <podivilov@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: implement pausing on XHR
        https://bugs.webkit.org/show_bug.cgi?id=46086

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

2010-09-21  Brett Wilson  <brettw@chromium.org>

        Reviewed by Darin Fisher.

        Add caps log and num lock toggle state to WebInputEvent.
        https://bugs.webkit.org/show_bug.cgi?id=46229

        * public/WebInputEvent.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::handleInputEvent):
        * src/WebViewImpl.h:
        * src/gtk/WebInputEventFactory.cpp:
        (WebKit::gdkStateToWebEventModifiers):
        * src/win/WebInputEventFactory.cpp:
        (WebKit::SetToggleKeyState):
        (WebKit::WebInputEventFactory::keyboardEvent):
        (WebKit::WebInputEventFactory::mouseEvent):
        (WebKit::WebInputEventFactory::mouseWheelEvent):

2010-09-21  James Robinson  <jamesr@chromium.org>

        Reviewed by Kenneth Russell.

        [chromium] Check if the acceleratedCompositingEnabled setting is active in WebViewImpl::graphicsContext3D()
        https://bugs.webkit.org/show_bug.cgi?id=46239

        This adds a check for whether acceleratedCompositingEnabled is true on the Page's Settings
        object before creating and vending a GraphicsContext3D object.  This is needed because when
        an offscreen WebGraphicsContext3DCommandBufferImpl is initialized it first asks the WebViewImpl
        for the compositor context.  WebGraphicsContext3DCommandBufferImpl::initialize checks if the
        disable accelerated compositing command line switch is set, but this is insufficient as sometimes
        the Setting object does not agree exactly with the command line switches.  For example,
        we explicitly toggle accelerated compositing for some chrome UI URLs regardless of what the
        flag says.

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

2010-09-21  Kent Tamura  <tkent@chromium.org>

        Reviewed by David Levin.

        [Chromium] Remove WebInputElement::InputType and inputType()
        https://bugs.webkit.org/show_bug.cgi?id=46238

        * DEPS: Roll Chromium revision to 60132, which removed all usage of inputType().
        * public/WebInputElement.h: Remove InputType and inputType().
        * src/AssertMatchingEnums.cpp: Remove WebInputElement::InputType -
          HTMLInputElement::InputType matching tests.
        * src/WebInputElement.cpp: Remove inputType().

2010-09-21  Andrew Wilson  <atwilson@chromium.org>

        Unreviewed, rolling out r67982.
        http://trac.webkit.org/changeset/67982
        https://bugs.webkit.org/show_bug.cgi?id=45156

        Causes crashes on chromium testshell

        * public/WebAccessibilityCache.h:
        * public/WebViewClient.h:
        (WebKit::WebViewClient::didChangeAccessibilityObjectState):
        (WebKit::WebViewClient::didChangeAccessibilityObjectChildren):
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::focusedNodeChanged):
        (WebKit::ChromeClientImpl::didChangeAccessibilityObjectState):
        (WebKit::ChromeClientImpl::didChangeAccessibilityObjectChildren):
        * src/ChromeClientImpl.h:
        * src/WebAccessibilityCache.cpp:

2010-09-21  Kenneth Russell  <kbr@google.com>

        Reviewed by James Robinson.

        [chromium] Remove GLES2Context and WebGLES2Context
        https://bugs.webkit.org/show_bug.cgi?id=46131

        Removed now-obsolete GLES2Context and WebGLES2Context classes, and
        dependency on command buffer client code from WebCore. Built and
        tested 3D CSS and WebGL content on Mac OS X to test.

        * WebKit.gyp:
        * public/WebGLES2Context.h: Removed.
        * public/WebGraphicsContext3D.h:
        * public/WebKitClient.h:
        * public/WebView.h:
        * src/ChromeClientImpl.cpp:
        * src/GLES2Context.cpp: Removed.
        * src/GLES2ContextInternal.cpp: Removed.
        * src/GLES2ContextInternal.h: Removed.
        * src/WebGraphicsContext3DDefaultImpl.cpp:
        * src/WebGraphicsContext3DDefaultImpl.h:
        * src/WebViewImpl.cpp:
        * src/WebViewImpl.h:

2010-09-21  Kenneth Russell  <kbr@google.com>

        Reviewed by James Robinson.

        [chromium] Roll forward Chromium DEPS to pick up removal of WebGLES2Context dependencies
        https://bugs.webkit.org/show_bug.cgi?id=46231

        Ran build-webkit --chromium --debug on Mac OS X to test the roll-forward.

        * DEPS:

2010-09-21  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Nate Chapin.

        [Chromium] Plumb the IDBTransansaction's id
        https://bugs.webkit.org/show_bug.cgi?id=46197

        Next step, add the plumbing to Chromium.  Then we add code to WebKit
        that uses it (and take out the default IDBTransaction param).

        * public/WebIDBCursor.h:
        (WebKit::WebIDBCursor::key):
        (WebKit::WebIDBCursor::value):
        * public/WebIDBFactory.h:
        (WebKit::WebIDBFactory::open):
        * public/WebIDBIndex.h:
        (WebKit::WebIDBIndex::openObjectCursor):
        (WebKit::WebIDBIndex::openCursor):
        (WebKit::WebIDBIndex::getObject):
        (WebKit::WebIDBIndex::get):
        * public/WebIDBObjectStore.h:
        (WebKit::WebIDBObjectStore::get):
        (WebKit::WebIDBObjectStore::put):
        (WebKit::WebIDBObjectStore::remove):
        (WebKit::WebIDBObjectStore::createIndex):
        (WebKit::WebIDBObjectStore::removeIndex):
        (WebKit::WebIDBObjectStore::openCursor):
        * src/WebIDBIndexImpl.cpp:
        (WebKit::WebIDBIndexImpl::openCursor):
        (WebKit::WebIDBIndexImpl::openObjectCursor):
        (WebKit::WebIDBIndexImpl::getObject):
        (WebKit::WebIDBIndexImpl::get):
        * src/WebIDBIndexImpl.h:
        * src/WebIDBObjectStoreImpl.cpp:
        (WebKit::WebIDBObjectStoreImpl::get):
        (WebKit::WebIDBObjectStoreImpl::put):
        (WebKit::WebIDBObjectStoreImpl::remove):
        (WebKit::WebIDBObjectStoreImpl::openCursor):
        * src/WebIDBObjectStoreImpl.h:

2010-09-21  Chris Guillory   <chris.guillory@google.com>

        Reviewed by Chris Fleizach.

        Send webkit accessibility notifications to Chromium.
        https://bugs.webkit.org/show_bug.cgi?id=45156

        * public/WebAccessibilityCache.h:
        * public/WebViewClient.h:
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::focusedNodeChanged):
        (WebKit::ChromeClientImpl::getPopupMenuInfo):
        * src/ChromeClientImpl.h:
        * src/WebAccessibilityCache.cpp:
        (WebKit::WebAccessibilityCache::accessibilityEnabled):

2010-09-21  Steve Block  <steveblock@google.com>

        Reviewed by Jeremy Orlow.

        DeviceOrientationClient and DeviceMotionClient should have controllerDestroyed() methods
        https://bugs.webkit.org/show_bug.cgi?id=45891

        Implements DeviceOrientationClientProxy::deviceOrientationControllerDestroyed() as a no-op,
        as the client's lifetime is determined by the WebViewImpl.

        * src/DeviceOrientationClientProxy.cpp:
        (WebKit::DeviceOrientationClientProxy::deviceOrientationControllerDestroyed):
        * src/DeviceOrientationClientProxy.h:

2010-09-21  Jochen Eisinger  <jochen@chromium.org>

        Reviewed by Jeremy Orlow.

        [chromium] expose the filename used for a given indexed DB
        https://bugs.webkit.org/show_bug.cgi?id=46090

        * WebKit.gyp:
        * public/WebIDBFactory.h:
        * src/WebIDBFactory.cpp:
        (WebKit::WebIDBFactory::databaseFileName):

2010-09-20  Philippe Normand  <pnormand@igalia.com>

        Reviewed by Eric Carlson.

        [GTK] enhanced context menu for media elements
        https://bugs.webkit.org/show_bug.cgi?id=45021

        New localized strings for the media element context-menu.

        * src/LocalizedStrings.cpp:
        (WebCore::contextMenuItemTagOpenVideoInNewWindow):
        (WebCore::contextMenuItemTagOpenAudioInNewWindow):
        (WebCore::contextMenuItemTagCopyVideoLinkToClipboard):
        (WebCore::contextMenuItemTagCopyAudioLinkToClipboard):
        (WebCore::contextMenuItemTagToggleMediaControls):
        (WebCore::contextMenuItemTagToggleMediaLoop):
        (WebCore::contextMenuItemTagEnterVideoFullscreen):
        (WebCore::contextMenuItemTagMediaPlay):
        (WebCore::contextMenuItemTagMediaPause):
        (WebCore::contextMenuItemTagMediaMute):

2010-09-20  Nico Weber  <thakis@chromium.org>

        Reviewed by James Robinson.

        [chromium] Trivial clang warning fix
        https://bugs.webkit.org/show_bug.cgi?id=46143

        * src/WebFileSystemCallbacksImpl.h:

2010-09-20  Darin Adler  <darin@apple.com>

        Reviewed by James Robinson.

        Deprecate the inputType function on HTMLInputElement
        https://bugs.webkit.org/show_bug.cgi?id=46023

        * src/WebInputElement.cpp:
        (WebKit::WebInputElement::inputType):
        * src/WebPasswordFormUtils.cpp:
        (WebKit::findPasswordFormFields):
        * src/WebSearchableFormData.cpp:
        (WebCore::HasSuitableTextElement):
        Use deprecatedInputType instead of inputType.

2010-09-20  Kenneth Russell  <kbr@google.com>

        Reviewed by James Robinson.

        [chromium] Change compositor to use GraphicsContext3D rather than GLES2Context
        https://bugs.webkit.org/show_bug.cgi?id=45912

        Switched Chromium's compositor to use GraphicsContext3D to issue
        its OpenGL rendering calls rather than the Chromium-specific
        GLES2Context and command buffer OpenGL implementation.

        The in-process software rendering path for GraphicsContext3D does
        not yet work with the compositor, at least not on Mac OS X. This
        will be worked on in subsequent bugs.

        Tested manually with 3D CSS, WebGL and video content on Mac OS X
        and Linux. No new tests.

        * src/GraphicsContext3D.cpp:
        (WebCore::GraphicsContext3DInternal::initialize):
        (WebCore::GraphicsContext3DInternal::extractWebGraphicsContext3D):
        (WebCore::GraphicsContext3D::create):
        * src/GraphicsContext3DInternal.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::resize):
        (WebKit::WebViewImpl::setIsAcceleratedCompositingActive):
        (WebKit::WebViewImpl::gles2Context):
        (WebKit::WebViewImpl::graphicsContext3D):
        * src/WebViewImpl.h:

2010-09-20  Kenneth Russell  <kbr@google.com>

        Reviewed by Dimitri Glazkov.

        [chromium] Roll forward Chromium DEPS to pick up WebGraphicsContext3D implementation changes
        https://bugs.webkit.org/show_bug.cgi?id=46115

        * DEPS:

2010-09-20  Ilya Tikhonovsky  <loislo@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: merge Inspector client runtime events into the serialized inspector state object.

        Drive-by rename getBackendSettings -> getInspectorState to better reflect the nature of the data.

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

        * src/InspectorClientImpl.cpp:
        (WebKit::InspectorClientImpl::updateInspectorStateCookie):
        * src/InspectorClientImpl.h:
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::setRuntimeProperty):
        (WebKit::WebDevToolsAgentImpl::setApuAgentEnabled):
        (WebKit::WebDevToolsAgentImpl::updateInspectorStateCookie):
        * src/WebDevToolsAgentImpl.h:

2010-09-19  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r67749.
        http://trac.webkit.org/changeset/67749
        https://bugs.webkit.org/show_bug.cgi?id=46068

        breaking ToT chromium canary build (Requested by shans on
        #webkit).

        * public/WebFrameClient.h:
        * public/WebScriptController.h:
        * src/FrameLoaderClientImpl.cpp:
        * src/FrameLoaderClientImpl.h:
        * src/WebScriptController.cpp:
        (WebKit::WebScriptController::registerExtension):

2010-09-19  Kent Tamura  <tkent@chromium.org>

        Reviewed by Dimitri Glazkov.

        [Chromium] Add is<input type>() functions to WebInputElement
        https://bugs.webkit.org/show_bug.cgi?id=46035

        We're going to stop exposing HTMLInputElemnt::InputType. So, add
        isFoo() functions in order to remove WebInputElement::InputType.

        * public/WebInputElement.h:
        * src/WebInputElement.cpp:
        (WebKit::WebInputElement::isTextField):
        (WebKit::WebInputElement::isText):
        (WebKit::WebInputElement::isPasswordField):
        (WebKit::WebInputElement::isImageButton):

2010-09-17  Darin Adler  <darin@apple.com>

        Reviewed by Sam Weinig.

        REGRESSION (r60104): Zoom level is unexpectedly reset on page reload
        https://bugs.webkit.org/show_bug.cgi?id=42863

        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::createPlugin):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::setZoomLevel):
        Call functions on Frame instead of FrameView.

2010-09-17  Kenneth Russell  <kbr@google.com>

        Reviewed by James Robinson.

        [chromium] Roll forward Chromium DEPS to pick up Mesa DRT changes
        https://bugs.webkit.org/show_bug.cgi?id=46006

        * DEPS:

2010-09-17  Kenneth Russell  <kbr@google.com>

        Reviewed by Dimitri Glazkov.

        [chromium] Add mesa as DumpRenderTree dependency
        https://bugs.webkit.org/show_bug.cgi?id=46001

        * WebKit.gyp:

2010-09-13  Matt Perry  <mpcomplete@chromium.org>

        Reviewed by Darin Fisher.

        Have V8DOMWindowShell ask the embedder whether to run a V8 extension
        in a particular script context.
        https://bugs.webkit.org/show_bug.cgi?id=45721

        * public/WebFrameClient.h:
        (WebKit::WebFrameClient::allowScriptExtension):
        * public/WebScriptController.h:
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::allowScriptExtension):
        * src/FrameLoaderClientImpl.h:
        * src/WebScriptController.cpp:
        (WebKit::WebScriptController::registerExtension):

2010-09-17  Eric Uhrhane  <ericu@chromium.org>

        Reviewed by David Levin.

        Remove unimplemented destructor declaration to fix Chromium build.
        https://bugs.webkit.org/show_bug.cgi?id=45987

        * src/AsyncFileWriterChromium.h:

2010-09-16  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r67693.
        http://trac.webkit.org/changeset/67693
        https://bugs.webkit.org/show_bug.cgi?id=45946

        "Need to pick up a chromium change first" (Requested by dumi
        on #webkit).

        * public/WebHTTPBody.h:
        * src/WebHTTPBody.cpp:
        (WebKit::WebHTTPBody::elementAt):
        (WebKit::WebHTTPBody::appendFileRange):

2010-09-15  Dumitru Daniliuc  <dumi@chromium.org>

        Reviewed by Darin Fisher.

        Remove WebHTTPBody::appendFileRange(..., const WebFileInfo&).

        * public/WebHTTPBody.h:
        * src/WebHTTPBody.cpp:
        (WebKit::WebHTTPBody::elementAt):

2010-09-16  Kenneth Russell  <kbr@google.com>

        Reviewed by James Robinson.

        Add entry points to GraphicsContext3D needed for Chromium compositor port
        https://bugs.webkit.org/show_bug.cgi?id=45939

        Added entry points for two Chromium-specific extensions, and added
        a flag to the GraphicsContext3D constructor, currently unsupported
        by all ports (including Chromium), indicating whether the context
        should render directly to the passed HostWindow or off-screen per
        the current semantics. The switch to use GraphicsContext3D in
        Chromium's compositor will follow in a subsequent patch.

        No new tests; functionality is unchanged. Built and tested
        Chromium and WebKit on Mac OS X.

        * src/GraphicsContext3D.cpp:
        (WebCore::GraphicsContext3D::GraphicsContext3D):
        (WebCore::GraphicsContext3D::create):
        * src/GraphicsContext3DInternal.h:

2010-09-16  Kenneth Russell  <kbr@google.com>

        Reviewed by James Robinson.

        [chromium] Add needed entry points to WebGraphicsContext3D for compositor
        https://bugs.webkit.org/show_bug.cgi?id=45921

        * public/WebGraphicsContext3D.h:
        * src/WebGraphicsContext3DDefaultImpl.cpp:
        (WebKit::WebGraphicsContext3DDefaultImpl::initialize):
        (WebKit::WebGraphicsContext3DDefaultImpl::supportsMapSubCHROMIUM):
        (WebKit::WebGraphicsContext3DDefaultImpl::mapBufferSubDataCHROMIUM):
        (WebKit::WebGraphicsContext3DDefaultImpl::unmapBufferSubDataCHROMIUM):
        (WebKit::WebGraphicsContext3DDefaultImpl::mapTexSubImage2DCHROMIUM):
        (WebKit::WebGraphicsContext3DDefaultImpl::unmapTexSubImage2DCHROMIUM):
        (WebKit::WebGraphicsContext3DDefaultImpl::supportsCopyTextureToParentTextureCHROMIUM):
        (WebKit::WebGraphicsContext3DDefaultImpl::copyTextureToParentTextureCHROMIUM):
        * src/WebGraphicsContext3DDefaultImpl.h:

2010-09-15  Tony Chang  <tony@chromium.org>

        Reviewed by Kent Tamura.

        [Chromium] Needs DRT queueLoadHTMLString and setDeferMainResourceLoad-implementations
        https://bugs.webkit.org/show_bug.cgi?id=42151

        * public/WebDataSource.h:
        * src/WebDataSourceImpl.cpp:
        (WebKit::WebDataSourceImpl::applicationCacheHost):
        (WebKit::WebDataSourceImpl::setDeferMainResourceDataLoad): Added so DRT can set this flag before a load.
        * src/WebDataSourceImpl.h:

2010-09-16  Kenneth Russell  <kbr@google.com>

        Reviewed by James Robinson.

        Roll forward Chromium DEPS to r59706
        https://bugs.webkit.org/show_bug.cgi?id=45916

        * DEPS:

2010-09-16  Darin Adler  <darin@apple.com>

        Reviewed by Andreas Kling.

        Reduce use of HTMLInputElement::inputType so we can remove it later
        https://bugs.webkit.org/show_bug.cgi?id=45903

        * src/DOMUtilitiesPrivate.cpp:
        (WebKit::elementHasLegalLinkAttribute): Use isImageButton.
        * src/WebPasswordFormUtils.cpp:
        (WebKit::findPasswordFormFields): Use isPasswordField.
        * src/WebSearchableFormData.cpp:
        (WebCore::IsInDefaultState): Use isCheckbox and isRadioButton.
        (WebCore::HasSuitableTextElement): Use isFileUpload and isPasswordField.

2010-09-16  Kenneth Russell  <kbr@google.com>

        Reviewed by James Robinson.

        [chromium] Expose separate GraphicsContext3DInternal.h
        https://bugs.webkit.org/show_bug.cgi?id=45914

        * WebKit.gyp:
        * src/GraphicsContext3D.cpp:
        * src/GraphicsContext3DInternal.h: Added.

2010-09-16  Kenneth Russell  <kbr@google.com>

        Reviewed by James Robinson.

        [chromium] Add WebGraphicsContext3D accessor to WebView
        https://bugs.webkit.org/show_bug.cgi?id=45913

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

2010-09-16  Ilya Tikhonovsky  <loislo@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: move resourceTracking flag under control of BackendSettings.

        Four Inspector API methods about resourceTracking flag were removed.
        Actual state of the flag is transfered as the response of setResourceTracking request.
        Initial state of the flag on the frontend side is obtained from settings.backend.

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

        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::setRuntimeProperty):
        (WebKit::WebDevToolsAgentImpl::setApuAgentEnabled):

2010-09-16  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: [REGRESSION] Scripts disappear from scripts panel after navigation
        https://bugs.webkit.org/show_bug.cgi?id=45890

        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::setRuntimeProperty): make sure debugger and profiler
        are initialized when inspected page navigation leads to renderer process change.

2010-09-16  Eric Uhrhane  <ericu@chromium.org>

        Reviewed by Jian Li.

        Unify FILE_SYSTEM and FILE_WRITER enables under the name FILE_SYSTEM.
        https://bugs.webkit.org/show_bug.cgi?id=45798

        * src/AsyncFileWriterChromium.h:
        * src/AsyncFileWriterChromium.cpp:

2010-09-16  Nat Duca  <nduca@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Make compositor obey finish flag
        https://bugs.webkit.org/show_bug.cgi?id=45552

        The compositor should obey the finish flag on doComposite. This
        flag causes the compositor to finish rendering before returning,
        which is needed when resizing the window to avoid flashes of green.

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

2010-09-15  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Steve Block.

        Allow the embedder to specify the base path for IndexedDB.
        https://bugs.webkit.org/show_bug.cgi?id=45815

        Need to add the extra .open() parameter to make this all work.

        * public/WebIDBFactory.h:
        (WebKit::WebIDBFactory::open):
        * src/IDBFactoryBackendProxy.cpp:
        (WebCore::IDBFactoryBackendProxy::open):
        * src/IDBFactoryBackendProxy.h:
        * src/WebIDBFactoryImpl.cpp:
        (WebKit::WebIDBFactoryImpl::open):
        * src/WebIDBFactoryImpl.h:

2010-09-16  Jeremy Orlow  <jorlow@chromium.org>

        Speculative build fix.

        * src/IDBIndexBackendProxy.cpp:

2010-09-08  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Steve Block.

        Complete index support for IndexedDB
        https://bugs.webkit.org/show_bug.cgi?id=45386

        * public/WebIDBCursor.h:
        (WebKit::WebIDBCursor::direction):
        (WebKit::WebIDBCursor::key):
        (WebKit::WebIDBCursor::value):
        (WebKit::WebIDBCursor::update):
        (WebKit::WebIDBCursor::continueFunction):
        (WebKit::WebIDBCursor::remove):
        * public/WebIDBIndex.h:
        (WebKit::WebIDBIndex::storeName):
        (WebKit::WebIDBIndex::openObjectCursor):
        (WebKit::WebIDBIndex::openCursor):
        (WebKit::WebIDBIndex::getObject):
        (WebKit::WebIDBIndex::get):
        * public/WebIDBKey.h:
        * src/IDBCursorBackendProxy.cpp:
        (WebCore::IDBCursorBackendProxy::value):
        * src/IDBCursorBackendProxy.h:
        * src/IDBIndexBackendProxy.cpp:
        (WebCore::IDBIndexBackendProxy::storeName):
        (WebCore::IDBIndexBackendProxy::openObjectCursor):
        (WebCore::IDBIndexBackendProxy::openCursor):
        (WebCore::IDBIndexBackendProxy::getObject):
        (WebCore::IDBIndexBackendProxy::get):
        * src/IDBIndexBackendProxy.h:
        * src/WebIDBCursorImpl.cpp:
        (WebKit::WebIDBCursorImpl::value):
        * src/WebIDBCursorImpl.h:
        * src/WebIDBIndexImpl.cpp:
        (WebKit::WebIDBIndexImpl::storeName):
        (WebKit::WebIDBIndexImpl::openCursor):
        (WebKit::WebIDBIndexImpl::openObjectCursor):
        (WebKit::WebIDBIndexImpl::getObject):
        (WebKit::WebIDBIndexImpl::get):
        * src/WebIDBIndexImpl.h:

2010-09-15  Dumitru Daniliuc  <dumi@chromium.org>

        Reviewed by Darin Fisher.

        Overload WebHTTPBody::appendFileRange() to take a double modification time argument.
        https://bugs.webkit.org/show_bug.cgi?id=45829

        The plan is to change all callers of
        WebHTTPBody::appendFileRange(..., const WebFileInfo&) to use the
        new method, and then remove it.

        * public/WebHTTPBody.h:
        * src/WebHTTPBody.cpp:
        (WebKit::WebHTTPBody::elementAt):
        (WebKit::WebHTTPBody::appendFileRange):

2010-09-14  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: Provide network-based load timing.
        Before this change, inspector used timers taken from
        within WebCore notifications (that are by definition
        synchronous and serialized). As a result, timing was
        affected by the routines running on the main thread
        (JavaScript and such).
        https://bugs.webkit.org/show_bug.cgi?id=45664

        * public/WebURLLoadTiming.h:
        * public/WebURLLoaderClient.h:
        (WebKit::WebURLLoaderClient::didFinishLoading):
        * src/ResourceHandle.cpp:
        (WebCore::ResourceHandleInternal::didFinishLoading):
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::didFinishLoading):
        * src/WebURLLoadTiming.cpp:
        (WebKit::WebURLLoadTiming::receiveHeadersStart):
        (WebKit::WebURLLoadTiming::setReceiveHeadersStart):

2010-09-15  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r67551.
        http://trac.webkit.org/changeset/67551
        https://bugs.webkit.org/show_bug.cgi?id=45816

        "Plugin tests fail" (Requested by yurys on #webkit).

        * public/WebURLLoaderClient.h:
        (WebKit::WebURLLoaderClient::didFinishLoading):
        * src/ResourceHandle.cpp:
        (WebCore::ResourceHandleInternal::didFinishLoading):
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::didFinishLoading):

2010-09-14  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: Provide network-based load timing.
        Before this change, inspector used timers taken from
        within WebCore notifications (that are by definition
        synchronous and serialized). As a result, timing was
        affected by the routines running on the main thread
        (JavaScript and such).
        https://bugs.webkit.org/show_bug.cgi?id=45664

        * public/WebURLLoadTiming.h:
        * public/WebURLLoaderClient.h:
        (WebKit::WebURLLoaderClient::didFinishLoading):
        * src/ResourceHandle.cpp:
        (WebCore::ResourceHandleInternal::didFinishLoading):
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::didFinishLoading):
        * src/WebURLLoadTiming.cpp:
        (WebKit::WebURLLoadTiming::receiveHeadersStart):
        (WebKit::WebURLLoadTiming::setReceiveHeadersStart):

2010-09-14  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r67503.
        http://trac.webkit.org/changeset/67503
        https://bugs.webkit.org/show_bug.cgi?id=45802

        This patch broke GTK builds (Requested by jianli_ on #webkit).

        * src/ResourceHandle.cpp:

2010-09-14  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: Links from "Profiles" don't lead to "Scripts"
        https://bugs.webkit.org/show_bug.cgi?id=45756

        * src/js/DevTools.js: remove obsolete code

2010-09-14  Tony Chang  <tony@chromium.org>

        Reviewed by Kent Tamura.

        [chromium] fix http/tests/security/local-user-CSS-from-remote.html
        https://bugs.webkit.org/show_bug.cgi?id=45788

        * DEPS: Include webkit_support::LocalFileToDataURL

2010-09-14  Tony Chang  <tony@chromium.org>

        Reviewed by Ojan Vafai.

        [chromium] Remove WebKit::areLayoutTestImagesOpaque since it's no longer needed
        https://bugs.webkit.org/show_bug.cgi?id=45768

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

2010-09-14  Mihai Parparita  <mihaip@chromium.org>

        Reviewed by Tony Chang.

        blob: URL scheme does not work with Chromium DRT
        https://bugs.webkit.org/show_bug.cgi?id=45772

        Roll Chromium forward to r59406, which registers the blob
        URL scheme for the Chromium DRT too.

        * DEPS:

2010-09-14  Jian Li  <jianli@chromium.org>

        Reviewed by David Levin.

        fast/files/apply-blob-url-to-img.html timeout on Leopard
        https://bugs.webkit.org/show_bug.cgi?id=45576

        * src/ResourceHandle.cpp: Remove the no longer applicable static comment.

2010-09-14  Chris Guillory   <chris.guillory@google.com>

        Reviewed by Chris Fleizach.

        Send all accessibility notifications to Chromium.
        https://bugs.webkit.org/show_bug.cgi?id=45156
        
        Use postAccessibilityNotification to pass accessibility notifications
        to chromium.

        * WebKit.gyp:
        * public/WebAccessibilityNotification.h: Added.
        * public/WebViewClient.h:
        (WebKit::WebViewClient::postAccessibilityNotification):
        * src/AssertMatchingEnums.h: Added.
        * src/ChromeClientImpl.cpp:
        (WebKit::toWebAccessibilityNotification):
        (WebKit::ChromeClientImpl::didChangeAccessibilityObjectChildren):
        (WebKit::ChromeClientImpl::postAccessibilityNotification):
        * src/ChromeClientImpl.h:

2010-09-14  Tony Chang  <tony@chromium.org>

        Unreviewed, fix chromium win compile.

        * public/WebView.h:

2010-09-14  Tony Chang  <tony@chromium.org>

        Reviewed by Dimitri Glazkov.

        [chromium] implement layoutTestController.setDomainRelaxationForbiddenForURLScheme
        https://bugs.webkit.org/show_bug.cgi?id=45762

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

2010-09-14  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Andreas Kling.

        Move DebuggerScript.js from WebKit/chromium/src/js to WebCore/bindings/v8
        https://bugs.webkit.org/show_bug.cgi?id=45739

        * WebKit.grd:
        * WebKit.gypi:
        * src/js/DebuggerScript.js: Removed.
        * src/js/DevToolsHostStub.js: Removed.

2010-09-14  Hans Wennborg  <hans@chromium.org>

        Reviewed by Jeremy Orlow.

        Make WebDeviceOrientationClientMock constructor private.
        https://bugs.webkit.org/show_bug.cgi?id=45743

        Clients should use the create member function instead. DumpRenderTree
        and the Chromium test_shell have previously been updated to call create.

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

2010-09-13  Eric Uhrhane  <ericu@chromium.org>

        Reviewed by Darin Fisher.

        Add Chromium API for FileWriter
        https://bugs.webkit.org/show_bug.cgi?id=44360

        Build file changes.
        * WebKit.gyp:

        Added a way to get a WebFileWriter.
        * public/WebFileSystem.h:
        (WebKit::WebFileSystem::createFileWriter):

        WebFileWriter writes and truncates files.
        * public/WebFileWriter.h: Added.

        WebFileWriterClient reports success/failure and progress events.
        * public/WebFileWriterClient.h: Added.

        AsyncFileWriterChromium is a connector that links FileWriter and WebFileWriter, FileWriterClient and WebFileWriterClient.
        * src/AsyncFileWriterChromium.cpp: Added.
        * src/AsyncFileWriterChromium.h: Added.

2010-09-13  W. James MacLean  <wjmaclean@google.com>

        Reviewed by Darin Fisher.

        [chromium] Thumbnails not generated for GPU Rendered Pages
        https://bugs.webkit.org/show_bug.cgi?id=44127

        Modified WebViewImpl::paint() to detect non-null canvas pointers when
        accelerated compositing is active, and instead fills the pixel buffer
        from the GPU framebuffer. Includes re-scaling support when provided
        canvas does not match size of current render layer. Limits pixel
        readback to rect passed to paint(), clipped by size of rootLayerTexture.

        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::doPixelReadbackToCanvas):
        (WebKit::WebViewImpl::paint):
        * src/WebViewImpl.h:

2010-09-13  James Robinson  <jamesr@chromium.org>

        Reviewed by Dimitri Glazkov.

        [chromium] Return NULL from getSharedGraphicsContext3D if we couldn't initialize
        https://bugs.webkit.org/show_bug.cgi?id=45731

        If we can't create a GraphicsContext3D, return NULL from getSharedGraphicsContext3D rather
        than an object with NULL internal pointers.  Callers know how to handle a null return value
        but not one that has inconsistent internal state.

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

2010-09-13  Chris Guillory  <chris.guillory@google.com>

        Reviewed by Chris Fleizach.

        WebAccessibilityCacheImpl needs to handle invalid accessibility object ids.
        https://bugs.webkit.org/show_bug.cgi?id=45572

        * public/WebAccessibilityObject.h:
        * src/WebAccessibilityCacheImpl.cpp:
        (WebKit::WebAccessibilityCacheImpl::addOrGetId):
        * src/WebAccessibilityObject.cpp:
        (WebKit::WebAccessibilityObject::isAxObjectIdValid):

2010-09-13  Pavel Podivilov  <podivilov@chromium.org>

        Reviewed by Dimitri Glazkov.

        [Chromium] fix broken dependency in ImageDiff
        https://bugs.webkit.org/show_bug.cgi?id=45684

        * WebKit.gyp:

2010-09-13  Enrica Casucci  <enrica@apple.com>

        Reviewed by Sam Weinig.

        Paste should be implemented in WebCore like Copy and Cut for Mac also.
        https://bugs.webkit.org/show_bug.cgi?id=45494
        <rdar://problem/7660537>

        On the Mac platform, the implementation of the paste operation is all done
        at the WebKit level. In order to support it on WebKit2 it is necessary to
        refactor the code and move this functionality at the level of WebCore like
        we already have on Windows.
        The original code relies on some in AppKit functions that call back into
        WebKit causing problems in WebKit2. All this functionality has been moved
        at the level of the editor client where it can be dealt with appropriately.

        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::canShowMIMETypeAsHTML): Added stub.
        * src/FrameLoaderClientImpl.h:

2010-09-13  Jonathan Dixon  <joth@chromium.org>

        Reviewed by Steve Block.

        [chromium] Port test shell geolocation fixes to DRT
        https://bugs.webkit.org/show_bug.cgi?id=45313

        Ports over fixes from test shell:
         - http://codereview.chromium.org/3294007
         - http://codereview.chromium.org/333800

        Resets state between service instances, which fixes delayed-permission-allowed-for-multiple-requests.html

        Also re-apply rolled out patch http://trac.webkit.org/changeset/66886 :-
        Access to out-of-scope WebGeolocationServiceBridgeImpl
        https://bugs.webkit.org/show_bug.cgi?id=45112

        Keep the WebGeolocationService pointer for lifetime of the bridge, to
        ensure it can be detached reliably

        Includes follow-up review comment to rename onWebGeolocationServiceDestroyed to didDestroyGeolocationService

        * public/WebGeolocationService.h:
        (WebKit::WebGeolocationService::~WebGeolocationService):
        * public/WebGeolocationServiceBridge.h:
        (WebKit::WebGeolocationServiceBridge::onWebGeolocationServiceDestroyed):
        * public/WebGeolocationServiceMock.h:
        * src/WebGeolocationServiceBridgeImpl.cpp:
        (WebKit::WebGeolocationServiceBridgeImpl::WebGeolocationServiceBridgeImpl):
        (WebKit::WebGeolocationServiceBridgeImpl::~WebGeolocationServiceBridgeImpl):
        (WebKit::WebGeolocationServiceBridgeImpl::startUpdating):
        (WebKit::WebGeolocationServiceBridgeImpl::stopUpdating):
        (WebKit::WebGeolocationServiceBridgeImpl::suspend):
        (WebKit::WebGeolocationServiceBridgeImpl::resume):
        (WebKit::WebGeolocationServiceBridgeImpl::attachBridgeIfNeeded):
        (WebKit::WebGeolocationServiceBridgeImpl::setIsAllowed):
        (WebKit::WebGeolocationServiceBridgeImpl::setLastPosition):
        (WebKit::WebGeolocationServiceBridgeImpl::setLastError):
        (WebKit::WebGeolocationServiceBridgeImpl::didDestroyGeolocationService):
        (WebKit::WebGeolocationServiceBridgeImpl::isAttached):
        * src/WebGeolocationServiceMock.cpp:
        (WebKit::WebGeolocationServiceMock::setMockGeolocationPermission):
        (WebKit::WebGeolocationServiceMockImpl::WebGeolocationServiceMockImpl):
        (WebKit::WebGeolocationServiceMockImpl::~WebGeolocationServiceMockImpl):
        (WebKit::WebGeolocationServiceMockImpl::setMockGeolocationPermission):
        (WebKit::WebGeolocationServiceMockImpl::requestPermissionForFrame):
        (WebKit::WebGeolocationServiceMockImpl::notifyPendingPermissions):

2010-09-13  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: upstream testExpandScope debugger test
        https://bugs.webkit.org/show_bug.cgi?id=45260

        * src/js/DebuggerScript.js: copy scope variables into a new object, but for global scope object,
        with statement parameter and catch block exception variable pass the object itself to the injected
        script.
        * src/js/Tests.js: moved testExpandScope to LayoutTests

2010-09-13  Hans Wennborg  <hans@chromium.org>

        Reviewed by Jeremy Orlow.

        Add WebDeviceOrientationClientMock::create() and use it from DRT.
        https://bugs.webkit.org/show_bug.cgi?id=45650

        Since the virtual member functions of WebDeviceOrientationClientMock
        are not exported from the DLL, construction of the object must be done inside
        the DLL, or else the linker will complain (because the vtable cannot
        be set up). Clients should use the create() member function, and the constructor
        will be made private in a subsequent patch.

        * public/WebDeviceOrientationClientMock.h:
        (WebKit::WebDeviceOrientationClientMock::WebDeviceOrientationClientMock):
        * src/WebDeviceOrientationClientMock.cpp:
        (WebKit::WebDeviceOrientationClientMock::create):

2010-09-12  Kent Tamura  <tkent@chromium.org>

        Reviewed by Tony Chang.

        [DRT/Chromium] Remove dependency to base/string16.h and gfx/codec/png_codec.h
        https://bugs.webkit.org/show_bug.cgi?id=45517

        * DEPS: Roll Chromium revision to r59033 to have webkit_support_gfx.h.
        * WebKit.gyp:

2010-09-10  MORITA Hajime  <morrita@google.com>

        Reviewed by Tony Chang.

        [Chromium] Implement textInputController.hasSpellingMarker() for Chromium
        https://bugs.webkit.org/show_bug.cgi?id=45441

        Exported Frame::selectionStartHasSpellingMarkerFor() for DRT use.

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

2010-09-10  Jesus Sanchez-Palencia  <jesus.palencia@openbossa.org>

        Reviewed by Darin Adler.

        Add NetworkingContext to avoid layer violations
        https://bugs.webkit.org/show_bug.cgi?id=42292

        * src/ResourceHandle.cpp:
        (WebCore::ResourceHandle::create):
        (WebCore::ResourceHandle::start):
        (WebCore::ResourceHandle::loadResourceSynchronously):

2010-09-10  Sam Weinig  <sam@webkit.org>

        Fix chromium build.

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

2010-09-10  Ryosuke Niwa  <rniwa@webkit.org>

        Unreviewed, speculative chromium build fix.

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

2010-09-10  Sam Weinig  <sam@webkit.org>

        Reviewed by Darin Adler.

        Remove unnecessary constraint in WebCore of choosing either text zoom or full page zoom.
        Precursor to <rdar://problem/7660657>
        https://bugs.webkit.org/show_bug.cgi?id=45522

        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::createPlugin):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::WebViewImpl):
        (WebKit::WebViewImpl::setZoomLevel):
        * src/WebViewImpl.h:
        (WebKit::WebViewImpl::zoomTextOnly):
        Move tracking of text only zoom here from WebCore.

2010-09-10  Adam Barth  <abarth@webkit.org>

        Reviewed by Darin Fisher.

        Move code from WebKit-layer to DocumentLoader
        https://bugs.webkit.org/show_bug.cgi?id=45569

        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::committedLoad):
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::commitDocumentData):

2010-09-10  Tony Chang  <tony@chromium.org>

        Unreviewed, fix chromium compile after r67238.

        shouldChangeSelection was removed from Frame.

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::selectWordAroundPosition):

2010-09-10  Nat Duca  <nduca@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Accelerated Compositing: screen garbage when scrolling
        https://bugs.webkit.org/show_bug.cgi?id=45092

        Introduce a new API on WebWidget for painting with accelerated
        compositing that allows the compositor to properly distingiush
        scrolling, invalidation and repainting from one another. The key
        change is that in accelerated rendering case, invalidates and
        scrolling pass directly to the compositor, rather than passing up
        to the client as was the case in the software path. For
        accelerated rendering, the previous paint() method is replaced by
        composite().

        * public/WebWidget.h:
        * public/WebWidgetClient.h:
        (WebKit::WebWidgetClient::scheduleComposite):
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::invalidateContentsAndWindow):
        (WebKit::ChromeClientImpl::scroll):
        * src/WebPopupMenuImpl.cpp:
        (WebKit::WebPopupMenuImpl::themeChanged):
        (WebKit::WebPopupMenuImpl::composite):
        * src/WebPopupMenuImpl.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::resize):
        (WebKit::WebViewImpl::paint):
        (WebKit::WebViewImpl::themeChanged):
        (WebKit::WebViewImpl::composite):
        (WebKit::WebViewImpl::setRootGraphicsLayer):
        (WebKit::WebViewImpl::setRootLayerNeedsDisplay):
        (WebKit::WebViewImpl::scrollRootLayerRect):
        (WebKit::WebViewImpl::invalidateRootLayerRect):
        (WebKit::WebViewImpl::setIsAcceleratedCompositingActive):
        (WebKit::WebViewImpl::updateRootLayerContents):
        (WebKit::WebViewImpl::doComposite):
        * src/WebViewImpl.h:
        * tests/PopupMenuTest.cpp:
        (WebKit::TestWebWidget::themeChanged):
        (WebKit::TestWebWidget::composite):

2010-09-10  David Holloway  <dhollowa@chromium.org>

        Reviewed by Adam Barth.

        Change WebKit::WebFormElement::wasUserSubmitted to use WebCore::HTMLFormElement::submittedByUserGesture
        instead of WebCore::HTMLFormElement::submissionTrigger.
        Chromium AutoFill feature semantics changed with respect to what we mean by "user submitted" form.  A
        more accurate measure of the user manually submitting a form is via user gesture.
        https://bugs.webkit.org/show_bug.cgi?id=45128

        * src/WebFormElement.cpp:
        (WebKit::WebFormElement::wasUserSubmitted):

2010-09-09  Darin Adler  <darin@apple.com>

        Reviewed by Adam Barth.

        Move functions from Frame to SelectionController as planned
        https://bugs.webkit.org/show_bug.cgi?id=45508

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::selectionBoundsRect):
        Call functions on selection().

2010-09-10  Adam Barth  <abarth@webkit.org>

        Chromium build fix (one hopes!)

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::commitDocumentData):

2010-09-10  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        Main resource bytes shouldn't bounce through FrameLoader
        https://bugs.webkit.org/show_bug.cgi?id=45496

        Now return the bytes to the DocumentLoader.

        Also, removed comment about wrong code in the Mac port.

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::commitDocumentData):

2010-09-08  Darin Adler  <darin@apple.com>

        Reviewed by Adam Barth.

        Move functions from Frame to Editor as planned
        https://bugs.webkit.org/show_bug.cgi?id=45218

        * src/ContextMenuClientImpl.cpp:
        (WebKit::selectMisspelledWord):
        (WebKit::ContextMenuClientImpl::getCustomMenuFromDefaultItems):
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::find):
        (WebKit::WebFrameImpl::stopFinding):
        (WebKit::WebFrameImpl::scopeStringMatches):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::caretOrSelectionBounds):
        Changed call sites to use editor().

2010-09-09  Kenneth Russell  <kbr@google.com>

        Reviewed by James Robinson.

        Memory leak in red/black tree
        https://bugs.webkit.org/show_bug.cgi?id=45472

        Fixed memory leak in red/black tree where it was using operator
        new directly to allocate its internal nodes rather than the arena
        with which it was configured. Added allocateObject variant to
        arena supporting single-argument constructors. Added test to
        red/black tree unit tests to cover this functionality, and
        refactored TrackedAllocator into helper file to share between
        arena and red/black tree tests.

        * WebKit.gyp:
        * tests/ArenaTestHelpers.h: Added.
        (WebCore::ArenaTestHelpers::TrackedAllocator::create):
        (WebCore::ArenaTestHelpers::TrackedAllocator::allocate):
        (WebCore::ArenaTestHelpers::TrackedAllocator::free):
        (WebCore::ArenaTestHelpers::TrackedAllocator::isEmpty):
        (WebCore::ArenaTestHelpers::TrackedAllocator::numRegions):
        (WebCore::ArenaTestHelpers::TrackedAllocator::TrackedAllocator):
        * tests/PODArenaTest.cpp:
        * tests/PODRedBlackTreeTest.cpp:
        (WebCore::TEST):

2010-09-09  Tony Chang  <tony@chromium.org>

        Reviewed by Dimitri Glazkov.

        [chromium] make linux checksums computed from pngs to match windows
        https://bugs.webkit.org/show_bug.cgi?id=45465

        * src/WebKit.cpp:
        (WebKit::areLayoutTestImagesOpaque): Make linux match windows.

2010-09-10  Jay Civelli  <jcivelli@chromium.org>

        Reviewed by Darin Fisher.

        Add the destructor to WebDOMEvent to prevent a leak.
        https://bugs.webkit.org/show_bug.cgi?id=45287

        * public/WebDOMEvent.h:
        (WebKit::WebDOMEvent::~WebDOMEvent):

2010-09-09  Chris Guillory  <chris.guillory@google.com>

        Reviewed by Chris Fleizach.

        Add methods used to determine accessibility state.
        https://bugs.webkit.org/show_bug.cgi?id=45434

        * public/WebAccessibilityObject.h:
        * src/WebAccessibilityObject.cpp:
        (WebKit::WebAccessibilityObject::canSetSelectedAttribute):
        (WebKit::WebAccessibilityObject::isCollapsed):
        (WebKit::WebAccessibilityObject::isLinked):
        (WebKit::WebAccessibilityObject::isReadOnly):
        (WebKit::WebAccessibilityObject::isVisible):

2010-09-08  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Joseph Pecoraro.

        Web Inspector: add a sanity test for DOM storage view in the storage panel
        https://bugs.webkit.org/show_bug.cgi?id=45294

        * src/js/Tests.js: removed testStoragePanel which was superseded by inspector layout tests.

2010-09-08  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Joseph Pecoraro.

        Web Inspector: test that debugger won't pause on syntax errors
        https://bugs.webkit.org/show_bug.cgi?id=45388

        * src/js/Tests.js: removed testAutoContinueOnSyntaxError which is now covered by 
        inspector/debugger-autocontinue-on-syntax-error.html layout test

2010-09-08  Peter Kasting  <pkasting@google.com>

        Reviewed by David Hyatt.

        Add smooth scrolling framework, and a Windows implementation.
        https://bugs.webkit.org/show_bug.cgi?id=32356

        * src/WebScrollbarImpl.cpp: Plumb new ScrollbarClient functions.  Allow wheel scrolls to be animated.
        (WebKit::WebScrollbarImpl::setLocation):
        (WebKit::WebScrollbarImpl::setValue):
        (WebKit::WebScrollbarImpl::scroll):
        (WebKit::WebScrollbarImpl::onMouseWheel):
        (WebKit::WebScrollbarImpl::onKeyDown):
        (WebKit::WebScrollbarImpl::setScrollOffsetFromAnimation):
        * src/WebScrollbarImpl.h: Plumb new ScrollbarClient functions.
        * src/win/WebInputEventFactory.cpp: Update comments now that we have smooth scrolling.
        (WebKit::WebInputEventFactory::mouseWheelEvent):

2010-09-08  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Joseph Pecoraro.

        Web Inspector: remove some obsolete interactive tests
        https://bugs.webkit.org/show_bug.cgi?id=45371

        * src/js/Tests.js:

2010-09-08  Hans Wennborg  <hans@chromium.org>

        Reviewed by Jeremy Orlow.

        Plug leak in WebDeviceOrientationClientMock
        https://bugs.webkit.org/show_bug.cgi?id=45305

        WebDeviceOrientationClientMock is responsible for destroying the
        WebDeviceOrientationController object pointed to by the argument
        passed to the setController() member function.

        Also use the new WebPrivateOnwPtr for m_clientMock.

        * public/WebDeviceOrientationClientMock.h:
        * src/WebDeviceOrientationClientMock.cpp:
        (WebKit::WebDeviceOrientationClientMock::setController):
        (WebKit::WebDeviceOrientationClientMock::initialize):
        (WebKit::WebDeviceOrientationClientMock::reset):

2010-09-07  Tony Chang  <tony@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Make a public flag for how DRT generates bitmaps on Linux
        https://bugs.webkit.org/show_bug.cgi?id=45133

        This is so it's possible for me to fix
        http://code.google.com/p/chromium/issues/detail?id=21386 .

        * public/WebKit.h: Add areLayoutTestImagesOpaque()
        * src/WebKit.cpp:
        (WebKit::areLayoutTestImagesOpaque):

2010-09-07  Dimitri Glazkov  <dglazkov@chromium.org>

        Unreviewed, rolling out r66886.
        http://trac.webkit.org/changeset/66886
        https://bugs.webkit.org/show_bug.cgi?id=45112

        Made

        * public/WebGeolocationService.h:
        * src/WebGeolocationServiceBridgeImpl.cpp:
        (WebKit::WebGeolocationServiceBridgeImpl::WebGeolocationServiceBridgeImpl):
        (WebKit::WebGeolocationServiceBridgeImpl::~WebGeolocationServiceBridgeImpl):
        (WebKit::WebGeolocationServiceBridgeImpl::startUpdating):
        (WebKit::WebGeolocationServiceBridgeImpl::stopUpdating):
        (WebKit::WebGeolocationServiceBridgeImpl::suspend):
        (WebKit::WebGeolocationServiceBridgeImpl::resume):
        (WebKit::WebGeolocationServiceBridgeImpl::attachBridgeIfNeeded):
        (WebKit::WebGeolocationServiceBridgeImpl::setIsAllowed):
        (WebKit::WebGeolocationServiceBridgeImpl::setLastPosition):
        (WebKit::WebGeolocationServiceBridgeImpl::setLastError):
        (WebKit::WebGeolocationServiceBridgeImpl::getWebViewClient):
        (WebKit::WebGeolocationServiceBridgeImpl::onWebGeolocationServiceDestroyed):
        * src/WebGeolocationServiceMock.cpp:

2010-09-07  Jonathan Dixon  <joth@chromium.org>
        
        Reviewed by Jeremy Orlow.
        
        Access to out-of-scope WebGeolocationServiceBridgeImpl
        https://bugs.webkit.org/show_bug.cgi?id=45112

        Keep the WebGeolocationService pointer for lifetime of the bridge, to
        ensure it can be detached reliably

        * public/WebGeolocationServiceBridge.h:
        (WebKit::WebGeolocationServiceBridge::~WebGeolocationServiceBridge):
        * src/WebGeolocationServiceBridgeImpl.cpp:
        (WebKit::WebGeolocationServiceBridgeImpl::WebGeolocationServiceBridgeImpl):
        (WebKit::WebGeolocationServiceBridgeImpl::~WebGeolocationServiceBridgeImpl):
        (WebKit::WebGeolocationServiceBridgeImpl::startUpdating):
        (WebKit::WebGeolocationServiceBridgeImpl::stopUpdating):
        (WebKit::WebGeolocationServiceBridgeImpl::suspend):
        (WebKit::WebGeolocationServiceBridgeImpl::resume):
        (WebKit::WebGeolocationServiceBridgeImpl::attachBridgeIfNeeded):

2010-09-07  Pavel Podivilov  <podivilov@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: upstream two debugger tests
        https://bugs.webkit.org/show_bug.cgi?id=45262

        * src/js/Tests.js:

2010-09-06  Jonathan Dixon  <joth@chromium.org>

        Reviewed by Jeremy Orlow.

        Add new interface and empty impl. as precursor to bug 45112
        https://bugs.webkit.org/show_bug.cgi?id=45257

        * public/WebGeolocationServiceBridge.h:
        (WebKit::WebGeolocationServiceBridge::~WebGeolocationServiceBridge):
        * src/WebGeolocationServiceBridgeImpl.cpp:
        (WebKit::WebGeolocationServiceBridgeImpl::onWebGeolocationServiceDestroyed):

2010-09-06  Pavel Podivilov  <podivilov@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: fix chromium devtools tests
        https://bugs.webkit.org/show_bug.cgi?id=45258

        * src/js/Tests.js:
        (.TestSuite.prototype._waitForScriptPause):

2010-08-26  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Steve Block.

        Add index insertion support to IndexedDB.
        https://bugs.webkit.org/show_bug.cgi?id=44695

        Add asserts on the [] operator.

        * public/WebVector.h:
        (WebKit::WebVector::operator[]):

2010-09-06  Anton Muhin  <antonm@chromium.org>

        Reviewed by Adam Barth.

        [v8] bypass caches when query memory usage from post GC and in crash handler.
        https://bugs.webkit.org/show_bug.cgi?id=45036

        Add Chromium-specific API to query actual memory usage which bypasses any caches.

        * public/WebKitClient.h:
        (WebKit::WebKitClient::actualMemoryUsageMB):
        * src/ChromiumBridge.cpp:
        (WebCore::ChromiumBridge::actualMemoryUsageMB):

2010-09-05  Peter Kasting  <pkasting@google.com>

        Reviewed by Adam Barth.

        Make Chromium/Mac generate continuous mousewheel events with the same wheelDelta values as Safari/Mac.
        https://bugs.webkit.org/show_bug.cgi?id=45155

        * src/mac/WebInputEventFactory.mm:
        (WebKit::WebInputEventFactory::mouseWheelEvent):

2010-09-05  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Joseph Pecoraro.

        Web Inspector: remove WebDevToolsAgentClient::forceRepaint which is not used
        https://bugs.webkit.org/show_bug.cgi?id=45179

        * public/WebDevToolsAgentClient.h:
        * src/DebuggerAgentImpl.cpp:
        (WebKit::DebuggerAgentImpl::debuggerOutput):
        * src/WebDevToolsAgentImpl.cpp:
        * src/WebDevToolsAgentImpl.h:

2010-09-05  Kenneth Russell  <kbr@google.com>

        Reviewed by Darin Fisher.

        Add unit tests for interval tree
        https://bugs.webkit.org/show_bug.cgi?id=45161

        * WebKit.gyp:
        * tests/PODIntervalTreeTest.cpp: Added.
        (WebCore::valueToString):
        (WebCore::TEST):
        (WebCore::UserData1::valueToString):
        (WebCore::EndpointType1::valueToString):

2010-09-05  Kenneth Russell  <kbr@google.com>

        Reviewed by Darin Fisher.

        Add unit tests for red-black tree and (POD) arena
        https://bugs.webkit.org/show_bug.cgi?id=45060

        * WebKit.gyp:
        * tests/PODArenaTest.cpp: Added.
        (WebCore::TestClass1::TestClass2::TestClass2):
        (WebCore::TEST_F):
        * tests/PODRedBlackTreeTest.cpp: Added.
        (WebCore::TEST):
        * tests/TreeTestHelpers.cpp: Added.
        (WebCore::TreeTestHelpers::generateSeed):
        (WebCore::TreeTestHelpers::initRandom):
        (WebCore::TreeTestHelpers::nextRandom):
        * tests/TreeTestHelpers.h: Added.

2010-09-03  Jesus Sanchez-Palencia  <jesus.palencia@openbossa.org>

        Reviewed by Darin Adler.

        Add NetworkingContext to avoid layer violations
        https://bugs.webkit.org/show_bug.cgi?id=42292

        Add Chromium's implementation of NetworkingContext.

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

2010-09-02  Vangelis Kokkevis  <vangelis@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Revert to software compositing if the accelerated
        compositor fails to initialize. If we tried to initialize the compositor
        for this WebView and failed, next time the associated chrome client is
        asked whether it can do accelerated compositing it will return false.
        https://bugs.webkit.org/show_bug.cgi?id=45124
        
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::allowsAcceleratedCompositing):
        * src/ChromeClientImpl.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::WebViewImpl):
        (WebKit::WebViewImpl::paint):
        (WebKit::WebViewImpl::allowsAcceleratedCompositing):
        (WebKit::WebViewImpl::setIsAcceleratedCompositingActive):
        (WebKit::WebViewImpl::getOnscreenGLES2Context):
        * src/WebViewImpl.h:

2010-09-03  James Robinson  <jamesr@chromium.org>

        [chromium] Add one more include to fix the mac compile.

        * src/GraphicsContext3D.cpp:

2010-09-03  James Robinson  <jamesr@chromium.org>

        [chromium] Compile fixes for 66746.

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

2010-09-03  Tony Chang  <tony@chromium.org>

        Unreviewed, remove svn:executable flag from images and css files.

        * src/js/Images/segmentChromium.png: Removed property svn:executable.
        * src/js/Images/segmentHoverChromium.png: Removed property svn:executable.
        * src/js/Images/segmentHoverEndChromium.png: Removed property svn:executable.
        * src/js/Images/segmentSelectedChromium.png: Removed property svn:executable.
        * src/js/Images/segmentSelectedEndChromium.png: Removed property svn:executable.
        * src/js/Images/statusbarBackgroundChromium.png: Removed property svn:executable.
        * src/js/Images/statusbarBottomBackgroundChromium.png: Removed property svn:executable.
        * src/js/Images/statusbarButtonsChromium.png: Removed property svn:executable.
        * src/js/Images/statusbarMenuButtonChromium.png: Removed property svn:executable.
        * src/js/Images/statusbarMenuButtonSelectedChromium.png: Removed property svn:executable.
        * src/js/devTools.css: Removed property svn:executable.

2010-09-03  James Robinson  <jamesr@chromium.org>

        Reviewed by Chris Marrin.

        Multiple accelerated 2D canvases should be able to use the same GraphicsContext3D
        https://bugs.webkit.org/show_bug.cgi?id=44926

        Adds a SharedContext3D to WebViewImpl. The SharedContext3D has to live on WebViewImpl to be
        tied to the lifetime of the compositor context.

        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::getSharedGraphicsContext3D):
        * src/ChromeClientImpl.h:
        * src/GraphicsContext3D.cpp:
        (WebCore::GraphicsContext3DInternal::initialize):
        (WebCore::GraphicsContext3DInternal::platformLayer):
        (WebCore::GraphicsContext3D::platformLayer):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::getSharedGraphicsContext3D):
        * src/WebViewImpl.h:

2010-08-31  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Steve Block.

        IDBCursor.continue() should reuse the .openCursor's IDBRequest object
        https://bugs.webkit.org/show_bug.cgi?id=44953

        * src/WebIDBCallbacksImpl.cpp:
        (WebCore::WebIDBCallbacksImpl::onError):
        (WebCore::WebIDBCallbacksImpl::onSuccess):

2010-09-02  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        REGRESSION: Crash occurs at objc_msgSend when closing a window that is displaying the web inspector
        https://bugs.webkit.org/show_bug.cgi?id=44230

        * src/InspectorFrontendClientImpl.cpp:
        (WebKit::InspectorFrontendClientImpl::disconnectFromBackend):
        * src/InspectorFrontendClientImpl.h:

2010-09-02  Satish Sampath  <satish@chromium.org>

        Reviewed by Jeremy Orlow.

        Remove obsolete public/API methods in chromium port
        https://bugs.webkit.org/show_bug.cgi?id=45108

        * public/WebSpeechInputController.h:
        (WebKit::WebSpeechInputController::startRecognition):

2010-09-02  Kent Tamura  <tkent@chromium.org>

        Reviewed by Dimitri Glazkov.

        [DRT/Chromium] Remove dependency to base/task.h and base/timer.h
        https://bugs.webkit.org/show_bug.cgi?id=45091

        * DEPS: Roll Chromium revision to 58277 in order to have
        webkit_support::PostDelayedTask().

2010-09-02  Ilya Sherman  <isherman@google.com>

        Reviewed by Eric Seidel.

        Exposing computing an element's inherited language, per the DOM, in the
        Chromium API -- primarily for use with autofill i18n.
        https://bugs.webkit.org/show_bug.cgi?id=44803

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

2010-09-01  Mikhail Naganov  <mnaganov@chromium.org>

        Reviewed by Yury Semikhatsky.

        Remove dependency on JS files for V8 logs processing.

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

        * WebKit.gyp:

2010-09-01  Kent Tamura  <tkent@chromium.org>

        Unreviewed, rolling out r66576.
        http://trac.webkit.org/changeset/66576
        https://bugs.webkit.org/show_bug.cgi?id=45016

        This change is not needed.

        * public/WebKitClient.h:

2010-08-31  Dave Hyatt  <hyatt@apple.com>

        Reviewed by Sam Weinig.

        https://bugs.webkit.org/show_bug.cgi?id=44863, disentangle style recalc from layout, so that
        the former can occur in more places without having to do the latter.

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::layout):

2010-08-31  Kent Tamura  <tkent@chromium.org>

        Reviewed by Dimitri Glazkov.

        [Chromium] Add WebKitClient::callOnMainThreadWithDelay()
        https://bugs.webkit.org/show_bug.cgi?id=45016

        It is required to remove base/task.h and base/timer.h dependency
        from DRT/Chromium.

        * public/WebKitClient.h:
        (WebKit::WebKitClient::callOnMainThreadWithDelay): Added.

2010-08-31  Kinuko Yasuda  <kinuko@chromium.org>

        Reviewed by Jian Li.

        Add LocalFileSystem.requestFileSystem interface to DOMWindow
        https://bugs.webkit.org/show_bug.cgi?id=44734

        * public/WebRuntimeFeatures.h:
        * src/WebRuntimeFeatures.cpp:
        (WebKit::WebRuntimeFeatures::enableFileSystem):
        (WebKit::WebRuntimeFeatures::isFileSystemEnabled):

2010-08-24  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Steve Block.

        Implement the rest of IDBCursors + make them persistent
        https://bugs.webkit.org/show_bug.cgi?id=44546

        * src/IDBCursorBackendProxy.cpp:
        (WebCore::IDBCursorBackendProxy::value):
        * src/IDBCursorBackendProxy.h:
        * src/WebIDBCursorImpl.cpp:
        (WebKit::WebIDBCursorImpl::value):

2010-08-27  John Gregg  <johnnyg@google.com>

        Reviewed by David Levin.

        Notifications should support a click event
        https://bugs.webkit.org/show_bug.cgi?id=44800

        * public/WebNotification.h:
        * src/WebNotification.cpp:
        (WebKit::WebNotification::dispatchClickEvent):

2010-08-31  Jian Li  <jianli@chromium.org>

        Reviewed by Darin Fisher.

        Switch the Blob implementation to using the blob data registration model
        https://bugs.webkit.org/show_bug.cgi?id=44389

        * src/WebSearchableFormData.cpp:
        (WebCore::HasSuitableTextElement):

2010-08-30  Nat Duca  <nduca@chromium.org>

        Reviewed by Adam Barth.

        [chromium] Accelerated Compositing: Artifacts/blink when enabling compositor.
        https://bugs.webkit.org/show_bug.cgi?id=44196

        If accelerated compositing enables after a page loads, the dirtied
        portion of the screen will be only a subset of the full screen,
        leading to artefacts. Avoid these artefacts by invalidating the
        visible content rect on compositor initialization.

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

2010-08-30  Kinuko Yasuda  <kinuko@chromium.osrc>

        Reviewed by Darin Fisher.

        Add DOMFileSystem implementation to support Entry manipulation operations
        https://bugs.webkit.org/show_bug.cgi?id=44732

        Fixed virtual-path / platform-path conversion timing. (The conversion needs to be done before calling AsyncFileSystem methods to support cross-filesystem operations.)

        * src/AsyncFileSystemChromium.cpp:
        (WebCore::AsyncFileSystemChromium::move):
        (WebCore::AsyncFileSystemChromium::copy):
        (WebCore::AsyncFileSystemChromium::remove):
        (WebCore::AsyncFileSystemChromium::readMetadata):
        (WebCore::AsyncFileSystemChromium::createFile):
        (WebCore::AsyncFileSystemChromium::createDirectory):
        (WebCore::AsyncFileSystemChromium::fileExists):
        (WebCore::AsyncFileSystemChromium::directoryExists):
        (WebCore::AsyncFileSystemChromium::readDirectory):

2010-08-30  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r66198.
        http://trac.webkit.org/changeset/66198
        https://bugs.webkit.org/show_bug.cgi?id=44856

        It made tests crash on Qt bot (Requested by Ossy_ on #webkit).

        * src/InspectorFrontendClientImpl.cpp:
        * src/InspectorFrontendClientImpl.h:

2010-08-29  Kent Tamura  <tkent@chromium.org>

        Reviewed by Darin Adler.

        Introduce isValidValue(const String&) of HTMLInputElement and HTMLTextAreaElement
        https://bugs.webkit.org/show_bug.cgi?id=43537

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

2010-08-29  Kent Tamura  <tkent@chromium.org>

        Reviewed by Dimitri Glazkov.

        [DRT/Chromium] Remove dependency to base/keyboard_codes.h
        https://bugs.webkit.org/show_bug.cgi?id=44847

        * DEPS: Roll Chromium revision to 57823 to have a webkit_support change.

2010-08-28  Jian Li  <jianli@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Add webkit_support.gyp:blob to WebKit.gyp
        https://bugs.webkit.org/show_bug.cgi?id=44829

        Also bump up chromium revision in DEPS in order to pick up
        the revision that contains blob change.

        * DEPS:
        * WebKit.gyp:

2010-08-28  Chris Guillory   <chris.guillory@google.com>

        Reviewed by Chris Fleizach.

        Add AX notification for childrenChanged
        https://bugs.webkit.org/show_bug.cgi?id=44472

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

2010-08-27  Daniel Cheng  <dcheng@chromium.org>

        Reviewed by Tony Chang.

        [chromium] Add new WebClipboard method for setting generic data in copy/cut handlers.
        https://bugs.webkit.org/show_bug.cgi?id=42121

        * public/WebClipboard.h:
        (WebKit::WebClipboard::writeData):
        (WebKit::WebClipboard::readFilenames):
        * src/ChromiumBridge.cpp:
        (WebCore::ChromiumBridge::clipboardWriteData):

2010-08-27  Kinuko Yasuda  <kinuko@chromium.org>

        Reviewed by Dumitru Daniliuc.

        [chromium] Add chromium-side of AsyncFileSystem implementation
        https://bugs.webkit.org/show_bug.cgi?id=44434

        * WebKit.gyp:
        * src/AssertMatchingEnums.cpp: Added assertions.
        * src/AsyncFileSystemChromium.cpp: Added.
        * src/AsyncFileSystemChromium.h: Added.
        * src/LocalFileSystemChromium.cpp: Added.
        * src/WebFileSystemCallbacksImpl.cpp:
        (WebKit::WebFileSystemCallbacksImpl::WebFileSystemCallbacksImpl):
        * src/WebFileSystemCallbacksImpl.h:

2010-08-27  Michael Nordman  <michaeln@google.com>

        Reviewed by David Levin.

        https://bugs.webkit.org/show_bug.cgi?id=44133
        WebKitAPI to allow runtime enablement of XmlHttpRequest.responseBlob.

        * features.gypi: Define ENABLE_XHR_RESPONSE_BLOB.
        * public/WebRuntimeFeatures.h:
        * src/WebRuntimeFeatures.cpp:
        (WebKit::WebRuntimeFeatures::enableXHRResponseBlob):
        (WebKit::WebRuntimeFeatures::isXHRResponseBlobEnabled):

2010-08-25  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Steve Block.

        Add setVersion to IndexedDB
        https://bugs.webkit.org/show_bug.cgi?id=44630

        * public/WebIDBDatabase.h:
        (WebKit::WebIDBDatabase::createObjectStore):
        (WebKit::WebIDBDatabase::removeObjectStore):
        (WebKit::WebIDBDatabase::setVersion):
        * src/IDBDatabaseProxy.cpp:
        (WebCore::IDBDatabaseProxy::setVersion):
        * src/IDBDatabaseProxy.h:
        * src/WebIDBDatabaseImpl.cpp:
        (WebKit::WebIDBDatabaseImpl::setVersion):
        * src/WebIDBDatabaseImpl.h:

2010-08-27  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        REGRESSION: Crash occurs at objc_msgSend when closing a window that is displaying the web inspector
        https://bugs.webkit.org/show_bug.cgi?id=44230

        * src/InspectorFrontendClientImpl.cpp:
        (WebKit::InspectorFrontendClientImpl::disconnectFromBackend):
        * src/InspectorFrontendClientImpl.h:

2010-08-27  Kent Tamura  <tkent@chromium.org>

        Reviewed by Pavel Feldman.

        [DRT/Chromium] Fix inspector test failures
        https://bugs.webkit.org/show_bug.cgi?id=44748

        * DEPS: Update Chromium revision to 57605 to have a webkit_support change.

2010-08-26  Dumitru Daniliuc  <dumi@chromium.org>

        Unreviewed, Chromium build fix.

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::markerTextForListItem):

2010-08-26  Dumitru Daniliuc  <dumi@chromium.org>

        Reviewed by Darin Fisher.

        Add support for markerTextForListItem() to Chromium's LayoutTestController.
        https://bugs.webkit.org/show_bug.cgi?id=44724

        * public/WebBindings.h:
        * public/WebFrame.h:
        * src/WebBindings.cpp:
        (WebKit::getElementImpl):
        (WebKit::WebBindings::getElement):
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::markerTextForListItem):
        * src/WebFrameImpl.h:

2010-08-26  James Robinson  <jamesr@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Remove the USE(GLES2_RENDERING) define and associated code
        https://bugs.webkit.org/show_bug.cgi?id=43761

        Removes API support to grab a GLES2Context from within WebCore.  The compositor
        has a special codepath to grab its GLES2Context and no other codepaths
        need access to a raw context.  Accelerated drawing elsewhere will go through
        GraphicsContext3D.

        * src/ChromeClientImpl.cpp:
        * src/ChromeClientImpl.h:

2010-08-26  Ryosuke Niwa  <rniwa@webkit.org>

        Reviewed by Eric Seidel.

        [chromium] WebEntities is broken
        https://bugs.webkit.org/show_bug.cgi?id=44708

        For serialization purposes, we don't need to convert all entity references.
        This patch modifies WebEntities::WebEntities to use hard-coded entity lists for both HTML and XML,
        and deletes populateMapFromXMLEntities and populateMapFromHTMLEntityTable.

        No tests are added since the code is tested in DomSerializerTests

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

2010-08-26  Peter Kasting  <pkasting@google.com>

        Reviewed by Dimitri Glazkov.

        Misc. cleanup split off from bug 32356.
        https://bugs.webkit.org/show_bug.cgi?id=44696

        * src/WebScrollbarImpl.cpp:
        (WebKit::WebScrollbarImpl::setLocation):
        (WebKit::WebScrollbarImpl::onMouseWheel):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::propagateScroll):
        * src/win/WebInputEventFactory.cpp:
        (WebKit::WebInputEventFactory::mouseWheelEvent):

2010-08-26  Mikhail Naganov  <mnaganov@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: Store heap snapshots in InspectorProfilerAgent.

        Change the way heap snapshots are transported to Inspector
        to be aligned with CPU profiles. As a result, the Heap snapshots
        view of Profiles panel was upstreamed into WebCore.

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

        * DEPS:
        * WebKit.gypi:
        * src/js/DevTools.js:
        ():
        * src/js/HeapProfilerPanel.js: Removed.
        * src/js/ProfilerAgent.js: Removed.
        * src/js/ProfilerProcessor.js: Removed.
        * src/js/devTools.css:

2010-08-26  Yury Semikhatsky  <yurys@chromium.org>

        Unreviewed. Revert r66103 since Qt tests are failing.

        * src/InspectorFrontendClientImpl.cpp:
        * src/InspectorFrontendClientImpl.h:

2010-08-26  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        REGRESSION: Crash occurs at objc_msgSend when closing a window that is displaying the web inspector
        https://bugs.webkit.org/show_bug.cgi?id=44230

        * src/InspectorFrontendClientImpl.cpp:
        (WebKit::InspectorFrontendClientImpl::disconnectFromBackend):
        * src/InspectorFrontendClientImpl.h:

2010-08-26  Kent Tamura  <tkent@chromium.org>

        Reviewed by Tony Chang.

        [DRT/Chromium] Enable DEVICE_ORIENTATION
        https://bugs.webkit.org/show_bug.cgi?id=44587

        * features.gypi:

2010-08-25  Ilya Tikhonovsky  <loislo@chromium.org>

        Reviewed by Pavel Feldman.

        WebInspector: as far as we have 'seq' property in the each inspector message
        it would be better to remove explicit callId argument from Inspector.idl functions
        declarations.
        https://bugs.webkit.org/show_bug.cgi?id=44617

        * src/js/ProfilerAgent.js:
        (devtools.ProfilerAgent.prototype._getNextLogLines.else.delayedRequest):
        (devtools.ProfilerAgent.prototype._getNextLogLines):

2010-08-25  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r66074.
        http://trac.webkit.org/changeset/66074
        https://bugs.webkit.org/show_bug.cgi?id=44660

        Chromium canary turned red (Requested by yuzo on #webkit).

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

2010-08-25  Michael Nordman  <michaeln@google.com>

        Reviewed by David Levin.

        https://bugs.webkit.org/show_bug.cgi?id=44133
        WebKitAPI to allow runtime enablement of XmlHttpRequest.responseBlob.

        * features.gypi: Define ENABLE_XHR_RESPONSE_BLOB.
        * public/WebRuntimeFeatures.h:
        * src/WebRuntimeFeatures.cpp:
        (WebKit::WebRuntimeFeatures::enableXHRResponseBlob):
        (WebKit::WebRuntimeFeatures::isXHRResponseBlobEnabled):

2010-08-24  Victoria Kirst  <vrk@google.com>

        Reviewed by Darin Fisher.

        Adding a way to communicate video frames between Chromium and WebKit.
        The WebKit side acts as a middleman between Chromium and WebCore.
        The VideoFrameChromiumImpl is not being used by WebCore yet, as there
        still needs to be an implementation of WebVideoFrame in Chromium
        -- coming soon in a subsequent patch.

        API changes for Video Frame sharing between WebKit and Chromium
        https://bugs.webkit.org/show_bug.cgi?id=44539

        * WebKit.gyp:
        * public/WebMediaPlayer.h:
        (WebKit::WebMediaPlayer::getCurrentFrame):
        (WebKit::WebMediaPlayer::putCurrentFrame):
        * public/WebVideoFrame.h: Added.
        * src/VideoFrameChromiumImpl.cpp: Added.
        (WebKit::VideoFrameChromiumImpl::toWebVideoFrame):
        (WebKit::VideoFrameChromiumImpl::VideoFrameChromiumImpl):
        (WebKit::VideoFrameChromiumImpl::type):
        (WebKit::VideoFrameChromiumImpl::format):
        (WebKit::VideoFrameChromiumImpl::width):
        (WebKit::VideoFrameChromiumImpl::height):
        (WebKit::VideoFrameChromiumImpl::planes):
        (WebKit::VideoFrameChromiumImpl::stride):
        (WebKit::VideoFrameChromiumImpl::data):
        * src/VideoFrameChromiumImpl.h: Added.
        * src/WebMediaPlayerClientImpl.cpp:
        (WebKit::WebMediaPlayerClientImpl::getCurrentFrame):
        (WebKit::WebMediaPlayerClientImpl::putCurrentFrame):
        (WebKit::WebMediaPlayerClientImpl::create):
        * src/WebMediaPlayerClientImpl.h:

2010-08-25  Eric Seidel  <eric@webkit.org>

        Unreviewed.  Build fix.

        Make Chromiums Broken WebPageSerializerImpl compile again
        https://bugs.webkit.org/show_bug.cgi?id=44652

        Make it compile again.  This code is still horribly wrong.

        * src/WebPageSerializerImpl.cpp:
        (WebKit::WebPageSerializerImpl::endTagToString):

2010-08-20  Zhenyao Mo  <zmo@google.com>

        Reviewed by Kenneth Russell.

        WebGL must enforce restrictions even if running on OpenGL ES 2.0
        https://bugs.webkit.org/show_bug.cgi?id=42908

        * public/WebGraphicsContext3D.h: Add two new flags.
        * src/GraphicsContext3D.cpp: Ditto.
        (WebCore::GraphicsContext3DInternal::isGLES2NPOTStrict):
        (WebCore::GraphicsContext3DInternal::isErrorGeneratedOnOutOfBoundsAccesses):
        (WebCore::GraphicsContext3D::isGLES2NPOTStrict):
        (WebCore::GraphicsContext3D::isErrorGeneratedOnOutOfBoundsAccesses):
        * src/WebGraphicsContext3DDefaultImpl.cpp: Ditto.
        (WebKit::WebGraphicsContext3DDefaultImpl::isGLES2NPOTStrict):
        (WebKit::WebGraphicsContext3DDefaultImpl::isErrorGeneratedOnOutOfBoundsAccesses):
        * src/WebGraphicsContext3DDefaultImpl.h: Ditto.

2010-08-24  Zhenyao Mo  <zmo@google.com>

        Reviewed by Kenneth Russell.

        Passing premultiplyAlpha=false to tex{Sub}Image2D loses information (skia)
        https://bugs.webkit.org/show_bug.cgi?id=38282

        * src/WebImageDecoder.cpp:
        (WebKit::WebImageDecoder::init): Add premultiplyAlpha flag.

2010-08-25  Satish Sampath  <satish@chromium.org>

        Reviewed by Jeremy Orlow.

        Pass the element's bounds to embedder during speech recognition.
        https://bugs.webkit.org/show_bug.cgi?id=44427

        * public/WebSpeechInputController.h:
        (WebKit::WebSpeechInputController::startRecognition):
        (WebKit::WebSpeechInputController::cancelRecognition):
        (WebKit::WebSpeechInputController::stopRecording):
        * src/SpeechInputClientImpl.cpp:
        (WebKit::SpeechInputClientImpl::startRecognition):
        * src/SpeechInputClientImpl.h:
        * src/WebSpeechInputControllerMockImpl.cpp:
        (WebKit::WebSpeechInputControllerMockImpl::startRecognition):
        * src/WebSpeechInputControllerMockImpl.h:

2010-08-25  Pawel Hajdan  <phajdan.jr@chromium.org>

        Reviewed by Darin Fisher.

        Add an assertion to prevent re-initializing WebKit.
        https://bugs.webkit.org/show_bug.cgi?id=44545
        
        This will help prevent crashes like:
        - http://code.google.com/p/chromium/issues/detail?id=52731
        - http://code.google.com/p/chromium/issues/detail?id=52643

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

2010-08-25  Jay Civelli  <jcivelli@chromium.org>

        Reviewed by Dimitri Glazkov.

        Adding missing test files and reenabling the WebFrame unit-test.
        https://bugs.webkit.org/show_bug.cgi?id=44492

        * tests/WebFrameTest.cpp:
        (WebKit::TEST_F):
        * tests/data/iframes_test.html: Added.
        * tests/data/invisible_iframe.html: Added.
        * tests/data/visible_iframe.html: Added.
        * tests/data/zero_sized_iframe.html: Added.

2010-08-25  Kent Tamura  <tkent@chromium.org>

        Unreviewed, build fix.

        * DEPS: Roll Chromium revision to 57298 to fix upstream build.

2010-08-24  Dumitru Daniliuc  <dumi@chromium.org>

        Reviewed by Adam Barth.

        Build fix: Remove setHTML5ParserEnabled(), it's no longer used.

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

2010-08-24  Jian Li  <jianli@chromium.org>

        Reviewed by Darin Fisher.

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

        Remove unneeded method from WebBlobRegistry interface.
        Also remove unneeded WebBlobRegistryImpl.* files. They're already
        excluded from gyp files.

        * public/WebBlobRegistry.h:
        * src/WebBlobRegistryImpl.cpp: Removed.
        * src/WebBlobRegistryImpl.h: Removed.

2010-08-24  Adam Barth  <abarth@webkit.org>

        Reviewed by Dimitri Glazkov.

        [Chromium] Hulu popups are blocked
        https://bugs.webkit.org/show_bug.cgi?id=44572

        We were blocking popups created by Flash Player because we were never
        setting the UserGestureIndicator for events.  Most WebKit ports handle
        events through EventHandler, but Chromium is special (for some unknown
        reason) and dispatches events directly.  That means Chromium misses out
        on some of the work done by EventHandler, including setting the
        UserGestureIndicator.

        I suspect this is covered by an existing LayoutTest, but I don't have
        the ability to run the Chromium LayoutTests on this machine.  :(

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

2010-08-24  Jian Li  <jianli@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Update WebBlobData.
        https://bugs.webkit.org/show_bug.cgi?id=44481

        Some changes to WebBlobData to match with chromium implementation.
        1) Change to use WebCString for data, instead of WebData.
        2) Separate path from URL.

        * public/WebBlobData.h:
        * src/WebBlobData.cpp:
        (WebKit::WebBlobData::itemAt):
        (WebKit::WebBlobData::appendData):
        (WebKit::WebBlobData::appendBlob):
        * src/WebBlobStorageData.cpp:
        (WebKit::WebBlobStorageData::itemAt):

2010-08-24  Marcus Bulach  <bulach@chromium.org>

        Reviewed by Jeremy Orlow.

        Hooks IDBKeyPath with IDBObjectStorage::put.
        https://bugs.webkit.org/show_bug.cgi?id=44275

        Adds a mechanism to extract an IDBKey from SerializedScriptValue using IDBKeyPath
        during IDBObjectStorage::put.

        * public/WebIDBKey.h:
        (WebKit::WebIDBKey::WebIDBKey):
        * public/WebKitClient.h:
        (WebKit::WebKitClient::createIDBKeysFromSerializedValuesAndKeyPath):
        * src/ChromiumBridge.cpp:
        (WebCore::ChromiumBridge::createIDBKeysFromSerializedValuesAndKeyPath):

2010-08-24  Kent Tamura  <tkent@chromium.org>

        Reviewed by Jeremy Orlow.

        [DRT/Chromium] Support for IndexedDB tests
        https://bugs.webkit.org/show_bug.cgi?id=44490

        * DEPS: Roll Chromium to r57145 to have a webkit_support change.

2010-08-24  Roland Steiner  <rolandsteiner@chromium.org>

        Unreviewed build fix.

        put the "DISABLED_" in front of the right identifier.

        * tests/WebFrameTest.cpp:
        (WebKit::TEST_F):

2010-08-23  Roland Steiner  <rolandsteiner@chromium.org>

        Reviewed by Tamura Kent.

        Disable failing test
        https://bugs.webkit.org/show_bug.cgi?id=44492

        * tests/WebFrameTest.cpp:
        (WebKit::TEST_F):

2010-08-23  Jay Civelli  <jcivelli@chromium.org>

        Reviewed by Darin Fisher.

        Made WebFrame not report the text from hidden frames.
        (some pages contain hidden frames with garbage text that
        should not be indexed or used to detect the page's language).
        https://bugs.webkit.org/show_bug.cgi?id=39456

        * WebKit.gyp:
        * public/WebCString.h:
        (WebKit::operator<):
        * public/WebURL.h:
        (WebKit::operator<):
        * src/WebCString.cpp:
        (WebKit::WebCString::compare):
        * src/WebFrameImpl.cpp:
        (WebKit::frameContentAsPlainText):
        * tests/RunAllTests.cpp:
        (main):
        * tests/WebFrameTest.cpp: Added.

2010-08-23  Kent Tamura  <tkent@chromium.org>

        Unreviewed, build fix for r65852.

        * src/WebNode.cpp:
        (WebKit::WebNode::parentNode):

2010-08-23  Kenneth Russell  <kbr@google.com>

        Reviewed by Dimitri Glazkov.

        Remove references to ArrayBuffer and ArrayBufferView from GraphicsContext3D
        https://bugs.webkit.org/show_bug.cgi?id=44455

        Updated Safari, Qt and Chromium WebGL ports to avoid referencing
        ArrayBuffer and ArrayBufferView types from GraphicsContext3D.

        Ran all WebGL layout tests; no new regressions. Built and tested
        WebKit on Mac OS X; built Chromium on Mac OS X and Linux.

        * src/GraphicsContext3D.cpp:
        (WebCore::GraphicsContext3DInternal::bufferData):
        (WebCore::GraphicsContext3DInternal::bufferSubData):

2010-08-23  Jian Li  <jianli@chromium.org>

        Reviewed by David Levin.

        Remove unneeded BlobRegistryImpl.* and WebBlobRegistryImpl.* from
        chromium project files.
        https://bugs.webkit.org/show_bug.cgi?id=44442

        * WebKit.gyp:

2010-08-23  Satish Sampath  <satish@chromium.org>

        Reviewed by Jeremy Orlow.

        Remove obsolete public/API methods in chromium port
        https://bugs.webkit.org/show_bug.cgi?id=44421

        * public/WebSpeechInputController.h:
        (WebKit::WebSpeechInputController::startRecognition):
        (WebKit::WebSpeechInputController::cancelRecognition):
        (WebKit::WebSpeechInputController::stopRecording):
        * public/WebSpeechInputListener.h:

2010-08-22  Daniel Bates  <dbates@rim.com>

        Reviewed by Eric Seidel.

        Encapsulate document marker management into DocumentMarkerController
        https://bugs.webkit.org/show_bug.cgi?id=44383

        Modify call sites in the Chromium port to use DocumentMarkerController.

        No functionality was changed, so no new tests.

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::stopFinding):
        (WebKit::WebFrameImpl::addMarker):
        (WebKit::WebFrameImpl::setMarkerActive):

2010-08-22  Jian Li  <jianli@chromium.org>

        Reviewed by Darin Fisher.

        Add the blob URL member to FormData.
        https://bugs.webkit.org/show_bug.cgi?id=44387

        As the result of adding the blob URL member to the FormData, we need
        to update the corresponding WebKit API for chromium.

        * public/WebHTTPBody.h:
        (WebKit::WebHTTPBody::Element::):
        * src/WebHTTPBody.cpp:
        (WebKit::WebHTTPBody::elementAt):
        (WebKit::WebHTTPBody::appendBlob):

2010-08-20  Kinuko Yasuda  <kinuko@chromium.org>

        Unreviewed; build fix for chromium (and remove duplicated ChangeLog entry).

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

        Synchronize default of use_accelerated_compositing gyp variable with downstream.  Unreviewed.

        * features.gypi:

2010-08-20  Kinuko Yasuda  <kinuko@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Add chromium-side callback implementation for FileSystem API
        https://bugs.webkit.org/show_bug.cgi?id=44350

        Add WebFileSystemCallbacks that calls back the WebCore's implementation.

        * WebKit.gyp:
        * src/WebFileSystemCallbacksImpl.cpp: Added.
        * src/WebFileSystemCallbacksImpl.h: Added.

2010-08-20  Tony Chang  <tony@chromium.org>

        Reviewed by Kent Tamura.

        [chromium] fix a null pointer crash when dispatching JS keyboard events
        https://bugs.webkit.org/show_bug.cgi?id=44313

        * src/WebInputEventConversion.cpp:
        (WebKit::WebKeyboardEventBuilder::WebKeyboardEventBuilder):

2010-08-20  Jay Civelli  <jcivelli@chromium.org>

        Reviewed by Darin Fisher.

        Removing the deprecated class WebEvent and friends.
        https://bugs.webkit.org/show_bug.cgi?id=44296

        * WebKit.gyp:
        * public/WebEvent.h: Removed.
        * public/WebEventListener.h: Removed.
        * public/WebMutationEvent.h: Removed.
        * public/WebNode.h:
        * src/EventListenerWrapper.cpp:
        (WebKit::EventListenerWrapper::webDOMEventListenerDeleted):
        * src/EventListenerWrapper.h:
        * src/WebEvent.cpp: Removed.
        * src/WebEventListener.cpp: Removed.
        * src/WebEventListenerPrivate.cpp: Removed.
        * src/WebEventListenerPrivate.h: Removed.
        * src/WebNode.cpp:
        (WebKit::WebNode::removeEventListener):

2010-08-19  Zhenyao Mo  <zmo@google.com>

        Reviewed by Kenneth Russell.

        Fix failing WebGL tests in Chromium in-process-webgl port
        https://bugs.webkit.org/show_bug.cgi?id=44305

        * src/WebGraphicsContext3DDefaultImpl.cpp:
        (WebKit::WebGraphicsContext3DDefaultImpl::getVertexAttribOffset): Add implementation.

2010-08-19  Pavel Podivilov  <podivilov@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: enable DOM breakpoints for chromium
        https://bugs.webkit.org/show_bug.cgi?id=42886

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

2010-08-19  Vincent Scheib  <scheib@chromium.org>

        Reviewed by David Levin.

        [chromium] TilingData::tilePositionY has typo of X where Y should be used
        https://bugs.webkit.org/show_bug.cgi?id=44195

        Unit tests added for tileSize and tilePosition.

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

2010-08-19  Kinuko Yasuda  <kinuko@chromium.org>

        Reviewed by Darin Fisher.

        Add WebKit API for FileSystem API
        https://bugs.webkit.org/show_bug.cgi?id=43151

        Add asynchronous FileSystem interface to WebKit API for
        FileSystem API.
        http://dev.w3.org/2009/dap/file-system/file-dir-sys.html

        * WebKit.gyp:
        * public/WebFileError.h: Added.
        * public/WebFileSystem.h: Added.
        * public/WebFileSystemEntry.h: Added.
        * public/WebFileSystemCallbacks.h: Added.
        * public/WebKitClient.h:
        (WebKit::WebKitClient::fileSystem):
        * public/WebFrameClient.h:
        (WebKit::WebFrameClient::openFileSystem):

2010-08-19  Kinuko Yasuda  <kinuko@chromium.org>

        Reviewed by Jian Li.

        [Chromium] Rolls Chromium DEPS forward to 56564
        https://bugs.webkit.org/show_bug.cgi?id=44281

        Roll Chromium DEPS forward to 56564 to include WebFileSystem
        implementation changes.

        * DEPS:

2010-08-19  Vincent Scheib  <scheib@chromium.org>

        Reviewed by David Levin.

        Fixing previous Mac only build breakage with TilingDataTest.cpp
        https://bugs.webkit.org/show_bug.cgi?id=44223

        TilingDataTest.cpp included the wrong header, which had a compile 
        option around the definition of the WebCore namespace. Without the 
        namespace defined, error. Fixed by correctly including TilingData.h, 
        which has no conditional compilation.

        * WebKit.gyp:
        * tests/TilingDataTest.cpp:

2010-08-19  Jochen Eisinger  <jochen@chromium.org>

        Reviewed by Pavel Feldman.

        concatenated_devtools_js should depend on inspector_protocol_sources
        https://bugs.webkit.org/show_bug.cgi?id=44255

        * WebKit.gyp:

2010-08-19  Pavel Podivilov  <podivilov@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: activate/deactivate breakpoints using v8 debugger flag.
        https://bugs.webkit.org/show_bug.cgi?id=44112

        * src/js/DebuggerScript.js:
        ():

2010-08-19  Andrei Popescu  <andreip@google.com>

        Reviewed by Jeremy Orlow.

        [IndexedDB] Abort idle IDBTransactions when the JS context they were created in finishes execution.
        https://bugs.webkit.org/show_bug.cgi?id=44101

        * WebKit.gyp:
        * public/WebIDBDatabase.h:
        (WebKit::WebIDBDatabase::transaction):
        * public/WebIDBFactory.h:
        (WebKit::WebIDBFactory::abortPendingTransactions):
        * public/WebIDBTransaction.h: Added.
        (WebKit::WebIDBTransaction::~WebIDBTransaction):
        (WebKit::WebIDBTransaction::mode):
        (WebKit::WebIDBTransaction::objectStore):
        (WebKit::WebIDBTransaction::abort):
        (WebKit::WebIDBTransaction::id):
        (WebKit::WebIDBTransaction::setCallbacks):
        * public/WebIDBTransactionCallbacks.h: Added.
        (WebKit::WebIDBTransactionCallbacks::~WebIDBTransactionCallbacks):
        (WebKit::WebIDBTransactionCallbacks::onAbort):
        (WebKit::WebIDBTransactionCallbacks::id):
        * src/IDBDatabaseProxy.cpp:
        (WebCore::IDBDatabaseProxy::transaction):
        * src/IDBFactoryBackendProxy.cpp:
        (WebCore::IDBFactoryBackendProxy::abortPendingTransactions):
        * src/IDBFactoryBackendProxy.h:
        * src/IDBTransactionBackendProxy.cpp: Added.
        (WebCore::IDBTransactionBackendProxy::create):
        (WebCore::IDBTransactionBackendProxy::IDBTransactionBackendProxy):
        (WebCore::IDBTransactionBackendProxy::~IDBTransactionBackendProxy):
        (WebCore::IDBTransactionBackendProxy::objectStore):
        (WebCore::IDBTransactionBackendProxy::mode):
        (WebCore::IDBTransactionBackendProxy::abort):
        (WebCore::IDBTransactionBackendProxy::scheduleTask):
        (WebCore::IDBTransactionBackendProxy::sqliteDatabase):
        (WebCore::IDBTransactionBackendProxy::id):
        (WebCore::IDBTransactionBackendProxy::setCallbacks):
        * src/IDBTransactionBackendProxy.h: Added.
        * src/IDBTransactionCallbacksProxy.cpp: Added.
        (WebCore::IDBTransactionCallbacksProxy::create):
        (WebCore::IDBTransactionCallbacksProxy::IDBTransactionCallbacksProxy):
        (WebCore::IDBTransactionCallbacksProxy::~IDBTransactionCallbacksProxy):
        (WebCore::IDBTransactionCallbacksProxy::onAbort):
        (WebCore::IDBTransactionCallbacksProxy::id):
        * src/IDBTransactionCallbacksProxy.h: Added.
        * src/WebDOMStringList.cpp:
        (WebKit::WebDOMStringList::length):
        * src/WebIDBDatabaseImpl.cpp:
        (WebKit::WebIDBDatabaseImpl::transaction):
        * src/WebIDBDatabaseImpl.h:
        * src/WebIDBFactoryImpl.cpp:
        (WebKit::WebIDBFactoryImpl::abortPendingTransactions):
        * src/WebIDBFactoryImpl.h:
        * src/WebIDBTransactionCallbacksImpl.cpp: Added.
        (WebCore::WebIDBTransactionCallbacksImpl::WebIDBTransactionCallbacksImpl):
        (WebCore::WebIDBTransactionCallbacksImpl::~WebIDBTransactionCallbacksImpl):
        (WebCore::WebIDBTransactionCallbacksImpl::onAbort):
        (WebCore::WebIDBTransactionCallbacksImpl::id):
        * src/WebIDBTransactionCallbacksImpl.h: Added.
        * src/WebIDBTransactionImpl.cpp: Added.
        (WebKit::WebIDBTransactionImpl::WebIDBTransactionImpl):
        (WebKit::WebIDBTransactionImpl::~WebIDBTransactionImpl):
        (WebKit::WebIDBTransactionImpl::mode):
        (WebKit::WebIDBTransactionImpl::objectStore):
        (WebKit::WebIDBTransactionImpl::abort):
        (WebKit::WebIDBTransactionImpl::id):
        (WebKit::WebIDBTransactionImpl::setCallbacks):
        * src/WebIDBTransactionImpl.h: Added.
        (WebKit::):

2010-08-19  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Yury Semikhatsky.

        Chromium DevTools: There is no need in resource-based InjectedScript.js source.
        Now that we populate front-end after its onload handler, I don't think we need
        to install injected script early.
        https://bugs.webkit.org/show_bug.cgi?id=44029

        * public/WebDevToolsAgentClient.h:
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::):
        (WebKit::WebDevToolsAgentImpl::attach):
        (WebKit::WebDevToolsAgentImpl::frontendLoaded):

2010-08-19  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Yury Semikhatsky.

        Chromium DevTools: remove setRuntimeFeatureEnabled API method that
        is no longer used.
        https://bugs.webkit.org/show_bug.cgi?id=44237

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

2010-08-18  Jian Li  <jianli@chromium.org>

        Fix layout test crashes in chromium.

        * src/BlobRegistryProxy.cpp:
        (WebCore::BlobRegistryProxy::registerBlobURL):
        (WebCore::BlobRegistryProxy::unregisterBlobURL):

2010-08-18  Jian Li  <jianli@chromium.org>

        Fix chromium build break.

        * src/WebBlobStorageData.cpp:
        (WebKit::WebBlobStorageData::itemAt):

2010-08-18  Jian Li  <jianli@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Chromium side implementation of blob data and blob registry.
        https://bugs.webkit.org/show_bug.cgi?id=43871

        * WebKit.gyp:
        * public/WebBlobData.h: Added.
        * public/WebBlobRegistry.h: Added.
        * public/WebBlobStorageData.h: Added.
        * public/WebKitClient.h:
        (WebKit::WebKitClient::blobRegistry):
        * src/BlobRegistryProxy.cpp: Added.
        * src/BlobRegistryProxy.h: Added.
        * src/WebBlobData.cpp: Added.
        * src/WebBlobRegistryImpl.cpp: Added.
        * src/WebBlobRegistryImpl.h: Added.
        * src/WebBlobStorageData.cpp: Added.

2010-08-18  Dumitru Daniliuc  <dumi@chromium.org>

        Reviewed by Darin Fisher.

        Propagate the m_downloadFilePath correctly.
        https://bugs.webkit.org/show_bug.cgi?id=44198

        * src/WebURLRequest.cpp:
        (WebKit::WebURLRequestPrivateImpl::WebURLRequestPrivateImpl):
        * src/WebURLResponse.cpp:
        (WebKit::WebURLResponsePrivateImpl::WebURLResponsePrivateImpl):

2010-08-18  Victor Wang  <victorw@chromium.org>

        Unreviewed. Fix chromium multi dll build.

        * public/WebIDBKeyPath.h:

2010-08-18  Jay Civelli  <jcivelli@chromium.org>

        Reviewed by Darin Fisher.

        Renaming the WebEvent to WebDOMEvent and adding a new event class
        for mouse events so that the event listener API can be used to listen
        to them.  The renaming is needed as there already is a WebMouseEvent class.
        https://bugs.webkit.org/show_bug.cgi?id=43453

        * WebKit.gyp:
        * public/WebDOMEvent.h: Added.
        * public/WebDOMEventListener.h: Added.
        * public/WebDOMMouseEvent.h: Added.
        * public/WebDOMMutationEvent.h: Added.
        * public/WebNode.h:
        * src/EventListenerWrapper.cpp:
        * src/EventListenerWrapper.h:
        * src/WebDOMEvent.cpp: Added.
        * src/WebDOMEventListener.cpp: Added.
        * src/WebDOMEventListenerPrivate.cpp: Added.
        * src/WebDOMEventListenerPrivate.h: Added.
        * src/WebDOMMouseEvent.cpp: Added.
        * src/WebDOMMutationEvent.cpp: Added.
        * src/WebNode.cpp:
        (WebKit::WebNode::isElementNode):
        (WebKit::WebNode::addDOMEventListener):
        (WebKit::WebNode::removeDOMEventListener):

2010-08-17  Ilya Tikhonovsky  <loislo@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: replace hand written InspectorBackendStub.js with generated one.
        https://bugs.webkit.org/show_bug.cgi?id=43791

        * WebKit.gyp:

2010-08-18  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r65238.
        http://trac.webkit.org/changeset/65238
        https://bugs.webkit.org/show_bug.cgi?id=44168

        Check if clobbering chromium bot fixes the layout test
        failures (Requested by hamaji on #webkit).

        * public/WebFrameClient.h:
        (WebKit::WebFrameClient::frameDetached):
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::detachedFromParent3):

2010-08-18  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r65595.
        http://trac.webkit.org/changeset/65595
        https://bugs.webkit.org/show_bug.cgi?id=44161

        qt build failed (Requested by loislo on #webkit).

        * WebKit.gyp:

2010-08-17  Ilya Tikhonovsky  <loislo@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: replace hand written InspectorBackendStub.js by generated one.
        https://bugs.webkit.org/show_bug.cgi?id=43791

        * WebKit.gyp:

2010-08-17  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Yury Semikhatsky.

        Chromium DevTools: Support runtime property name/value pairs
        instead of feature names as navigation state.
        https://bugs.webkit.org/show_bug.cgi?id=44054

        * public/WebDevToolsAgent.h:
        * public/WebDevToolsAgentClient.h:
        (WebKit::WebDevToolsAgentClient::runtimePropertyChanged):
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::setRuntimeProperty):
        (WebKit::WebDevToolsAgentImpl::setApuAgentEnabled):
        * src/WebDevToolsAgentImpl.h:

2010-08-17  Jesus Sanchez-Palencia  <jesus.palencia@openbossa.org>

        Reviewed by Darin Adler.

        Add NetworkingContext to avoid layer violations
        https://bugs.webkit.org/show_bug.cgi?id=42292

        Preparation: Just add the files to the build system.

        * WebKit.gyp: Added new files.
        * src/FrameNetworkingContextImpl.h: Added.
        Placeholder with tentative code that might be changed when landing
        the rest of it.

2010-08-17  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r65516.
        http://trac.webkit.org/changeset/65516
        https://bugs.webkit.org/show_bug.cgi?id=44126

        broke chromium unit tests on mac and linux (Requested by
        johnny_g on #webkit).

        * WebKit.gyp:
        * src/WebFrameImpl.cpp:
        (WebKit::frameContentAsPlainText):
        * tests/RunAllTests.cpp:
        (main):
        * tests/WebFrameTest.cpp: Removed.

2010-08-17  Jay Civelli  <jcivelli@chromium.org>

        Reviewed by Darin Fisher.

        Made WebFrame not report the text from hidden frames.
        (some pages contain hidden frames with garbage text that
        should not be indexed or used to detect the page's language).
        https://bugs.webkit.org/show_bug.cgi?id=39456

        * WebKit.gyp:
        * public/WebCString.h:
        (WebKit::operator<):
        * public/WebURL.h:
        (WebKit::operator<):
        * src/WebCString.cpp:
        (WebKit::WebCString::compare):
        * src/WebFrameImpl.cpp:
        (WebKit::frameContentAsPlainText):
        * tests/RunAllTests.cpp:
        (main):
        * tests/WebFrameTest.cpp: Added.

2010-08-17  Kelly Norton  <knorton@google.com>

        Reviewed by Pavel Feldman.

        Web Inspector: Fixes a crash in addTimelineRecord when InspectorTimelineAgent
        is enabled through WebDevToolsAgentImpl::setApuEnabled.
        https://bugs.webkit.org/show_bug.cgi?id=44105

        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::setApuAgentEnabled):

2010-08-17  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: upstream Chromium debugger step tests
        https://bugs.webkit.org/show_bug.cgi?id=44106

        * src/js/Tests.js:

2010-08-17  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r65500.
        http://trac.webkit.org/changeset/65500
        https://bugs.webkit.org/show_bug.cgi?id=44108

        Qt bots failed to compile. (Requested by loislo on #webkit).

        * WebKit.gyp:

2010-08-17  Ilya Tikhonovsky  <loislo@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: replace hand written InspectorBackendStub.js by generated one.
        https://bugs.webkit.org/show_bug.cgi?id=43791

        * WebKit.gyp:

2010-08-17  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: upstream Chromium console tests and remove a couple
        of tests that have already been covered with layout tests.
        https://bugs.webkit.org/show_bug.cgi?id=44057

        * src/js/Tests.js:
        (.TestSuite.prototype.testConsoleEval):
        (.TestSuite.prototype.testConsoleLog):
        (.TestSuite.prototype.testEvalGlobal):

2010-08-16  Kinuko Yasuda  <kinuko@chromium.org>

        Unreviewed; attempt to fix Chromium Windows build.

        * public/WebFileUtilities.h:

2010-08-16  Kinuko Yasuda  <kinuko@chromium.org>

        Reviewed by Jian Li.

        [chromium] Prepare to rename WebFileSystem interface to WebFileUtilities
        https://bugs.webkit.org/show_bug.cgi?id=44077

        We are going to have an implementation for HTML5 FileSystem API and
        it would probably be less confusing to use the name "WebFileSystem"
        for an WebKit API for the HTML5 API.

        This patch adds WebFileUtilities interface that is meant to replace
        the existing WebFileSystem.

        * WebKit.gyp:
        * public/WebFileSystem.h:
        * public/WebFileUtilities.h: Added.
        * public/WebKitClient.h:
        (WebKit::WebKitClient::fileUtilities): Added.
        * src/ChromiumBridge.cpp:
        (WebCore::ChromiumBridge::fileExists):
        (WebCore::ChromiumBridge::deleteFile):
        (WebCore::ChromiumBridge::deleteEmptyDirectory):
        (WebCore::ChromiumBridge::getFileSize):
        (WebCore::ChromiumBridge::getFileModificationTime):
        (WebCore::ChromiumBridge::directoryName):
        (WebCore::ChromiumBridge::pathByAppendingComponent):
        (WebCore::ChromiumBridge::makeAllDirectories):
        (WebCore::ChromiumBridge::getAbsolutePath):
        (WebCore::ChromiumBridge::isDirectory):
        (WebCore::ChromiumBridge::filePathToURL):
        (WebCore::ChromiumBridge::openFile):
        (WebCore::ChromiumBridge::closeFile):
        (WebCore::ChromiumBridge::seekFile):
        (WebCore::ChromiumBridge::truncateFile):
        (WebCore::ChromiumBridge::readFromFile):
        (WebCore::ChromiumBridge::writeToFile):

2010-08-16  Nate Chapin  <japhet@chromium.org>

        Unreviewed, build fix.

        Don't include TilingDataTest.cpp, since it doesn't
        compile on mac.

        * WebKit.gyp:

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

        Compile fix.  Fix up paintsIntoCanvasBuffer impl.

        * src/GraphicsContext3D.cpp:
        (WebCore::GraphicsContext3D::paintsIntoCanvasBuffer):

2010-08-16  Vincent Scheib  <scheib@chromium.org>

        Reviewed by Dimitri Glazkov.

        Canvas2D does not support images larger than system's GPU max texture size
        https://bugs.webkit.org/show_bug.cgi?id=43864

        Unit tests for TilingData class.

        * WebKit.gyp:
        * tests/TilingDataTest.cpp: Added.
        (WebCore::TEST):

2010-08-16  Alex Milowski  <alex@milowski.com>

        Reviewed by David Levin.

        Added the ENABLE_MATHML=1 to the feature_defines.

        * features.gypi:

2010-08-16  Marcus Bulach  <bulach@chromium.org>

        Reviewed by Jeremy Orlow.

        Implements IDBKeyPath extractor.
        https://bugs.webkit.org/show_bug.cgi?id=43276

        Unit-test IDBKeyPathExtractorTest.cpp.
        LayoutTests will arrive as IndexedDB infrastructure is fleshed out.


        * WebKit.gyp:
        * public/WebIDBKey.h:
        * public/WebIDBKeyPath.h: Added.
        (WebKit::WebIDBKeyPath::WebIDBKeyPath):
        (WebKit::WebIDBKeyPath::~WebIDBKeyPath):
        * public/WebPrivateOwnPtr.h: Added.
        (WebKit::WebPrivateOwnPtr::WebPrivateOwnPtr):
        (WebKit::WebPrivateOwnPtr::~WebPrivateOwnPtr):
        (WebKit::WebPrivateOwnPtr::reset):
        (WebKit::WebPrivateOwnPtr::get):
        (WebKit::WebPrivateOwnPtr::operator->):
        * src/WebIDBKey.cpp:
        (WebKit::WebIDBKey::createFromValueAndKeyPath):
        * src/WebIDBKeyPath.cpp: Added.
        (WebKit::WebIDBKeyPath::create):
        (WebKit::WebIDBKeyPath::WebIDBKeyPath):
        (WebKit::WebIDBKeyPath::parseError):
        (WebKit::WebIDBKeyPath::assign):
        (WebKit::WebIDBKeyPath::reset):
        (WebKit::WebIDBKeyPath::operator const WTF::Vector<WebCore::IDBKeyPathElement, 0>&):
        * tests/IDBBindingUtilitiesTest.cpp: Added.
        (WebCore::LocalContext::LocalContext):
        (WebCore::LocalContext::~LocalContext):
        (WebCore::checkKeyFromValueAndKeyPathInternal):
        (WebCore::checkKeyPathNullValue):
        (WebCore::checkKeyPathStringValue):
        (WebCore::checkKeyPathNumberValue):
        (WebCore::TEST):

2010-07-28  Marcus Bulach  <bulach@chromium.org>

        Reviewed by Adam Barth.

        Implement IDBKeyPath parser.
        https://bugs.webkit.org/show_bug.cgi?id=42976

        IDBKeyPath is an internal class, exposed only for unit tests for now.
        It'll allow indexed database implementation to traverse a given key path and obtain the corresponding properties
        from a SerializedScriptValue.

        * WebKit.gyp:
        * tests/IDBKeyPathTest.cpp: Added.
        (WebCore::ExpectedToken::ExpectedToken):
        (WebCore::checkKeyPath):
        (WebCore::TEST):

2010-08-16  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Joseph Pecoraro.

        Web Inspector: upstream frontend-side WebSocket transport.
        https://bugs.webkit.org/show_bug.cgi?id=43970

        Chromium already has an alternate WebSocket-based communication channel with
        the backend. Upstreaming it in this change. We will agree on the URI
        of the remote service as the protocol matures.

        * src/WebDevToolsFrontendImpl.cpp:
        (WebKit::WebDevToolsFrontendImpl::dispatchOnInspectorFrontend):
        * src/js/DevTools.js:
        (WebInspector.loaded):
        (devtools.domContentLoaded):

2010-08-16  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: remove utility context related code from debugger agent
        https://bugs.webkit.org/show_bug.cgi?id=44049

        * src/DebuggerAgentManager.cpp:
        (WebKit::DebuggerAgentManager::onV8DebugMessage):
        (WebKit::DebuggerAgentManager::pauseScript):
        * src/DebuggerAgentManager.h:

2010-08-16  Yuta Kitamura  <yutak@chromium.org>

        Reviewed by Shinichiro Hamaji.

        Attempt to fix Chromium's test_shell_tests.

        Port Chromium's WebEntities to HTMLEntityTable
        https://bugs.webkit.org/show_bug.cgi?id=44036

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

2010-08-15  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        Port Chromium's WebEntities to HTMLEntityTable
        https://bugs.webkit.org/show_bug.cgi?id=44036

        This code is wrong and needs to be removed.  However, at least after
        this patch, it will compile.

        * src/WebEntities.cpp:
        (WebKit::):
        (WebKit::WebEntities::WebEntities):
        * src/WebEntities.h:

2010-08-13  Satish Sampath  <satish@chromium.org>

        Reviewed by Jeremy Orlow.

        Support for multiple speech enabled elements in same page.
        https://bugs.webkit.org/show_bug.cgi?id=43922

        * public/WebSpeechInputController.h: Bubbles up the requestId given by webcore to the embedder.
        (WebKit::WebSpeechInputController::startRecognition):
        (WebKit::WebSpeechInputController::cancelRecognition):
        (WebKit::WebSpeechInputController::stopRecording):
        * public/WebSpeechInputListener.h: Passes down the requestId given by embedder to webcore.
        (WebKit::WebSpeechInputListener::didCompleteRecording):
        (WebKit::WebSpeechInputListener::setRecognitionResult):
        (WebKit::WebSpeechInputListener::didCompleteRecognition):
        * src/SpeechInputClientImpl.cpp:
        (WebKit::SpeechInputClientImpl::setListener):
        (WebKit::SpeechInputClientImpl::startRecognition):
        (WebKit::SpeechInputClientImpl::stopRecording):
        (WebKit::SpeechInputClientImpl::cancelRecognition):
        (WebKit::SpeechInputClientImpl::didCompleteRecording):
        (WebKit::SpeechInputClientImpl::didCompleteRecognition):
        (WebKit::SpeechInputClientImpl::setRecognitionResult):
        * src/SpeechInputClientImpl.h:
        * src/WebSpeechInputControllerMockImpl.cpp:
        (WebKit::WebSpeechInputControllerMockImpl::WebSpeechInputControllerMockImpl):
        (WebKit::WebSpeechInputControllerMockImpl::~WebSpeechInputControllerMockImpl):
        (WebKit::WebSpeechInputControllerMockImpl::didCompleteRecording):
        (WebKit::WebSpeechInputControllerMockImpl::didCompleteRecognition):
        (WebKit::WebSpeechInputControllerMockImpl::setRecognitionResult):
        (WebKit::WebSpeechInputControllerMockImpl::startRecognition):
        (WebKit::WebSpeechInputControllerMockImpl::cancelRecognition):
        (WebKit::WebSpeechInputControllerMockImpl::stopRecording):
        * src/WebSpeechInputControllerMockImpl.h:

2010-08-12  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: allow interrupting long running JS to execute inspector command
        https://bugs.webkit.org/show_bug.cgi?id=43900

        * public/WebDevToolsAgent.h:
        (WebKit::WebDevToolsAgent::MessageDescriptor::~MessageDescriptor):
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgent::interruptAndDispatch):
        (WebKit::WebDevToolsAgent::shouldInterruptForMessage):
        (WebKit::WebDevToolsAgent::processPendingMessages):
        * src/WebDevToolsFrontendImpl.cpp:
        (WebKit::WebDevToolsFrontendImpl::WebDevToolsFrontendImpl):
        * src/WebDevToolsFrontendImpl.h:
        * src/js/DevTools.js:

2010-08-12  Aaron Boodman  <aa@chromium.org>

        Reviewed by David Hyatt.

        Make the cascade level of "user" styles configurable
        https://bugs.webkit.org/show_bug.cgi?id=43457

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

2010-08-12  John Gregg  <johnnyg@google.com>

        Reviewed by Kent Tamura.

        [chromium] Add Notification::detachPresenter to the WebKit API.
        https://bugs.webkit.org/show_bug.cgi?id=43659

        * public/WebNotification.h:
        * src/WebNotification.cpp:
        (WebKit::WebNotification::detachPresenter):

2010-08-11  Stephen White  <senorblanco@chromium.org>

        Reviewed by David Levin.

        Add support for BGRA pixel format to GraphicsContext3D.
        https://bugs.webkit.org/show_bug.cgi?id=43858

        Although this has been standard in desktop GL since 1.2, it's an 
        extension in GL ES 2.0, so a query function is provided to check
        for support.  The DefaultImpl returns false, since it does not yet
        implement the TexImage2D internalFormat quirks.

        * public/WebGraphicsContext3D.h:
        (WebKit::WebGraphicsContext3D::supportsBGRA):
        * src/GraphicsContext3D.cpp:
        * src/WebGraphicsContext3DDefaultImpl.cpp:
        (WebKit::WebGraphicsContext3DDefaultImpl::supportsBGRA):
        * src/WebGraphicsContext3DDefaultImpl.h:

2010-08-12  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r65181.
        http://trac.webkit.org/changeset/65181
        https://bugs.webkit.org/show_bug.cgi?id=43909

        It broke 35 layout tests fail on chromium-win (Requested by
        hamaji on #webkit).

        * public/WebFrameClient.h:
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::detachedFromParent3):

2010-08-12  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r65221.
        http://trac.webkit.org/changeset/65221
        https://bugs.webkit.org/show_bug.cgi?id=43896

        Broke snow leopard build. (Requested by dave_levin on
        #webkit).

        * public/WebGraphicsContext3D.h:
        * src/GraphicsContext3D.cpp:
        * src/WebGraphicsContext3DDefaultImpl.cpp:
        * src/WebGraphicsContext3DDefaultImpl.h:

2010-08-11  Stephen White  <senorblanco@chromium.org>

        Reviewed by David Levin.

        Add support for BGRA pixel format to GraphicsContext3D.
        https://bugs.webkit.org/show_bug.cgi?id=43858

        Although this has been standard in desktop GL since 1.2, it's an 
        extension in GL ES 2.0, so a query function is provided to check
        for support.  The DefaultImpl returns false, since it does not yet
        implement the TexImage2D internalFormat quirks.

        * public/WebGraphicsContext3D.h:
        (WebKit::WebGraphicsContext3D::supportsBGRA):
        * src/GraphicsContext3D.cpp:
        * src/WebGraphicsContext3DDefaultImpl.cpp:
        (WebKit::WebGraphicsContext3DDefaultImpl::supportsBGRA):
        * src/WebGraphicsContext3DDefaultImpl.h:

2010-08-11  James Hawkins  <jhawkins@chromium.org>

        Reviewed by Dmitry Titov.

        [Chromium] Notify the WebFrameClient when the frame is detached from
        the view. This is used to clear the cached frame in the FormManager.
        Eventually this will be removed once handling forms is moved into
        WebCore.
        https://bugs.webkit.org/show_bug.cgi?id=43648

        * public/WebFrameClient.h:
        (WebKit::WebFrameClient::frameDetached):
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::detachedFromParent3):

2010-08-11  Dimitri Glazkov  <dglazkov@chromium.org>

        Build fix, turn off yet-unbaked DEVICE_ORIENTATION stuff.

        * features.gypi: Turned it off.

2010-08-11  Evan Stade  <estade@chromium.org>

        Reviewed by David Levin.

        [chromium] linux chromium sends double clicks too often
        https://bugs.webkit.org/show_bug.cgi?id=43096

        * WebKit.gyp: add the test
        * src/gtk/WebInputEventFactory.cpp:
        (WebKit::WebInputEventFactory::mouseEvent): check the x/y coordinates of the
        potential double click event
        * tests/WebInputEventFactoryTestGtk.cpp: Added.

2010-08-11  John Abd-El-Malek  <jam@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Inform a plugin about the zoom level when it's created
        https://bugs.webkit.org/show_bug.cgi?id=42268

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

2010-08-11  Yury Semikhatsky  <yurys@chromium.org>

        Unreviewed. Fix Chromium compilation.

        * DEPS:

2010-08-11  Yury Semikhatsky  <yurys@chromium.org>

        Unreviewed. Chromium build fix.

        * DEPS: bump up Chromium revision.

2010-08-11  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: remove InjectDispatch.js
        https://bugs.webkit.org/show_bug.cgi?id=43835

        * WebKit.grd:
        * src/js/InjectDispatch.js: Removed.

2010-08-10  Kent Tamura  <tkent@chromium.org>

        Unreviewed, build fix.
        
        Chromium build fix for r65107.

        * src/WebAnimationControllerImpl.cpp:
        (WebKit::WebAnimationControllerImpl::suspendAnimations):
        (WebKit::WebAnimationControllerImpl::resumeAnimations):

2010-08-10  Kenneth Russell  <kbr@google.com>

        Reviewed by Dimitri Glazkov.

        Roll forward Chromium DEPS to r55584
        https://bugs.webkit.org/show_bug.cgi?id=43811

        * DEPS:

2010-08-10  Kavita Kanetkar  <kkanetkar@chromium.org>

        Reviewed by Joseph Pecoraro.

        Web Inspector: Support appcache status change for Chrome
        https://bugs.webkit.org/show_bug.cgi?id=43531

        * src/ApplicationCacheHost.cpp:
        (WebCore::ApplicationCacheHost::notifyDOMApplicationCache):

2010-08-10  Kenneth Russell  <kbr@google.com>

        Reviewed by Dimitri Glazkov.

        Use Chromium OpenGL bindings rather than GLEW in WebGraphicsContextDefaultImpl
        https://bugs.webkit.org/show_bug.cgi?id=43754

        Deleted per-platform OpenGL context management code, now
        abstracted via GLContext. Built and tested in Chromium with
        --in-process-webgl flag.

        * WebKit.gyp:
        * src/GraphicsContext3D.cpp:
        * src/WebGraphicsContext3DDefaultImpl.cpp:
        (WebKit::WebGraphicsContext3DDefaultImpl::WebGraphicsContext3DDefaultImpl):
        (WebKit::WebGraphicsContext3DDefaultImpl::~WebGraphicsContext3DDefaultImpl):
        (WebKit::WebGraphicsContext3DDefaultImpl::initialize):
        (WebKit::WebGraphicsContext3DDefaultImpl::validateAttributes):
        (WebKit::WebGraphicsContext3DDefaultImpl::makeContextCurrent):
        (WebKit::WebGraphicsContext3DDefaultImpl::reshape):
        (WebKit::WebGraphicsContext3DDefaultImpl::readBackFramebuffer):
        (WebKit::WebGraphicsContext3DDefaultImpl::copyTexImage2D):
        (WebKit::WebGraphicsContext3DDefaultImpl::copyTexSubImage2D):
        (WebKit::WebGraphicsContext3DDefaultImpl::readPixels):
        (WebKit::WebGraphicsContext3DDefaultImpl::createBuffer):
        (WebKit::WebGraphicsContext3DDefaultImpl::deleteBuffer):
        * src/WebGraphicsContext3DDefaultImpl.h:

2010-08-10  Jian Li  <jianli@chromium.org>

        Another chromium build fix.

        * src/AssertMatchingEnums.cpp:

2010-08-10  Gavin Barraclough  <barraclough@apple.com>

        Rubber stamped by Sam Weinig.

        Bug 43786 - Move AtomicStringHash from WebCore to WTF
        Also remove deprecated string headers from WebCore/platform/text.

        * src/WebKit.cpp:
        * src/WebPageSerializerImpl.h:
        * src/WebString.cpp:

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

        Reviewed by Dimitri Glazkov.

        [chromium] Feature defines are out of sync between features.gypi and downstream feature_overrides.gypi
        https://bugs.webkit.org/show_bug.cgi?id=43756

        This synchronizes the feature defines to what's currently downstream (at r55468).
        The difference between the build.webkit.org bots and the chromium bots has
        caused strange compilation failures lately.

        * features.gypi:

2010-08-10  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: get rid of utility context
        https://bugs.webkit.org/show_bug.cgi?id=43787

        * public/WebDevToolsAgentClient.h:
        * src/DebuggerAgentImpl.cpp:
        * src/DebuggerAgentImpl.h:
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::):
        (WebKit::WebDevToolsAgentImpl::~WebDevToolsAgentImpl):
        (WebKit::WebDevToolsAgentImpl::attach):
        (WebKit::WebDevToolsAgentImpl::detach):
        (WebKit::WebDevToolsAgentImpl::frontendLoaded):
        (WebKit::WebDevToolsAgentImpl::setRuntimeFeatureEnabled):
        (WebKit::WebDevToolsAgentImpl::setApuAgentEnabled):
        * src/WebDevToolsAgentImpl.h:

2010-08-10  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector, Chromium: reloading of inspected page hits assert in InspectorController::enableDebuggerFromFrontend()
        https://bugs.webkit.org/show_bug.cgi?id=43780

        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::setRuntimeFeatureEnabled):

2010-08-10  Hans Wennborg  <hans@chromium.org>

        Reviewed by Jeremy Orlow.

        Implement chromium WebDeviceOrientationClient wrapper and have WebViewImpl get it from WebViewClient.
        https://bugs.webkit.org/show_bug.cgi?id=43258

        Provide a DeviceOrientationClient to Page by means of a
        DeviceOrientationClientProxy that proxies calls to
        a WebDeviceOrientationClient, an interface that can be implemented
        in the WebKit or Chromium layer. An implementation to be used for
        layout tests, wrapping DeviceOrientationClientMock, is provided.


        * WebKit.gyp:
        * public/WebDeviceOrientation.h: Added.
        (WebKit::WebDeviceOrientation::WebDeviceOrientation):
        * public/WebDeviceOrientationClient.h: Added.
        (WebKit::WebDeviceOrientationClient::~WebDeviceOrientationClient):
        * public/WebDeviceOrientationClientMock.h: Added.
        (WebKit::WebDeviceOrientationClientMock::WebDeviceOrientationClientMock):
        (WebKit::WebDeviceOrientationClientMock::~WebDeviceOrientationClientMock):
        * public/WebDeviceOrientationController.h: Added.
        (WebKit::WebDeviceOrientationController::WebDeviceOrientationController):
        * public/WebViewClient.h:
        (WebKit::WebViewClient::deviceOrientationClient):
        * src/DeviceOrientationClientProxy.cpp: Added.
        (WebKit::DeviceOrientationClientProxy::setController):
        (WebKit::DeviceOrientationClientProxy::startUpdating):
        (WebKit::DeviceOrientationClientProxy::stopUpdating):
        (WebKit::DeviceOrientationClientProxy::lastOrientation):
        * src/DeviceOrientationClientProxy.h: Added.
        (WebKit::DeviceOrientationClientProxy::DeviceOrientationClientProxy):
        * src/WebDeviceOrientation.cpp: Added.
        (WebKit::WebDeviceOrientation::WebDeviceOrientation):
        (WebKit::WebDeviceOrientation::operator=):
        (WebKit::WebDeviceOrientation::operator PassRefPtr<WebCore::DeviceOrientation>):
        * src/WebDeviceOrientationClientMock.cpp: Added.
        (WebKit::WebDeviceOrientationClientMock::setController):
        (WebKit::WebDeviceOrientationClientMock::startUpdating):
        (WebKit::WebDeviceOrientationClientMock::stopUpdating):
        (WebKit::WebDeviceOrientationClientMock::lastOrientation):
        (WebKit::WebDeviceOrientationClientMock::setOrientation):
        (WebKit::WebDeviceOrientationClientMock::initialize):
        (WebKit::WebDeviceOrientationClientMock::reset):
        * src/WebDeviceOrientationController.cpp: Added.
        (WebKit::WebDeviceOrientationController::didChangeDeviceOrientation):
        (WebKit::WebDeviceOrientationController::controller):
        * src/WebViewImpl.cpp:
        (WebKit::WebView::create):
        (WebKit::WebViewImpl::WebViewImpl):
        * src/WebViewImpl.h:

2010-08-10  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r64988.
        http://trac.webkit.org/changeset/64988
        https://bugs.webkit.org/show_bug.cgi?id=43775

        "It seems to break chromium's ui_tests" (Requested by hamaji
        on #webkit).

        * public/WebFrameClient.h:
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::detachedFromParent3):

2010-08-10  Yury Semikhatsky  <yurys@chromium.org>

        Unreviewed. Remove references to deleted header InspectorFrontend.h

        * src/WebDevToolsAgentImpl.cpp:

2010-08-10  Yury Semikhatsky  <yurys@chromium.org>

        Unreviewed. Fix Chromium compilation.

        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::frontendLoaded):

2010-08-09  Gavin Barraclough  <barraclough@apple.com>

        Speculative chromium build fix V.

        * tests/KURLTest.cpp:
        (ComponentCase::TEST):

2010-08-09  Gavin Barraclough  <barraclough@apple.com>

        Speculative chromium build fix IV.

        * src/WebPageSerializerImpl.h:

2010-08-09  Gavin Barraclough  <barraclough@apple.com>

        Speculative chromium build fix II.

        * src/AssertMatchingEnums.cpp:

2010-08-09  Gavin Barraclough  <barraclough@apple.com>

        Speculative chromium build fix.

        * public/WebCString.h:

2010-08-06  Gavin Barraclough  <barraclough@apple.com>

        Rubber stamped by Sam Weinig

        Bug 43594 - Add string forwards to Forward.h
        This allows us to remove forward declarations for these classes from
        WebCore/WebKit (a step in moving these class from WebCore:: to WTF::).

        * public/WebCString.h:
        * public/WebString.h:
        * src/DOMUtilitiesPrivate.h:
        * src/DebuggerAgentImpl.h:
        * src/DebuggerAgentManager.h:
        * src/WebDevToolsAgentImpl.h:
        * src/WebDevToolsFrontendImpl.h:
        * src/WebPageSerializerImpl.h:

2010-08-09  Vangelis Kokkevis  <vangelis@chromium.org>

        Reviewed by Dimitri Glazkov.

        Skip the slow software rendering path of GraphicsContext3D if accelerated
        compositing is active. This fixes an issue with WebGL and the compositor
        in which the software rendering of WebGL would cause the current GL context
        to change while the compositor was processing layers. Tested by running
        several WebGL samples both with the compositor enabled and disabled.
        https://bugs.webkit.org/show_bug.cgi?id=43644

        * src/GraphicsContext3D.cpp:
        (WebCore::GraphicsContext3DInternal::GraphicsContext3DInternal):
        (WebCore::GraphicsContext3DInternal::initialize):
        (WebCore::GraphicsContext3DInternal::beginPaint):

2010-08-06  James Hawkins  <jhawkins@chromium.org>

        Reviewed by Dimitri Glazkov.

        [Chromium] Notify the WebFrameClient when the frame is detached from
        the view. This is used to clear the cached frame in the FormManager.
        Eventually this will be removed once handling forms is moved into
        WebCore.
        https://bugs.webkit.org/show_bug.cgi?id=43648

        * public/WebFrameClient.h:
        (WebKit::WebFrameClient::frameDetached):
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::detachedFromParent3):

2010-08-09  Pavel Feldman  <pfeldman@chromium.org>

        Not reviewed: Chromium tests fix.

        Chromium: provisional interactive ui tests fix.

        * src/js/Tests.js:
        (.TestSuite.prototype.testShowStoragePanel.this):
        (.TestSuite.prototype.testShowStoragePanel):

2010-08-09  Pavel Feldman  <pfeldman@chromium.org>

        Not reviewed. Chromium tests fix.

        Disable runtime switch for device motion in chromium.
        https://bugs.webkit.org/show_bug.cgi?id=43717

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

2010-08-09  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Yury Semikhatsky.

        Chromium: Remove temporary device motion fix.

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

        * src/WebRuntimeFeatures.cpp:
        (WebKit::WebRuntimeFeatures::enableDeviceOrientation):

2010-08-07  Jay Civelli  <jcivelli@chromium.org>

        Reviewed by Eric Seidel.

        Removed unecessary focus code.
        https://bugs.webkit.org/show_bug.cgi?id=43542

        * src/ChromiumBridge.cpp:

2010-08-06  Victor Wang  <victorw@chromium.org>

        Reviewed by Kent Tamura.

        [Chromium] Add dllimport/dllexport to WebSpeechInputControllerMock::create
        so it works for windows dll build.

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

        * public/WebSpeechInputControllerMock.h:

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

        Reviewed by Simon Fraser.

        Composited canvas should be treated the same by the compositor and not be WebGL specific
        https://bugs.webkit.org/show_bug.cgi?id=43589

        Initializes the platformLayer as a CanvasLayerChromium, not a WebGLLayerChromium.
        The layer itself isn't WebGL-specific.

        * src/GraphicsContext3D.cpp:
        (WebCore::GraphicsContext3DInternal::initialize):
        (WebCore::GraphicsContext3DInternal::platformLayer):
        (WebCore::GraphicsContext3D::platformLayer):

2010-08-06  Jessie Berlin  <jberlin@apple.com>

        Roll out http://trac.webkit.org/changeset/64801, which broke the Safari Windows Build.
        Unreviewed.

        * public/WebCString.h:
        * public/WebString.h:
        * src/DOMUtilitiesPrivate.h:
        * src/DebuggerAgentImpl.h:
        * src/DebuggerAgentManager.h:
        * src/WebDevToolsAgentImpl.h:
        * src/WebDevToolsFrontendImpl.h:
        * src/WebPageSerializerImpl.h:

2010-08-06  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Yury Semikhatsky.

        Chromium: disable device motion by default.

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

        * public/WebRuntimeFeatures.h:
        * src/WebRuntimeFeatures.cpp:
        (WebKit::WebRuntimeFeatures::enableDeviceMotion):
        (WebKit::WebRuntimeFeatures::isDeviceMotionEnabled):
        (WebKit::WebRuntimeFeatures::enableDeviceOrientation):

2010-08-06  Kavita Kanetkar  <kkanetkar@chromium.org>

        Reviewed by Joseph Pecoraro.

        Web Inspector: Remove "Online/Offline" icon for Chrome's appcache devtools UI.
        https://bugs.webkit.org/show_bug.cgi?id=43450

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

2010-08-05  Marcus Bulach  <bulach@chromium.org>

        Reviewed by Jeremy Orlow.

        Initial bindings and plumbing for IDBCursor.
        https://bugs.webkit.org/show_bug.cgi?id=41888

        Test: storage/indexeddb/idb-opencursor.html

        * WebKit.gyp:
        * public/WebIDBCallbacks.h:
        (WebKit::WebIDBCallbacks::onSuccess):
        * public/WebIDBCursor.h: Added.
        (WebKit::WebIDBCursor::~WebIDBCursor):
        (WebKit::WebIDBCursor::direction):
        (WebKit::WebIDBCursor::key):
        (WebKit::WebIDBCursor::value):
        (WebKit::WebIDBCursor::update):
        (WebKit::WebIDBCursor::continueFunction):
        (WebKit::WebIDBCursor::remove):
        * public/WebIDBKeyRange.h: Added.
        (WebKit::WebIDBKeyRange::~WebIDBKeyRange):
        (WebKit::WebIDBKeyRange::WebIDBKeyRange):
        * public/WebIDBObjectStore.h:
        (WebKit::WebIDBObjectStore::openCursor):
        * src/IDBCallbacksProxy.cpp:
        (WebCore::IDBCallbacksProxy::onSuccess):
        * src/IDBCallbacksProxy.h:
        * src/IDBCursorBackendProxy.cpp: Added.
        (WebCore::IDBCursorBackendProxy::create):
        (WebCore::IDBCursorBackendProxy::IDBCursorBackendProxy):
        (WebCore::IDBCursorBackendProxy::~IDBCursorBackendProxy):
        (WebCore::IDBCursorBackendProxy::direction):
        (WebCore::IDBCursorBackendProxy::key):
        (WebCore::IDBCursorBackendProxy::value):
        (WebCore::IDBCursorBackendProxy::update):
        (WebCore::IDBCursorBackendProxy::continueFunction):
        (WebCore::IDBCursorBackendProxy::remove):
        * src/IDBCursorBackendProxy.h: Added.
        * src/IDBObjectStoreProxy.cpp:
        (WebCore::IDBObjectStoreProxy::openCursor):
        * src/IDBObjectStoreProxy.h:
        * src/WebIDBCallbacksImpl.cpp:
        (WebCore::WebIDBCallbacksImpl::onSuccess):
        * src/WebIDBCallbacksImpl.h:
        * src/WebIDBCursorImpl.cpp: Added.
        (WebKit::WebIDBCursorImpl::WebIDBCursorImpl):
        (WebKit::WebIDBCursorImpl::~WebIDBCursorImpl):
        (WebKit::WebIDBCursorImpl::direction):
        (WebKit::WebIDBCursorImpl::key):
        (WebKit::WebIDBCursorImpl::value):
        (WebKit::WebIDBCursorImpl::update):
        (WebKit::WebIDBCursorImpl::continueFunction):
        (WebKit::WebIDBCursorImpl::remove):
        * src/WebIDBCursorImpl.h: Added.
        * src/WebIDBKeyRange.cpp: Added.
        (WebKit::WebIDBKeyRange::WebIDBKeyRange):
        (WebKit::WebIDBKeyRange::assign):
        (WebKit::WebIDBKeyRange::reset):
        (WebKit::WebIDBKeyRange::left):
        (WebKit::WebIDBKeyRange::right):
        (WebKit::WebIDBKeyRange::flags):
        * src/WebIDBObjectStoreImpl.cpp:
        (WebKit::WebIDBObjectStoreImpl::openCursor):
        * src/WebIDBObjectStoreImpl.h:

2010-08-05  Andrei Popescu  <andreip@dhcp-172-16-14-12.lon.corp.google.com>

        Reviewed by Jeremy Orlow.

        [IndexedDB] IndexedDB is missing the Transaction interface.
        https://bugs.webkit.org/show_bug.cgi?id=42970

        Add IDBTransaction boilerplate.

        * src/IDBDatabaseProxy.cpp:
        (WebCore::IDBDatabaseProxy::transaction):
        * src/IDBDatabaseProxy.h:

2010-08-05  Gavin Barraclough  <barraclough@apple.com>

        Rubber stamped by Sam Weinig

        Bug 43594 - Add string forwards to Forward.h
        This allows us to remove forward declarations for these classes from
        WebCore/WebKit (a step in moving these class from WebCore:: to WTF::).

        * public/WebCString.h:
        * public/WebString.h:
        * src/DOMUtilitiesPrivate.h:
        * src/DebuggerAgentImpl.h:
        * src/DebuggerAgentManager.h:
        * src/WebDevToolsAgentImpl.h:
        * src/WebDevToolsFrontendImpl.h:
        * src/WebPageSerializerImpl.h:

2010-08-05  Brett Wilson  <brettw@chromium.org>

        Reviewed by Nate Chapin.

        Make the webkit unit tests depend on test_support_base
        https://bugs.webkit.org/show_bug.cgi?id=43584

        * WebKit.gyp:

2010-08-04  Kenneth Russell  <kbr@google.com>

        Reviewed by Dimitri Glazkov.

        Style cleanups in WebGL
        https://bugs.webkit.org/show_bug.cgi?id=38761

        Cleaned up all style violations in WebGL-related files reported by
        check-webkit-style. No logic or other changes. Built WebKit and
        Chromium and ran WebGL layout tests.

        * src/GraphicsContext3D.cpp:
        (WebCore::GraphicsContext3DInternal::paintRenderingResultsToCanvas):
        * src/WebGraphicsContext3DDefaultImpl.cpp:
        * src/WebGraphicsContext3DDefaultImpl.h:

2010-08-05  Jian Li  <jianli@chromium.org>

        Reviewed by David Levin.

        Unify blob related feature defines to ENABLE(BLOB).
        https://bugs.webkit.org/show_bug.cgi?id=43081

        * features.gypi:
        * src/WebHTTPBody.cpp:
        (WebKit::WebHTTPBody::elementAt):
        (WebKit::WebHTTPBody::appendFileRange):

2010-08-05  Nico Weber  <thakis@chromium.org>

        Reviewed by Jeremy Orlow.

        Remove useless const on return-by-value (fixes a clang warning)
        https://bugs.webkit.org/show_bug.cgi?id=43491

        * src/WebInputEventConversion.cpp:
        (WebKit::toPlatformKeyboardEventType):

2010-08-05  Satish Sampath  <satish@chromium.org>

        Reviewed by Jeremy Orlow.

        Add speech input controller mock in WebKit and a layout test.
        https://bugs.webkit.org/show_bug.cgi?id=43477

        * WebKit.gyp:
        * public/WebSpeechInputControllerMock.h: Added WebKit speech input controller mock interface.
        * src/WebSpeechInputControllerMockImpl.cpp: Added implementation of the above mock.
        (WebKit::WebSpeechInputControllerMockImpl::WebSpeechInputControllerMockImpl):
        (WebKit::WebSpeechInputControllerMockImpl::setMockRecognitionResult):
        (WebKit::WebSpeechInputControllerMockImpl::didCompleteRecording):
        (WebKit::WebSpeechInputControllerMockImpl::didCompleteRecognition):
        (WebKit::WebSpeechInputControllerMockImpl::setRecognitionResult):
        (WebKit::WebSpeechInputControllerMockImpl::startRecognition):
        (WebKit::WebSpeechInputControllerMockImpl::cancelRecognition):
        (WebKit::WebSpeechInputControllerMockImpl::stopRecording):
        (WebKit::WebSpeechInputControllerMock::create):

2010-08-05  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Yury Semikhatsky.

        Chromium DevTools: [REGRESSION] Frame navigation is not handled in devtools.

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

        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::):
        (WebKit::WebDevToolsAgentImpl::detach):
        (WebKit::WebDevToolsAgentImpl::frontendLoaded):
        (WebKit::WebDevToolsAgentImpl::setRuntimeFeatureEnabled):

2010-08-05  John Gregg  <johnnyg@google.com>

        Reviewed by Darin Fisher.

        [chromium] WebFileChooserParams should have default constructor
        https://bugs.webkit.org/show_bug.cgi?id=43435

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

2010-08-05  Victoria Kirst  <vrk@google.com>

        Reviewed by David Levin.

        Added a repaint request so that VideoLayerChromium does not have
        a flickering problem when playing video.
        https://bugs.webkit.org/show_bug.cgi?id=43101

        * src/WebMediaPlayerClientImpl.cpp:
        (WebKit::WebMediaPlayerClientImpl::repaint):

2010-08-05  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Yury Semikhatsky.

        DevTools: get rid of delayed command dispatching on front-end side.

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

        * public/WebDevToolsFrontendClient.h:
        (WebKit::WebDevToolsFrontendClient::sendFrontendLoaded):
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::attach):
        (WebKit::WebDevToolsAgentImpl::frontendLoaded):
        * src/WebDevToolsAgentImpl.h:
        * src/WebDevToolsFrontendImpl.cpp:
        (WebKit::WebDevToolsFrontendImpl::dispatchOnInspectorFrontend):
        (WebKit::WebDevToolsFrontendImpl::frontendLoaded):
        * src/WebDevToolsFrontendImpl.h:
        * src/js/DevTools.js:
        (WebInspector.doLoadedDone):
        * src/js/Tests.js:
        (.uiTests.runTest):
        (.):

2010-08-02  Kenneth Russell  <kbr@google.com>

        Reviewed by Dimitri Glazkov.

        Port Chromium's accelerated compositing to Mac OS X
        https://bugs.webkit.org/show_bug.cgi?id=43398

        * public/WebGLES2Context.h:
         - Added resizeOnscreenContent, needed on Mac OS X to report
           window size changes.
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::resize):
         - Send resize notification to the WebGLES2Context.
        (WebKit::WebViewImpl::updateRootLayerContents):
         - Ported to Core Graphics.
        (WebKit::WebViewImpl::gles2Context):
         - Added initial size notification upon context creation.

2010-08-04  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Yury Semikhatsky.

        DevTools: get rid of delayed command dispatching on front-end side.

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

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

2010-08-03  James Robinson  <jamesr@chromium.org>

        Reviewed by Darin Fisher.

        Move WebGL-specific code out of GraphicsContext3D so that G3D can be used as a generic accelerated drawing API
        https://bugs.webkit.org/show_bug.cgi?id=43221

        Implements functions in term of Platform3DObjects instead of WebGL types.

        * src/GraphicsContext3D.cpp:
        (WebCore::GraphicsContext3DInternal::paintRenderingResultsToCanvas):
        (WebCore::GraphicsContext3DInternal::beginPaint):
        (WebCore::GraphicsContext3DInternal::bindAttribLocation):
        (WebCore::GraphicsContext3DInternal::getActiveAttrib):
        (WebCore::GraphicsContext3DInternal::getActiveUniform):
        (WebCore::GraphicsContext3DInternal::getAttribLocation):
        (WebCore::GraphicsContext3DInternal::getProgramInfoLog):
        (WebCore::GraphicsContext3DInternal::getShaderInfoLog):
        (WebCore::GraphicsContext3DInternal::getShaderSource):
        (WebCore::GraphicsContext3DInternal::getUniformLocation):
        (WebCore::GraphicsContext3DInternal::shaderSource):

2010-08-03  Dimitri Glazkov  <dglazkov@chromium.org>

        Unreviewed, build fix.

        Roll chromium to 54723 to unbreak the builds.

        * DEPS:

2010-08-03  Andrei Popescu  <andreip@google.com>

        Reviewed by Jeremy Orlow.

        [IndexedDB] IDBObjectStoreRequest should be called IDBObjectStore
        https://bugs.webkit.org/show_bug.cgi?id=43420

        * src/IDBCallbacksProxy.cpp:
        (WebCore::IDBCallbacksProxy::onSuccess):
        * src/IDBCallbacksProxy.h:
        * src/IDBDatabaseProxy.cpp:
        (WebCore::IDBDatabaseProxy::objectStore):
        * src/IDBDatabaseProxy.h:
        * src/IDBObjectStoreProxy.cpp:
        (WebCore::IDBObjectStoreProxy::create):
        * src/IDBObjectStoreProxy.h:
        * src/WebIDBObjectStoreImpl.cpp:
        (WebKit::WebIDBObjectStoreImpl::WebIDBObjectStoreImpl):
        * src/WebIDBObjectStoreImpl.h:

2010-08-03  Yury Semikhatsky  <yurys@chromium.org>

        Unreviewed. Fix Chromium interactive UI tests.

        * src/js/Tests.js:
        (.TestSuite.prototype.testResourceHeaders):

2010-07-30  Andrei Popescu  <andreip@dhcp-172-16-14-12.lon.corp.google.com>

        Reviewed by Jeremy Orlow.

        Rename IDBDatabaseRequest to IDBDatabase
        https://bugs.webkit.org/show_bug.cgi?id=43250

        * src/IDBCallbacksProxy.cpp:
        (WebCore::IDBCallbacksProxy::onSuccess):
        * src/IDBCallbacksProxy.h:
        * src/IDBDatabaseProxy.cpp:
        (WebCore::IDBDatabaseProxy::create):
        * src/IDBDatabaseProxy.h:
        * src/WebIDBDatabaseImpl.cpp:
        (WebKit::WebIDBDatabaseImpl::WebIDBDatabaseImpl):
        (WebKit::WebIDBDatabaseImpl::name):
        (WebKit::WebIDBDatabaseImpl::description):
        (WebKit::WebIDBDatabaseImpl::version):
        (WebKit::WebIDBDatabaseImpl::objectStores):
        (WebKit::WebIDBDatabaseImpl::createObjectStore):
        (WebKit::WebIDBDatabaseImpl::objectStore):
        (WebKit::WebIDBDatabaseImpl::removeObjectStore):
        * src/WebIDBDatabaseImpl.h:

2010-08-02  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Yury Semikhatsky.

        Chromium DevTools: Get rid of DevTools RPC.

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

        * WebKit.gyp:
        * public/WebDevToolsAgent.h:
        * public/WebDevToolsAgentClient.h:
        (WebKit::WebDevToolsAgentClient::sendMessageToInspectorFrontend):
        (WebKit::WebDevToolsAgentClient::sendDebuggerOutput):
        (WebKit::WebDevToolsAgentClient::sendDispatchToAPU):
        * public/WebDevToolsFrontend.h:
        * public/WebDevToolsFrontendClient.h:
        (WebKit::WebDevToolsFrontendClient::sendMessageToBackend):
        * public/WebDevToolsMessageData.h: Removed.
        * public/WebDevToolsMessageTransport.h: Removed.
        * src/APUAgentDelegate.h: Removed.
        * src/DebuggerAgent.h: Removed.
        * src/DebuggerAgentImpl.cpp:
        (WebKit::DebuggerAgentImpl::DebuggerAgentImpl):
        (WebKit::DebuggerAgentImpl::debuggerOutput):
        * src/DebuggerAgentImpl.h:
        * src/DebuggerAgentManager.cpp:
        (WebKit::DebuggerAgentManager::debugDetach):
        (WebKit::DebuggerAgentManager::onV8DebugMessage):
        (WebKit::DebuggerAgentManager::executeDebuggerCommand):
        (WebKit::DebuggerAgentManager::sendCommandToV8):
        (WebKit::DebuggerAgentManager::sendContinueCommandToV8):
        * src/DevToolsRPC.h: Removed.
        * src/DevToolsRPCJS.h: Removed.
        * src/InspectorClientImpl.cpp:
        * src/InspectorFrontendClientImpl.cpp:
        (WebKit::InspectorFrontendClientImpl::sendMessageToBackend):
        * src/ProfilerAgent.h: Removed.
        * src/ProfilerAgentImpl.cpp: Removed.
        * src/ProfilerAgentImpl.h: Removed.
        * src/ToolsAgent.h: Removed.
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::):
        (WebKit::WebDevToolsAgentImpl::WebDevToolsAgentImpl):
        (WebKit::WebDevToolsAgentImpl::attach):
        (WebKit::WebDevToolsAgentImpl::didClearWindowObject):
        (WebKit::WebDevToolsAgentImpl::dispatchOnInspectorBackend):
        (WebKit::WebDevToolsAgentImpl::jsDispatchOnClient):
        (WebKit::WebDevToolsAgentImpl::sendMessageToFrontend):
        * src/WebDevToolsAgentImpl.h:
        * src/WebDevToolsFrontendImpl.cpp:
        (WebKit::WebDevToolsFrontendImpl::WebDevToolsFrontendImpl):
        (WebKit::WebDevToolsFrontendImpl::dispatchOnInspectorFrontend):
        (WebKit::WebDevToolsFrontendImpl::frontendLoaded):
        (WebKit::WebDevToolsFrontendImpl::executeScript):
        * src/WebDevToolsFrontendImpl.h:
        * src/js/DevTools.js:
        (devtools.dispatch):
        (devtools.ToolsAgent):
        * src/js/DevToolsHostStub.js:
        * src/js/ProfilerAgent.js:
        (devtools.ProfilerAgent):
        (devtools.ProfilerAgent.prototype._getNextLogLines.else.delayedRequest):
        (devtools.ProfilerAgent.prototype._getNextLogLines):
        (devtools.ProfilerAgent.prototype._didGetProfilerLogLines):
        * src/js/ProfilerProcessor.js:
        (devtools.profiler.Processor.prototype.printError):

2010-08-02  Kent Tamura  <tkent@chromium.org>

        Reviewed by Dimitri Glazkov.

        [DRT/Chromium] Remove dependencies to some Chromium headers
        https://bugs.webkit.org/show_bug.cgi?id=43396

        * DEPS: Update Chromium revision to 54649 in order to have a
        webkit_support change (r54646)

2010-07-27  Luiz Agostini  <luiz.agostini@openbossa.org>

        Reviewed by Darin Fisher.

        PopupMenu refactoring in preparation to WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=42592

        As ChromeClient was made responsible for providing PopupMenu and SearchPopupMenu
        instances, concrete classes that inherit from ChromeClient needed to be changed to
        implement the new methods.

        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::selectItemWritingDirectionIsNatural):
        (WebKit::ChromeClientImpl::createPopupMenu):
        (WebKit::ChromeClientImpl::createSearchPopupMenu):
        * src/ChromeClientImpl.h:

2010-08-02  Kent Tamura  <tkent@chromium.org>

        Reviewed by Dimitri Glazkov.

        [DRT/Chromium] Always initialize GTK
        https://bugs.webkit.org/show_bug.cgi?id=43327

        * WebKit.gyp: Add GTK dependency for DRT.

2010-08-02  Jeremy Orlow  <jorlow@chromium.org>

        Speculative revert of 64425 due to Chromium instability
        https://bugs.webkit.org/show_bug.cgi?id=43347

        * src/ChromeClientImpl.cpp:
        * src/ChromeClientImpl.h:
        * tests/PopupMenuTest.cpp:
        (WebKit::SelectPopupMenuTest::SetUp):

2010-07-27  Luiz Agostini  <luiz.agostini@openbossa.org>

        Reviewed by Darin Fisher.

        PopupMenu refactoring in preparation to WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=42592

        As ChromeClient was made responsible for providing PopupMenu and SearchPopupMenu
        instances, concrete classes that inherit from ChromeClient needed to be changed to
        implement the new methods.

        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::selectItemWritingDirectionIsNatural):
        (WebKit::ChromeClientImpl::createPopupMenu):
        (WebKit::ChromeClientImpl::createSearchPopupMenu):
        * src/ChromeClientImpl.h:

2010-07-31  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r64422.
        http://trac.webkit.org/changeset/64422
        https://bugs.webkit.org/show_bug.cgi?id=43304

        Build fixes are needed for Snow Leopard and Windows.
        (Requested by lca on #webkit).

        * src/ChromeClientImpl.cpp:
        * src/ChromeClientImpl.h:

2010-07-27  Luiz Agostini  <luiz.agostini@openbossa.org>

        Reviewed by Darin Fisher.

        PopupMenu refactoring in preparation to WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=42592

        As ChromeClient was made responsible for providing PopupMenu and SearchPopupMenu
        instances, concrete classes that inherit from ChromeClient needed to be changed to
        implement the new methods.

        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::selectItemWritingDirectionIsNatural):
        (WebKit::ChromeClientImpl::createPopupMenu):
        (WebKit::ChromeClientImpl::createSearchPopupMenu):
        * src/ChromeClientImpl.h:

2010-07-30  Joseph Pecoraro  <joepeck@webkit.org>

        Reviewed by David Kilzer.

        Limit ApplicationCache Total and Per-Origin Storage Capacity (Quotas)
        https://bugs.webkit.org/show_bug.cgi?id=40627

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

2010-07-30  James Robinson  <jamesr@chromium.org>

        Compile fix. Put GLES2 functions behind USE(GLES2_RENDERING) instead of
        USE(ACCELERATED_COMPOSITING) to match WebCore.  Fixes the compile when
        USE(GLES2_RENDERING) is true and USE(ACCELERATED_COMPOSITING) is false.

        * src/ChromeClientImpl.cpp:
        * src/ChromeClientImpl.h:

2010-07-27  Darin Fisher  <darin@chromium.org>

        Reviewed by Brady Eidson.

        History.pushState() + navigation operates on top frame when called from
        nested context
        https://bugs.webkit.org/show_bug.cgi?id=43080

        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::pluginLoadObserver): The WebDataSource
        can be null if the Frame has already been detached from the Page.  This
        happens if a popstate event handler removes the frame.

2010-07-29  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Steve Block.

        Rename all the IDBIndex classses to match the latest conventions
        https://bugs.webkit.org/show_bug.cgi?id=43190

        Fix up stuff in WebKit layer to handle the renamings in WebCore.

        * WebKit.gyp:
        * src/IDBCallbacksProxy.cpp:
        (WebCore::IDBCallbacksProxy::onSuccess):
        * src/IDBCallbacksProxy.h:
        * src/IDBIndexBackendProxy.cpp: Added.
        (WebCore::IDBIndexBackendProxy::create):
        (WebCore::IDBIndexBackendProxy::IDBIndexBackendProxy):
        (WebCore::IDBIndexBackendProxy::~IDBIndexBackendProxy):
        (WebCore::IDBIndexBackendProxy::name):
        (WebCore::IDBIndexBackendProxy::keyPath):
        (WebCore::IDBIndexBackendProxy::unique):
        * src/IDBIndexBackendProxy.h: Added.
        * src/IDBIndexProxy.cpp: Removed.
        * src/IDBIndexProxy.h: Removed.
        * src/IDBObjectStoreProxy.cpp:
        (WebCore::IDBObjectStoreProxy::index):
        * src/IDBObjectStoreProxy.h:
        * src/WebIDBCallbacksImpl.cpp:
        (WebCore::WebIDBCallbacksImpl::onSuccess):
        * src/WebIDBIndexImpl.cpp:
        (WebKit::WebIDBIndexImpl::WebIDBIndexImpl):
        (WebKit::WebIDBIndexImpl::name):
        (WebKit::WebIDBIndexImpl::keyPath):
        (WebKit::WebIDBIndexImpl::unique):
        * src/WebIDBIndexImpl.h:
        * src/WebIDBObjectStoreImpl.cpp:
        (WebKit::WebIDBObjectStoreImpl::index):

2010-07-30  Satish Sampath  <satish@chromium.org>

        Reviewed by Jeremy Orlow.

        Add a check for WebViewClient being null.
        https://bugs.webkit.org/show_bug.cgi?id=43240

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

2010-07-30  Hans Wennborg  <hans@chromium.org>

        Reviewed by Steve Block.

        Disable runtime switch for device orientation in chromium
        https://bugs.webkit.org/show_bug.cgi?id=43237

        Explicitly set the runtime switch for device orientation
        in WebView::create until we implement the feature.
        If the flag is accidentally on while no DeviceOrientationClient
        is provided, the program will crash.

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

2010-07-26  Andrei Popescu  <andreip@google.com>

        Reviewed by Jeremy Orlow.

        [IndexedDB] IndexedDatabase should be called IDBFactory.
        https://bugs.webkit.org/show_bug.cgi?id=42967

        * WebKit.gyp:
        * public/WebIDBFactory.h: Added.
        (WebKit::WebIDBFactory::~WebIDBFactory):
        (WebKit::WebIDBFactory::databases):
        (WebKit::WebIDBFactory::open):
        * public/WebIndexedDatabase.h: Removed.
        * public/WebKitClient.h:
        (WebKit::WebKitClient::idbFactory):
        * src/ChromiumBridge.cpp:
        (WebCore::ChromiumBridge::idbFactory):
        * src/IDBFactoryBackendProxy.cpp: Added.
        (WebCore::IDBFactoryBackendProxy::create):
        (WebCore::IDBFactoryBackendProxy::IDBFactoryBackendProxy):
        (WebCore::IDBFactoryBackendProxy::~IDBFactoryBackendProxy):
        (WebCore::IDBFactoryBackendProxy::open):
        * src/IDBFactoryBackendProxy.h: Added.
        * src/IndexedDatabaseProxy.cpp: Removed.
        * src/IndexedDatabaseProxy.h: Removed.
        * src/WebIDBFactoryImpl.cpp: Added.
        (WebKit::WebIDBFactory::create):
        (WebKit::WebIDBFactoryImpl::WebIDBFactoryImpl):
        (WebKit::WebIDBFactoryImpl::~WebIDBFactoryImpl):
        (WebKit::WebIDBFactoryImpl::open):
        * src/WebIDBFactoryImpl.h: Added.
        * src/WebIndexedDatabaseImpl.cpp: Removed.
        * src/WebIndexedDatabaseImpl.h: Removed.

2010-07-29  Andrei Popescu  <andreip@google.com>

        Reviewed by Jeremy Orlow.

        [IndexedDB] WebDOMStringList ctor is not exported and causes link errors for the multi-dll chromium build
        https://bugs.webkit.org/show_bug.cgi?id=43186

        Add WEBKIT_API to WebDOMStringList default ctor.

        * public/WebDOMStringList.h:

2010-07-29  Satish Sampath  <satish@chromium.org>

        Reviewed by Steve Block.

        Runtime feature switch for speech input
        https://bugs.webkit.org/show_bug.cgi?id=43146

        Add a runtime feature switch that decides whether speech input attributes are available or not.
        Defaults to true.

        * public/WebRuntimeFeatures.h:
        * src/SpeechInputClientImpl.cpp:
        (WebKit::SpeechInputClientImpl::SpeechInputClientImpl):
        * src/WebRuntimeFeatures.cpp:
        (WebKit::WebRuntimeFeatures::enableSpeechInput):
        (WebKit::WebRuntimeFeatures::isSpeechInputEnabled):

2010-07-28  Kavita Kanetkar  <kkanetkar@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: Enable UI for chromium's appcache inspection.
        https://bugs.webkit.org/show_bug.cgi?id=43098

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

2010-07-28  Dominic Mazzoni  <dmazzoni@google.com>

        Reviewed by Dimitri Glazkov.

        Add access to the computed style display to WebAccessibilityObject.
        https://bugs.webkit.org/show_bug.cgi?id=43044

        * public/WebAccessibilityObject.h:
        * src/WebAccessibilityObject.cpp:
        (WebKit::WebAccessibilityObject::hasComputedStyle):
        (WebKit::WebAccessibilityObject::computedStyleDisplay):

2010-07-28  Hans Wennborg  <hans@chromium.org>

        Reviewed by Jeremy Orlow.

        Set ENABLE_DEVICE_ORIENTATION=1 in features.gypi for chromium
        https://bugs.webkit.org/show_bug.cgi?id=43122

        Enable the compile-time switch for device orientation.
        The switch was already enabled in features_override.gypi in the Chromium
        repository (in revision 53317), and should be set here as well.

        The feature is being implemented behind a run-time flag which
        defaults to off in Chromium.

        * features.gypi: Set ENABLE_DEVICE_ORIENTATION=1.

2010-07-28  Gene Gutnik  <gene@google.com>

        Reviewed by Darin Fisher.

        Fix mouse coordinate conversion. WindowX,Y is an absolute
        mouse coordinates within browser window, x,y - are coordinates
        relative to the plugin.
        https://bugs.webkit.org/show_bug.cgi?id=42987

        * src/WebInputEventConversion.cpp:
        (WebKit::WebMouseEventBuilder::WebMouseEventBuilder):
        (WebKit::WebMouseWheelEventBuilder::WebMouseWheelEventBuilder):
        * src/WebInputEventConversion.h:
        * src/WebPluginContainerImpl.cpp:
        (WebKit::WebPluginContainerImpl::handleMouseEvent):
        (WebKit::WebPluginContainerImpl::handleWheelEvent):

2010-07-28  James Robinson  <jamesr@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Add a bool to Settings to control accelerated 2d canvas
        https://bugs.webkit.org/show_bug.cgi?id=43094

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

2010-07-28  Brett Wilson  <brettw@chromium.org>

        Reviewed by Darin Fisher.

        Fix forward declares to be struct instead of class.
        https://bugs.webkit.org/show_bug.cgi?id=43127

        * public/WebFont.h:

2010-07-28  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Dimitri Glazkov.

        Chromium DevTools: [REGRESSION] sourceURL is not respected.

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

        * src/js/DebuggerScript.js:

2010-07-28  Andrei Popescu  <andreip@google.com>

        Reviewed by Jeremy Orlow.

        [IndexedDB] WebDOMStringList default ctor does not initialize its m_private member
        variable so any attempt to append strings to a WebDOMStringList instance results in a crash.
        https://bugs.webkit.org/show_bug.cgi?id=43120

        Makes the default WebKit::WebDOMStringList ctor actually create its wrapped
        WebCore::DOMStringList instance.

        * public/WebDOMStringList.h:
        * src/WebDOMStringList.cpp:
        (WebKit::WebDOMStringList::WebDOMStringList):

2010-07-26  Steve Block  <steveblock@google.com>

        Reviewed by Jeremy Orlow.

        Page clients should be passed to Page constructor via structure of pointers
        https://bugs.webkit.org/show_bug.cgi?id=42834

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

2010-07-28  Pavel Feldman  <pfeldman@chromium.org>

        Not reviewed: chromium tests fix.
        Chromium Dev Tools: [REGRESSION] Pause is not working.

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

        * src/js/DevTools.js:
        (InspectorBackend.pause):

2010-07-27  Kinuko Yasuda  <kinuko@chromium.org>

        Reviewed by Ojan Vafai.

        Add FILE_SYSTEM build flag for FileSystem API
        https://bugs.webkit.org/show_bug.cgi?id=42915

        * features.gypi:

2010-07-27  James Hawkins  <jhawkins@chromium.org>

        Unreviewed Build Fix. 

        Add a missing itemIcon() method to TestPopupMenuClient.

        * tests/PopupMenuTest.cpp:
        (WebKit::TestPopupMenuClient::itemIcon):

2010-07-27  James Hawkins  <jhawkins@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Add the ability to show right-aligned icons in the AutoFill popup.
        https://bugs.webkit.org/show_bug.cgi?id=43076

        * public/WebView.h:
        * src/AutoFillPopupMenuClient.cpp:
        (WebKit::AutoFillPopupMenuClient::getIcon):
        (WebKit::AutoFillPopupMenuClient::removeSuggestionAtIndex):
        (WebKit::AutoFillPopupMenuClient::itemIcon):
        (WebKit::AutoFillPopupMenuClient::initialize):
        (WebKit::AutoFillPopupMenuClient::setSuggestions):
        * src/AutoFillPopupMenuClient.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::applyAutoFillSuggestions):
        (WebKit::WebViewImpl::applyAutocompleteSuggestions):
        * src/WebViewImpl.h:

2010-07-27  Brett Wilson  <brettw@chromium.org>

        Reviewed by Darin Fisher.

        Add the ability to select fonts and do basic text drawing to the
        Chromium WebKit API.
        https://bugs.webkit.org/show_bug.cgi?id=42999

        * WebKit.gyp:
        * public/WebFloatPoint.h: Added.
        (WebKit::WebFloatPoint::WebFloatPoint):
        (WebKit::WebFloatPoint::operator=):
        (WebKit::WebFloatPoint::operator WebCore::FloatPoint):
        (WebKit::operator==):
        (WebKit::operator!=):
        * public/WebFloatRect.h: Added.
        (WebKit::WebFloatRect::isEmpty):
        (WebKit::WebFloatRect::WebFloatRect):
        (WebKit::WebFloatRect::operator=):
        (WebKit::WebFloatRect::operator WebCore::FloatRect):
        (WebKit::operator==):
        (WebKit::operator!=):
        * public/WebFont.h: Added.
        * public/WebFontDescription.h: Added.
        (WebKit::WebFontDescription::):
        (WebKit::WebFontDescription::WebFontDescription):
        * public/WebTextRun.h: Added.
        (WebKit::WebTextRun::WebTextRun):
        * src/AssertMatchingEnums.cpp:
        * src/WebFontDescription.cpp: Added.
        (WebKit::WebFontDescription::WebFontDescription):
        (WebKit::WebFontDescription::operator WebCore::FontDescription):
        * src/WebFontImpl.cpp: Added.
        (WebKit::WebFont::Create):
        (WebKit::WebFontImpl::WebFontImpl):
        (WebKit::WebFontImpl::fontDescription):
        (WebKit::WebFontImpl::ascent):
        (WebKit::WebFontImpl::descent):
        (WebKit::WebFontImpl::height):
        (WebKit::WebFontImpl::lineSpacing):
        (WebKit::WebFontImpl::xHeight):
        (WebKit::WebFontImpl::drawText):
        (WebKit::WebFontImpl::width):
        (WebKit::WebFontImpl::offsetForPosition):
        (WebKit::WebFontImpl::selectionRectForText):
        * src/WebFontImpl.h: Added.
        * src/WebTextRun.cpp: Added.
        (WebKit::WebTextRun::operator WebCore::TextRun):

2010-07-27  Dumitru Daniliuc  <dumi@chromium.org>

        Reviewed by David Levin.

        Move all WebSQLDatabases-specific code behind #if ENABLE(DATABASE).
        https://bugs.webkit.org/show_bug.cgi?id=43035

        Make Chromium compile with ENABLE_DATABASE=0.

        * src/ChromiumBridge.cpp:
        (WebCore::ChromiumBridge::databaseGetFileSize):
        * src/DatabaseObserver.cpp:
        * src/WebDatabase.cpp:
        (WebCore::AbstractDatabase::stringIdentifier):
        (WebCore::AbstractDatabase::displayName):
        (WebCore::AbstractDatabase::estimatedSize):
        (WebCore::AbstractDatabase::securityOrigin):
        (WebKit::WebDatabase::updateDatabaseSize):
        (WebKit::WebDatabase::closeDatabaseImmediately):

2010-07-27  Pavel Podivilov  <podivilov@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: if breakpoints were deactivated, add new breakpoints as disabled.
        https://bugs.webkit.org/show_bug.cgi?id=41461

        * src/js/DebuggerScript.js:
        ():

2010-07-27  Ilya Tikhonovsky  <loislo@chromium.org>

        Reviewed by Pavel Feldman.

        WebInspector: Current implementation of message based inspector
        transport generated by CodeGeneratorInspector should be upstreamed
        from WebKit/chromium to WebCore.
        https://bugs.webkit.org/show_bug.cgi?id=42983

        * WebKit.gypi:
        * src/InspectorFrontendClientImpl.cpp:
        (WebKit::InspectorFrontendClientImpl::sendMessageToBackend):
        * src/InspectorFrontendClientImpl.h:
        * src/ToolsAgent.h:
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::dispatchOnInspectorController):
        (WebKit::WebDevToolsAgentImpl::initDevToolsAgentHost):
        * src/WebDevToolsAgentImpl.h:
        * src/js/InspectorControllerImpl.js: Removed.

2010-07-27  Dominic Mazzoni  <dmazzoni@google.com>

        Reviewed by Chris Fleizach.

        Add accessors for node and document to WebAccessibilityObject,
        needed to support some Windows screenreader functionality.

        https://bugs.webkit.org/show_bug.cgi?id=43001
        
        * public/WebAccessibilityObject.h:
        * src/WebAccessibilityObject.cpp:
        (WebKit::WebAccessibilityObject::node):
        (WebKit::WebAccessibilityObject::document):

2010-07-27  Dominic Mazzoni  <dmazzoni@google.com>

        Reviewed by Chris Fleizach.

        For Windows accessibility, have WebElement provide access
        to its attributes.

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

        * WebKit.gyp:
        * public/WebAttribute.h: Added.
        (WebKit::WebAttribute::~WebAttribute):
        (WebKit::WebAttribute::WebAttribute):
        (WebKit::WebAttribute::operator=):
        * public/WebElement.h:
        * public/WebNamedNodeMap.h: Added.
        (WebKit::WebNamedNodeMap::~WebNamedNodeMap):
        (WebKit::WebNamedNodeMap::WebNamedNodeMap):
        (WebKit::WebNamedNodeMap::operator=):
        * src/WebAttribute.cpp: Added.
        (WebKit::WebAttribute::reset):
        (WebKit::WebAttribute::assign):
        (WebKit::WebAttribute::WebAttribute):
        (WebKit::WebAttribute::localName):
        (WebKit::WebAttribute::value):
        * src/WebElement.cpp:
        (WebKit::WebElement::attributes):
        * src/WebNamedNodeMap.cpp: Added.
        (WebKit::WebNamedNodeMap::reset):
        (WebKit::WebNamedNodeMap::assign):
        (WebKit::WebNamedNodeMap::WebNamedNodeMap):
        (WebKit::WebNamedNodeMap::length):
        (WebKit::WebNamedNodeMap::attributeItem):

2010-07-27  Satish Sampath  <satish@chromium.org>

        Reviewed by Kent Tamura.

        Simplify speech input plumbing in webcore and webkit
        https://bugs.webkit.org/show_bug.cgi?id=43008

        * src/SpeechInputClientImpl.cpp: Move functionality to WebCore::SpeechInput and make this a dummy proxy.
        (WebKit::SpeechInputClientImpl::startRecognition):
        (WebKit::SpeechInputClientImpl::cancelRecognition):
        (WebKit::SpeechInputClientImpl::didCompleteRecording):
        (WebKit::SpeechInputClientImpl::didCompleteRecognition):
        (WebKit::SpeechInputClientImpl::setRecognitionResult):
        * src/SpeechInputClientImpl.h:

2010-07-26  Dominic Mazzoni  <dmazzoni@google.com>

        Reviewed by Chris Fleizach.

        Add accessor to get the doctype of a WebDocument, needed to
        implement Windows accessibility.

        https://bugs.webkit.org/show_bug.cgi?id=43003
        
        * WebKit.gyp:
        * public/WebDocument.h:
        * public/WebDocumentType.h: Added.
        (WebKit::WebDocumentType::WebDocumentType):
        (WebKit::WebDocumentType::operator=):
        (WebKit::WebDocumentType::assign):
        * src/WebDocument.cpp:
        (WebKit::WebDocument::doctype):
        * src/WebDocumentType.cpp: Added.
        (WebKit::WebDocumentType::name):
        (WebKit::WebDocumentType::WebDocumentType):
        (WebKit::WebDocumentType::operator=):
        (WebKit::WebDocumentType::operator PassRefPtr<DocumentType>):

2010-07-26  Satish Sampath  <satish@chromium.org>

        Reviewed by Steve Block.

        Add WebKit plumbing to connect speech requests and callbacks between WebCore and the embedder.
        https://bugs.webkit.org/show_bug.cgi?id=42367

        No new tests, the relevant LayoutTestController bindings and tests will be added in the next patch.

        * public/WebSpeechInputController.h: Added new interface, implemented by embedder and called by WebKit
        (WebKit::WebSpeechInputController::~WebSpeechInputController):
        * public/WebSpeechInputListener.h: Added new interface, implemented by WebKit and called by embedder.
        (WebKit::WebSpeechInputListener::~WebSpeechInputListener):
        * public/WebViewClient.h:
        (WebKit::WebViewClient::createSpeechInputClient): New method to get the embedder's speech input client interface.
        * src/SpeechInputClientImpl.cpp: Added new class, implementation of a two way connector between WebCore
        and the embedder for requests and responses.
        (WebKit::SpeechInputClientImpl::SpeechInputClientImpl):
        (WebKit::SpeechInputClientImpl::~SpeechInputClientImpl):
        (WebKit::SpeechInputClientImpl::startRecognition):
        (WebKit::SpeechInputClientImpl::stopRecording):
        (WebKit::SpeechInputClientImpl::didCompleteRecording):
        (WebKit::SpeechInputClientImpl::setRecognitionResult):
        (WebKit::SpeechInputClientImpl::didCompleteRecognition):
        * src/SpeechInputClientImpl.h: Added.
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::WebViewImpl): Pass on the above mentioned speech input connector to WebCore.
        * src/WebViewImpl.h:

2010-07-26  Ilya Tikhonovsky  <loislo@chromium.org>

        Reviewed by Pavel Feldman.

        Chromium DevTools: refactor query params, add basic
        support for WebSocket-based backend.

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

        * src/js/DevTools.js:
        (devtools.ToolsAgent.prototype.dispatchOnClient_):
        (WebInspector.loaded):
        (WebInspector.doLoadedDone):
        (devtools.domContentLoaded):
        * src/js/InspectorControllerImpl.js:

2010-07-24  Pavel Feldman  <pfeldman@chromium.org>

        Not reviewed: chromium build fix.

        * src/ApplicationCacheHost.cpp:
        (WebCore::ApplicationCacheHost::fillResourceList):

2010-07-23  Kavita Kanetkar  <kkanetkar@chromium.org>

        Reviewed by Joseph Pecoraro.

        Implement remaining Inspector support for chrome's appcache
        https://bugs.webkit.org/show_bug.cgi?id=42426

        * src/ApplicationCacheHost.cpp: Plugging in chrome's appcache info.
        (WebCore::ApplicationCacheHost::applicationCacheInfo):
        (WebCore::ApplicationCacheHost::fillResourceList):
        * src/js/InspectorControllerImpl.js:
        (devtools.InspectorBackendImpl):

2010-07-23  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Reviewed by Yury Semikhatsky.

        Chromium DevTools: migrate from utility context-based injected
        script dispatch to upstream schema.

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

        * src/ToolsAgent.h:
        * src/WebDevToolsAgentImpl.cpp:
        * src/WebDevToolsAgentImpl.h:
        * src/js/DevToolsHostStub.js:
        * src/js/InspectorControllerImpl.js:
        (devtools.InspectorBackendImpl):

2010-07-23  Pavel Feldman  <pfeldman@chromium.org>

        Not reviewed: rolling out r63963.

        * src/ToolsAgent.h:
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::dispatchOnInjectedScript):
        * src/WebDevToolsAgentImpl.h:
        * src/js/DevToolsHostStub.js:
        (.window.dispatchOnInjectedScript):
        * src/js/InspectorControllerImpl.js:
        (devtools.InspectorBackendImpl):
        (devtools.InspectorBackendImpl.prototype.dispatchOnInjectedScript):

2010-07-23  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Reviewed by Yury Semikhatsky.

        Chromium DevTools: migrate from utility context-based injected
        script dispatch to upstream schema.

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

        * src/ToolsAgent.h:
        * src/WebDevToolsAgentImpl.cpp:
        * src/WebDevToolsAgentImpl.h:
        * src/js/DevToolsHostStub.js:
        * src/js/InspectorControllerImpl.js:
        (devtools.InspectorBackendImpl):

2010-07-23  Kent Tamura  <tkent@chromium.org>

        Reviewed by Shinichiro Hamaji.

        Roll Chromium revision
        https://bugs.webkit.org/show_bug.cgi?id=42876

        * DEPS: Roll Chromium revision to r53434 in order to have the
        logger initialization change (r53303)

2010-07-22  Ilya Tikhonovsky  <loislo@chromium.org>

        Reviewed by Yury Semikhatsky.

        WebInspector: CodeGeneratorInspector was extended and now it can
        generate InspectorBackedDispatcher's code. This dispatcher will
        validate and dispatch incoming inspector commands only by native
        code without using javaScript. That is necessary step for
        RemoteDebugging support.
        https://bugs.webkit.org/show_bug.cgi?id=42588

        * src/ToolsAgent.h:
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::dispatchOnInspectorController):
        * src/WebDevToolsAgentImpl.h:
        * src/js/InspectorControllerImpl.js:
        (devtools.InspectorBackendImpl.prototype.callInspectorController_):

2010-07-22  Darin Fisher  <darin@chromium.org>

        Reviewed by David Levin.

        [Chromium] Propagate return value of EventHandler::handleMouseWheelEvent
        to caller of WebViewImpl::handleInputEvent.

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

        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::mouseWheel):
        (WebKit::WebViewImpl::handleInputEvent):
        * src/WebViewImpl.h:

2010-07-22  Darin Fisher  <darin@chromium.org>

        Reviewed by Kent Tamura.

        https://bugs.webkit.org/show_bug.cgi?id=42808
        Pass context menu events through WebInputEvent to WebPlugin::handleInputEvent.

        The DOM treats a context menu event as a type of mouse event.  We therefore
        do the same here, and reuse the WebMouseEvent subclass.  This makes sense
        since a context menu event has (x,y)-coordinates.

        * public/WebInputEvent.h:
        (WebKit::WebInputEvent::):
        (WebKit::WebInputEvent::isMouseEventType):
        * src/WebInputEventConversion.cpp:
        (WebKit::WebMouseEventBuilder::WebMouseEventBuilder):

2010-07-22  Andrey Kosyakov  <caseq@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: Stop granting universal access to inspector front-end page.
        https://bugs.webkit.org/show_bug.cgi?id=42817

        * src/WebDevToolsFrontendImpl.cpp:
        (WebKit::WebDevToolsFrontendImpl::frontendLoaded):

2010-07-22  Alexander Pavlov  <apavlov@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: Rename method for CSS rule source range retrieval and fix return object format
        https://bugs.webkit.org/show_bug.cgi?id=42379

        * src/js/InspectorControllerImpl.js:
        (devtools.InspectorBackendImpl):

2010-07-21  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Yury Semikhatsky.

        Chromium Dev Tools: Separators are missing in the context menu.

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

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

2010-07-21  Kent Tamura  <tkent@chromium.org>

        Reviewed by Dimitri Glazkov.

        [DRT/Chromium] Copy the test plugin into DumpRenderTree.app/
        https://bugs.webkit.org/show_bug.cgi?id=42733

        This was dropped in plugin copy refactoring.

        * WebKit.gyp:

2010-07-21  Brady Eidson  <beidson@apple.com>

        Reviewed by Geoffrey Garen.

        Break out "scheme registration" functionality from SecurityOrigin to a SchemeRegistry
        https://bugs.webkit.org/show_bug.cgi?id=42783

        * src/WebSecurityPolicy.cpp:
        (WebKit::WebSecurityPolicy::registerURLSchemeAsLocal):
        (WebKit::WebSecurityPolicy::registerURLSchemeAsNoAccess):
        (WebKit::WebSecurityPolicy::registerURLSchemeAsSecure):

2010-07-21  Bo Liu  <boliu@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Add chromium WebMediaPlayer to PlatformMedia
        https://bugs.webkit.org/show_bug.cgi?id=41295

        * WebKit.gyp:
        * public/WebMediaElement.h: Added.
        * src/WebMediaElement.cpp: Added.
        (WebKit::WebMediaElement::player):
        (WebKit::WebMediaElement::WebMediaElement):
        (WebKit::WebMediaElement::operator=):
        (WebKit::WebMediaElement::operator PassRefPtr<HTMLMediaElement>):
        * src/WebMediaPlayerClientImpl.cpp:
        (WebKit::WebMediaPlayerClientImpl::fromMediaElement):
        (WebKit::WebMediaPlayerClientImpl::mediaPlayer):
        (WebKit::WebMediaPlayerClientImpl::platformLayer):
        (WebKit::WebMediaPlayerClientImpl::platformMedia):
        * src/WebMediaPlayerClientImpl.h:

2010-07-21  Finnur Thorarinsson  <finnur.webkit@gmail.com>

        Reviewed by Dimitri Glazkov.

        Avoid crashing during find-in-page when |view| is NULL.
        https://bugs.webkit.org/show_bug.cgi?id=42760
        
        There are no layout tests because we don't have a repro case
        to work with, so this is a speculative fix based on crash dump
        diagnosis. See bug for details.

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::shouldScopeMatches):

2010-07-21  Hans Wennborg  <hans@chromium.org>

        Reviewed by Steve Block.

        Runtime feature switch for device orientation
        https://bugs.webkit.org/show_bug.cgi?id=42265

        Add a runtime feature switch that decides whether device orientation
        events are available or not. Defaults to true.

        * public/WebRuntimeFeatures.h:
        * src/WebRuntimeFeatures.cpp:
        (WebKit::WebRuntimeFeatures::enableDeviceOrientation):
        (WebKit::WebRuntimeFeatures::isDeviceOrientationEnabled):

2010-07-21  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: should be possible to debug inspector
        https://bugs.webkit.org/show_bug.cgi?id=42730

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

2010-07-16  James Hawkins  <jhawkins@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Implement WebFormElement::wasUserSubmitted(). This is used to
        verify that the user submitted the form instead of JS when saving form
        data in AutoFill.
        https://bugs.webkit.org/show_bug.cgi?id=42479

        * public/WebFormElement.h:
        * src/WebFormElement.cpp:
        (WebKit::WebFormElement::wasUserSubmitted):

2010-07-20  Daniel Erat  <derat@chromium.org>

        Reviewed by Ojan Vafai.

        Subpixel rendering always disabled for Chromium Linux
        https://bugs.webkit.org/show_bug.cgi?id=42220

        Honor Fontconfig subpixel rendering setting on Chromium Linux.

        * src/gtk/WebFontInfo.cpp:
        (WebKit::WebFontInfo::renderStyleForStrike):

2010-07-20  Darin Fisher  <darin@chromium.org>

        Fix Chromium build bustage.

        * src/ResourceHandle.cpp:
        (WebCore::ResourceHandle::hasAuthenticationChallenge): Add
        implementation of this method that always returns false.

2010-07-20  Darin Fisher  <darin@chromium.org>

        Reviewed by Jian Li.

        [Chromium] Add interface for downloading to a file.  This can be used
        in the future to support XMLHttpRequest.responseBlob, but it also
        serves a use case in Chromium.

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

        * public/WebURLLoaderClient.h:
        (WebKit::WebURLLoaderClient::willSendRequest):
        (WebKit::WebURLLoaderClient::didSendData):
        (WebKit::WebURLLoaderClient::didReceiveResponse):
        (WebKit::WebURLLoaderClient::didDownloadData):
        (WebKit::WebURLLoaderClient::didReceiveData):
        (WebKit::WebURLLoaderClient::didFinishLoading):
        (WebKit::WebURLLoaderClient::didFail):
        * public/WebURLRequest.h:
        * public/WebURLResponse.h:
        * src/WebURLRequest.cpp:
        (WebKit::WebURLRequest::downloadToFile):
        (WebKit::WebURLRequest::setDownloadToFile):
        * src/WebURLRequestPrivate.h:
        (WebKit::WebURLRequestPrivate::WebURLRequestPrivate):
        * src/WebURLResponse.cpp:
        (WebKit::WebURLResponse::downloadFilePath):
        (WebKit::WebURLResponse::setDownloadFilePath):
        * src/WebURLResponsePrivate.h:

2010-07-20  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r63750.
        http://trac.webkit.org/changeset/63750
        https://bugs.webkit.org/show_bug.cgi?id=42648

        This revision breaks the windows builds (Requested by
        hwennborg on #webkit).

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

2010-07-19  Victor Wang  <victorw@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Add webkit api reset to WebIDBDatabaseError and WebIDBKey
        and refactor their destructors for chromium multi dll build.

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

        * public/WebIDBDatabaseError.h:
        (WebKit::WebIDBDatabaseError::~WebIDBDatabaseError):
        * public/WebIDBKey.h:
        (WebKit::WebIDBKey::~WebIDBKey):
        * src/WebIDBDatabaseError.cpp:
        (WebKit::WebIDBDatabaseError::reset):
        * src/WebIDBKey.cpp:
        (WebKit::WebIDBKey::reset):

2010-07-20  Hans Wennborg  <hans@chromium.org>

        Reviewed by Steve Block.

        Runtime feature switch for device orientation
        https://bugs.webkit.org/show_bug.cgi?id=42265

        Add a runtime feature switch that decides whether device orientation
        events are available or not. Defaults to true.

        * public/WebRuntimeFeatures.h:
        * src/WebRuntimeFeatures.cpp:
        (WebKit::WebRuntimeFeatures::enableDeviceOrientation):
        (WebKit::WebRuntimeFeatures::isDeviceOrientationEnabled):

2010-07-19  Victoria Kirst  <vrk@google.com>

        Reviewed by David Levin.

        Updated WebMediaPlayer to support accelerated rendering and to
        create and return a VideoChromiumLayer as its platform layer.
        https://bugs.webkit.org/show_bug.cgi?id=42234

        * src/WebMediaPlayerClientImpl.cpp:
        (WebKit::WebMediaPlayerClientImpl::platformLayer):
        (WebKit::WebMediaPlayerClientImpl::create):
        * src/WebMediaPlayerClientImpl.h:
        (WebKit::WebMediaPlayerClientImpl::supportsAcceleratedRendering):

2010-07-19  Kenneth Russell  <kbr@google.com>

        Reviewed by Nate Chapin.

        WebGL rendering results must be made available to Canvas.toDataURL and 2D drawImage
        https://bugs.webkit.org/show_bug.cgi?id=34719

        Fixed compiler warning introduced by original patch.

        * src/WebGraphicsContext3DDefaultImpl.cpp:
        (WebKit::WebGraphicsContext3DDefaultImpl::readBackFramebuffer):

2010-07-19  Tony Chang  <tony@chromium.org>

        Reviewed by Kent Tamura.

        [chromium] refactor npapi plugin copy step
        https://bugs.webkit.org/show_bug.cgi?id=42493

        This is to avoid duplicate copy rules in the Linux make build.

        * WebKit.gyp:
        * DEPS: 52483:52869

2010-07-19  Ilya Tikhonovsky  <loislo@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: Live edit is not working in chromium.
        https://bugs.webkit.org/show_bug.cgi?id=42572

        * src/js/DebuggerScript.js:

2010-07-16  Pavel Podivilov  <podivilov@chromium.org>

        Reviewed by Pavel Feldman.

        [V8] Web Inspector: get actual breakpoint location from v8 and pass it
        to ScripDebugServer.
        https://bugs.webkit.org/show_bug.cgi?id=42452

        * src/js/DebuggerScript.js:

2010-07-17  John Gregg  <johnnyg@google.com>

        Reviewed by Kent Tamura.

        [chromium] directory upload: pass the attribute up to the chrome client        
        https://bugs.webkit.org/show_bug.cgi?id=42475

        This allows chromium to display the native system directory picker when
        the directory attribute is present on the input element.

        * public/WebFileChooserParams.h:
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::runOpenPanel):

2010-07-16  Zhe Su  <suzhe@chromium.org>

        Reviewed by Darin Adler.

        REGRESSION(r61484): Broke focus behaviour on Qt and probably other platforms
        https://bugs.webkit.org/show_bug.cgi?id=42253

        Implement EditorClient::willSetInputMethodState which replaces
        setInputMethodState method.

        * src/EditorClientImpl.cpp:
        (WebKit::EditorClientImpl::willSetInputMethodState):
        (WebKit::EditorClientImpl::setInputMethodState):
        * src/EditorClientImpl.h:

2010-07-16  Kent Tamura  <tkent@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] <input type=number> UI implementation for Windows
        https://bugs.webkit.org/show_bug.cgi?id=42259

        * public/WebThemeEngine.h:
        (WebKit::WebThemeEngine::paintSpinButton): Added.
        * src/ChromiumBridge.cpp:
        (WebCore::ChromiumBridge::paintSpinButton):
          Added. It calls WebThemeEngine::paintSpinButton().

2010-07-16  James Robinson  <jamesr@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Avoid crashing if offscreen GLES2 context creation fails
        https://bugs.webkit.org/show_bug.cgi?id=42469

        If creating or initializing an offscreen GLES2Context fails we should return null
        rather than crashing or returning an invalid context.

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

2010-07-15  Tony Gentilcore  <tonyg@chromium.org>

        Reviewed by Darin Fisher.

        Enable window.webkitPerformance (Web Timing) for chromium
        https://bugs.webkit.org/show_bug.cgi?id=42313

        * features.gypi:

2010-07-16  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r63551.
        http://trac.webkit.org/changeset/63551
        https://bugs.webkit.org/show_bug.cgi?id=42460

        "Problems with gyp" (Requested by yurys on #webkit).

        * DEPS:

2010-07-16  Yury Semikhatsky  <yurys@chromium.org>

        Unreviewed. Bump up Chromium revision.

        * DEPS:

2010-07-16  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: disable AppCache in chromium.

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

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

2010-07-16  Alexander Pavlov  <apavlov@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: [Chromium] A non-existent resource is referenced from devTools.css

        The erroneous rule has been removed.
        https://bugs.webkit.org/show_bug.cgi?id=42454

        * src/js/devTools.css:

2010-07-16  Andrey Kosyakov  <caseq@chromium.org>

        Reviewed by Pavel Feldman.

        Check that end node of a range has a valid renderer in WebViewImpl::caretOrSelectionBounds()
        to avoid crash in Position::getInlineBoxAndOffset() when start node has renderer but end one doesn't.
        https://bugs.webkit.org/show_bug.cgi?id=42449

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

2010-07-16  Mikhail Naganov  <mnaganov@chromium.org>

        Reviewed by Pavel Feldman.

        Make JS memory stats available via 'Performance' object (Web Timing).
        This statistics is populated only if 'WebKitMemoryInfoEnabled'
        preference is set.

        'console.memory' is kept until Web Timing object becomes visible by
        default (currently it is hidden under compile-time flag).  These stats
        are guarded with the same preference.

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

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

2010-07-15  Victor Wang  <victorw@chromium.org>

        Reviewed by David Levin.

       [Chromium] Chromium webkit dll updates:
        -. Fix WEBKIT_IMPLEMENTATION in WebCommon so
           dllimport works as expected.
        -. Update webkit.gyp so targets that depend on webkit
           has correct macros defined.

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

        * WebKit.gyp:
        * public/WebCommon.h:

2010-07-13  Zhenyao Mo  <zmo@google.com>

        Reviewed by Nate Chapin.

        WebGL rendering results must be made available to Canvas.toDataURL and 2D drawImage
        https://bugs.webkit.org/show_bug.cgi?id=34719

        * src/GraphicsContext3D.cpp:
        (WebCore::GraphicsContext3DInternal::paintRenderingResultsToCanvas): Implement paintRenderingResultsToCanvas().
        (WebCore::GraphicsContext3DInternal::beginPaint): Just use paintRenderingResultsToCanvas().

2010-07-15  Victor Wang  <victorw@chromium.org>

        Reviewed by David Levin.

        Roll Chromium DEPS forward to r52483.
        https://bugs.webkit.org/show_bug.cgi?id=42386

        * DEPS:

2010-07-15  Scott Violet  <sky@chromium.org>

        Reviewed by David Levin.

        [chromium] WebViewClient::removeAutofillSuggestions is not passed the correct name
        https://bugs.webkit.org/show_bug.cgi?id=42385

        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::autocompleteHandleKeyEvent): Use WebInputElement::nameForAutofill() instead of name.

2010-07-15  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r63446.
        http://trac.webkit.org/changeset/63446
        https://bugs.webkit.org/show_bug.cgi?id=42412

        It broke the Chromium Windows bot due to missing dependencies
        there. (Requested by dave_levin on #webkit).

        * DEPS:

2010-07-15  Victor Wang  <victorw@chromium.org>

        Reviewed by David Levin.

        Roll Chromium DEPS forward to r52483.
        https://bugs.webkit.org/show_bug.cgi?id=42386

        * DEPS:

2010-07-15  Michael Nordman  <michaeln@google.com>

        Reviewed by Darin Fisher.

        WebKitAPI additions to support inspecting application caches.
        https://bugs.webkit.org/show_bug.cgi?id=41993

        * public/WebApplicationCacheHost.h:
        (WebKit::WebApplicationCacheHost::CacheInfo::CacheInfo):
        (WebKit::WebApplicationCacheHost::ResourceInfo::ResourceInfo):
        (WebKit::WebApplicationCacheHost::getAssociatedCacheInfo):
        (WebKit::WebApplicationCacheHost::getResourceList):
        (WebKit::WebApplicationCacheHost::deleteAssociatedCacheGroup):
        * public/WebApplicationCacheHostClient.h:
        (WebKit::WebApplicationCacheHostClient::didChangeCacheAssociation):
        * src/ApplicationCacheHostInternal.h:
        (WebCore::ApplicationCacheHostInternal::didChangeCacheAssociation):

2010-07-15  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: differentiate between blocking and connecting timers.

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

        * public/WebURLResponse.h:
        * src/WebURLResponse.cpp:
        (WebKit::WebURLResponse::connectionReused):
        (WebKit::WebURLResponse::setConnectionReused):

2010-07-15  Pavel Podivilov  <podivilov@chromium.org>

        Reviewed by Yury Semikhatsky.

        Fix mac compilation failure
        https://bugs.webkit.org/show_bug.cgi?id=42344

        * src/AutoFillPopupMenuClient.cpp:
        (WebKit::AutoFillPopupMenuClient::removeSuggestionAtIndex):
        (WebKit::AutoFillPopupMenuClient::canRemoveSuggestionAtIndex):

2010-07-14  George Yakovlev  <georgey@chromium.org>

        Reviewed by Darin Fisher.

        Allow Chromium access to Select control choices
        https://bugs.webkit.org/show_bug.cgi?id=41384

        * WebKit.gyp:
        * public/WebOptionElement.h: Added.
        (WebKit::WebOptionElement::WebOptionElement):
        (WebKit::WebOptionElement::operator=):
        (WebKit::WebOptionElement::assign):
        * public/WebSelectElement.h:
        * src/WebOptionElement.cpp: Added.
        (WebKit::WebOptionElement::setValue):
        (WebKit::WebOptionElement::value):
        (WebKit::WebOptionElement::index):
        (WebKit::WebOptionElement::text):
        (WebKit::WebOptionElement::defaultSelected):
        (WebKit::WebOptionElement::setDefaultSelected):
        (WebKit::WebOptionElement::label):
        (WebKit::WebOptionElement::disabled):
        (WebKit::WebOptionElement::WebOptionElement):
        (WebKit::WebOptionElement::operator=):
        (WebKit::WebOptionElement::operator PassRefPtr<HTMLOptionElement>):
        * src/WebSelectElement.cpp:
        (WebKit::WebSelectElement::listItems):

2010-07-14  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r63389.
        http://trac.webkit.org/changeset/63389
        https://bugs.webkit.org/show_bug.cgi?id=42311

        It broke the Chromium Linux build. (Requested by dave_levin on
        #webkit).

        * DEPS:
        * WebKit.gyp:
        * public/WebCommon.h:

2010-07-14  Scott Violet  <sky@chromium.org>

        Reviewed by David Levin.

        [chromium] Autofill menu shows seperator at the wrong place when an entry is deleted
        https://bugs.webkit.org/show_bug.cgi?id=42210

        * src/AutoFillPopupMenuClient.cpp:
        (WebKit::AutoFillPopupMenuClient::removeSuggestionAtIndex): Updates internal data appropriately.
        (WebKit::AutoFillPopupMenuClient::canRemoveSuggestionAtIndex): Now called before removal to see if can remove.
        * src/AutoFillPopupMenuClient.h: Fixed whitespace and added method.
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::autocompleteHandleKeyEvent): Added call to canRemoveSuggestionAtIndex.

2010-07-14  James Robinson  <jamesr@chromium.org>

        Unreviewed. Compile fix, initialization/declaration order mismatch.

        * src/GLES2ContextInternal.h:

2010-07-14  Jay Civelli  <jcivelli@chromium.org>

        Reviewed by David Levin.

        [chromium] don't restrict the width of the autofill popup.
        https://bugs.webkit.org/show_bug.cgi?id=42206

        * src/WebViewImpl.cpp:

2010-07-14  Victor Wang  <victorw@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Chromium webkit dll updates:
        -. Fix WEBKIT_IMPLEMENTATION in WebCommon so
           dllimport works as expected.
        -. Update webkit.gyp so targets that depend on webkit
           has correct macros defined.
        -. Roll forward chromium deps to r52273.

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

        * DEPS:
        * WebKit.gyp:
        * public/WebCommon.h:

2010-07-14  James Hawkins  <jhawkins@chromium.org>

        UNREVIEWED Build Fix.

        Fix a typo.

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

2010-07-14  James Robinson  <jamesr@chromium.org>

        Reviewed by Darin Fisher.

        Breaks all dependencies on Page from platform/ and cleans up GLES2Context lifetime
        https://bugs.webkit.org/show_bug.cgi?id=42203

        Rather than constructing a GLES2Context from a Page, pass the LayerRendererChromium
        a GLES2Context in from the constructor.  This way the platform/ directory can remain
        ignorant of Page and friends.  Also adds functions on ChromeClientChromium to request
        onscreen and offscreen GLES2Contexts for callers in WebCore that need them. 

        * WebKit.gyp:
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::getOnscreenGLES2Context):
        (WebKit::ChromeClientImpl::getOffscreenGLES2Context):
        * src/ChromeClientImpl.h:
        * src/GLES2Context.cpp:
        (WebCore::GLES2ContextInternal::create):
        (WebCore::GLES2Context::create):
        (WebCore::GLES2Context::GLES2Context):
        * src/GLES2ContextInternal.cpp: Added.
        (WebCore::GLES2ContextInternal::~GLES2ContextInternal):
        * src/GLES2ContextInternal.h: Added.
        (WebCore::GLES2ContextInternal::getWebGLES2Context):
        (WebCore::GLES2ContextInternal::GLES2ContextInternal):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::setIsAcceleratedCompositingActive):
        (WebKit::WebViewImpl::getOnscreenGLES2Context):
        (WebKit::WebViewImpl::getOffscreenGLES2Context):
        * src/WebViewImpl.h:

2010-07-14  James Hawkins  <jhawkins@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Use the unique ID instead of the profile label to identify
        the accepted AutoFill suggestion.
        https://bugs.webkit.org/show_bug.cgi?id=42301

        * public/WebView.h:
        * public/WebViewClient.h:
        (WebKit::WebViewClient::didAcceptAutoFillSuggestion):
        (WebKit::WebViewClient::didSelectAutoFillSuggestion):
        * src/AutoFillPopupMenuClient.cpp:
        (WebKit::AutoFillPopupMenuClient::valueChanged):
        (WebKit::AutoFillPopupMenuClient::selectionChanged):
        (WebKit::AutoFillPopupMenuClient::initialize):
        (WebKit::AutoFillPopupMenuClient::setSuggestions):
        (WebKit::AutoFillPopupMenuClient::textFieldStyle):
        * src/AutoFillPopupMenuClient.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::applyAutoFillSuggestions):
        (WebKit::WebViewImpl::applyAutocompleteSuggestions):
        * src/WebViewImpl.h:

2010-07-14  Jay Civelli  <jcivelli@chromium.org>

        Reviewed by David Levin.

        Don't notify the WebView that the popup has been closed when the
        selection is cleared, as the popup is not gone and would linger
        as a ghost popup.
        https://bugs.webkit.org/show_bug.cgi?id=42180

        * src/AutoFillPopupMenuClient.cpp:
        (WebKit::AutoFillPopupMenuClient::selectionCleared):

2010-07-14  Sam Weinig  <sam@webkit.org>

        Fix the chromium mac build.

        * src/WebPopupMenuImpl.cpp:
        (WebKit::WebPopupMenuImpl::setCursor):

2010-07-14  Sam Weinig  <sam@webkit.org>

        Reviewed by Darin Adler.

        Patch for https://bugs.webkit.org/show_bug.cgi?id=42232
        Make changing Cursors work in WebKit2.

        * src/ChromeClientImpl.h:
        (WebKit::ChromeClientImpl::setCursor):
        Change prototype to match new one.

        * src/WebPopupMenuImpl.cpp:
        (WebKit::WebPopupMenuImpl::setCursor):
        * src/WebPopupMenuImpl.h:
        Add empty setCursor function to satisfy the HostWindow interface.

2010-07-13  Alexey Proskuryakov  <ap@apple.com>

        Reviewed by Darin Adler.

        https://bugs.webkit.org/show_bug.cgi?id=42201
        Use ResourceHandle object for synchronous loading

        * src/ResourceHandle.cpp:
        (WebCore::ResourceHandle::request):
        This method is no longer const in cross-platform code, and is called firstRequest.

2010-07-14  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r63305.
        http://trac.webkit.org/changeset/63305
        https://bugs.webkit.org/show_bug.cgi?id=42256

        "debugger-breakpoints-not-activated-on-reload.html fails on
        GTK" (Requested by yurys on #webkit).

        * src/js/DebuggerScript.js:
        ():

2010-07-14  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: remove v8 debugger code that doesn't use ScriptDebugServer
        https://bugs.webkit.org/show_bug.cgi?id=42164

        * WebKit.gypi:
        * src/DebuggerAgentManager.cpp:
        (WebKit::DebuggerAgentManager::debugAttach):
        (WebKit::DebuggerAgentManager::debugDetach):
        * src/InspectorFrontendClientImpl.cpp:
        (WebKit::InspectorFrontendClientImpl::windowObjectCleared):
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::~WebDevToolsAgentImpl):
        (WebKit::WebDevToolsAgentImpl::attach):
        (WebKit::WebDevToolsAgentImpl::didNavigate):
        (WebKit::WebDevToolsAgentImpl::createInspectorFrontendProxy):
        * src/js/DebuggerAgent.js: Removed.
        * src/js/DevTools.js:
        (devtools.ToolsAgent):
        (WebInspector.loaded):
        * src/js/DevToolsHostStub.js:
        * src/js/InspectorControllerImpl.js:
        (devtools.InspectorBackendImpl):
        * src/js/Tests.js:
        (.TestSuite.prototype.testAutoContinueOnSyntaxError):
        (.TestSuite.prototype.testExpandScope.examineScopes):
        (.TestSuite.prototype.testExpandScope):
        (.TestSuite.prototype.testDebugIntrinsicProperties):

2010-07-14  Ilya Tikhonovsky  <loislo@chromium.org>

        Reviewed by Yury Semikhatsky.

        WebInspector: Clean-up InspectorBackend code. In the next changes
        InspectorBackend content will be generated by scripts. As far as
        generator is very simple thing all nontrivial function should be
        moved to InspectorController and DOMAgent.
        https://bugs.webkit.org/show_bug.cgi?id=42171

        * src/js/InspectorControllerImpl.js:
        (devtools.InspectorBackendImpl):
        (.devtools.InspectorBackendImpl.prototype.pause):
        (.devtools.InspectorBackendImpl.prototype.resume):
        (.devtools.InspectorBackendImpl.prototype.stepIntoStatement):
        (.devtools.InspectorBackendImpl.prototype.stepOutOfFunction):
        (.devtools.InspectorBackendImpl.prototype.stepOverStatement):
        (else.devtools.InspectorBackendImpl.prototype.pause):

2010-07-14  Pavel Podivilov  <podivilov@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: if breakpoints were deactivated, add new breakpoints as disabled.
        https://bugs.webkit.org/show_bug.cgi?id=41461

        * src/js/DebuggerScript.js:
        ():

2010-07-14  Kent Tamura  <tkent@chromium.org>

        Unreviewed, 2nd attempt to fix build on 'Webkit.org Reliability Builder'.

        * WebKit.gyp:

2010-07-14  Kent Tamura  <tkent@chromium.org>

        Unreviewed, attempt to fix build on 'Webkit.org Reliability Builder'.

        * WebKit.gyp:

2010-07-14  Kent Tamura  <tkent@chromium.org>

        Reviewed by David Levin.

        [Chromium] Upstreaming inspector_resources target
        https://bugs.webkit.org/show_bug.cgi?id=41669

        'inspector_resource' is currently in src/webkit/webkit.gyp of
        Chromium tree. We move it to WebKit tree because:
        - DumpRenderTree in WebKit tree needs it, and
        - It's hard to refer to WebKit.gypi and WebCore.gypi from
          webkit_support in both cases of Chromium-tree build and
          WebKit-tree build.

        * WebKit.gyp:

2010-07-13  Kent Tamura  <tkent@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Linux implementation of <input type=number> UI
        https://bugs.webkit.org/show_bug.cgi?id=41925

        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::setScrollbarColors):
         Call PlatformThemeChromiumGtk::setScrollbarColors() instead of
         RenderThemeChromiumLinux::setScrollbarColors().

2010-07-13  Chris Guillory  <chris.guillory@google.com>

        Reviewed by David Levin.

        Fix adoptRef usage violation in WebAccessibilityCacheImpl.cpp.
        https://bugs.webkit.org/show_bug.cgi?id=42092

        * src/WebAccessibilityCacheImpl.cpp:
        (WebKit::WebAccessibilityCacheImpl::WeakHandle::create):
        (WebKit::WebAccessibilityCacheImpl::WeakHandle::WeakHandle):

2010-07-13  Albert J. Wong  <ajwong@chromium.org>

        Unreviewed, build fix.

        [chromium] The comparision between signed/unsigned breaks the chromium
        mac build.

        * src/AutoFillPopupMenuClient.cpp:
        (WebKit::AutoFillPopupMenuClient::getSuggestion):
        (WebKit::AutoFillPopupMenuClient::getLabel):

2010-07-10  Zhenyao Mo  <zmo@google.com>

        Reviewed by Darin Fisher.

        Implement bufferData and bufferSubData with ArrayBuffer as input
        https://bugs.webkit.org/show_bug.cgi?id=41884

        * src/GraphicsContext3D.cpp: Implement bufferData and bufferSubData with ArrayBuffer as input.
        (WebCore::GraphicsContext3DInternal::bufferData):
        (WebCore::GraphicsContext3DInternal::bufferSubData):

2010-07-10  Zhenyao Mo  <zmo@google.com>

        Reviewed by Darin Fisher.

        Need to emulate MAX_VARYING_VECTORS/MAX_FRAGMENT_UNIFORM_VECTORs/MAX_VERTEX_UNIFORM_VECTORS for glGet
        https://bugs.webkit.org/show_bug.cgi?id=42032

        * src/WebGraphicsContext3DDefaultImpl.cpp:
        (WebKit::WebGraphicsContext3DDefaultImpl::getIntegerv): Emulate the enums.

2010-07-13  Andrey Kosyakov  <caseq@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: catch and log JS exceptions resulting from executing a 
        script on inspector front-end to prevent renderer from crashing.
        https://bugs.webkit.org/show_bug.cgi?id=42157

        * src/WebDevToolsFrontendImpl.cpp:
        (WebKit::WebDevToolsFrontendImpl::executeScript):

2010-07-13  Kent Tamura  <tkent@chromium.org>

        Unreviewed, build fix.

        Fix a build error by r63179 for Chromium.

        * tests/PopupMenuTest.cpp:
        (WebKit::TestPopupMenuClient::itemLabel): Added.

2010-07-12  Jay Civelli  <jcivelli@chromium.org>

        Reviewed by Kent Tamura.

        Making the autofill popup use labels to show the label
        associated with an item.
        https://bugs.webkit.org/show_bug.cgi?id=41964

        * src/AutoFillPopupMenuClient.cpp:
        (WebKit::AutoFillPopupMenuClient::getSuggestion):
        (WebKit::AutoFillPopupMenuClient::getLabel):
        (WebKit::AutoFillPopupMenuClient::itemLabel):
        (WebKit::AutoFillPopupMenuClient::setSuggestions):
        (WebKit::AutoFillPopupMenuClient::convertListIndexToInternalIndex):
        * src/AutoFillPopupMenuClient.h:

2010-07-12  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r63171.
        http://trac.webkit.org/changeset/63171
        https://bugs.webkit.org/show_bug.cgi?id=42144

        Broke Chromium canary (Requested by tkent on #webkit).

        * WebKit.gyp:

2010-07-12  Kent Tamura  <tkent@chromium.org>

        Reviewed by David Levin.

        [Chromium] Upstreaming inspector_resources target
        https://bugs.webkit.org/show_bug.cgi?id=41669

        'inspector_resource' is currently in src/webkit/webkit.gyp of
        Chromium tree. We move it to WebKit tree because:
        - DumpRenderTree in WebKit tree needs it, and
        - It's hard to refer to WebKit.gypi and WebCore.gypi from
          webkit_support in both cases of Chromium-tree build and
          WebKit-tree build.

        * WebKit.gyp:

2010-07-12  Viet-Trung Luu  <viettrungluu@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Pass key down events on to plugins.
        https://bugs.webkit.org/show_bug.cgi?id=42113

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

2010-07-12  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Joseph Pecoraro.

        Web Inspector: provide starts and ends for network phases instead of duration.

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

        * public/WebURLLoadTiming.h:
        * public/WebURLResponse.h:
        * src/WebURLLoadTiming.cpp:
        (WebKit::WebURLLoadTiming::proxyStart):
        (WebKit::WebURLLoadTiming::setProxyStart):
        (WebKit::WebURLLoadTiming::proxyEnd):
        (WebKit::WebURLLoadTiming::setProxyEnd):
        (WebKit::WebURLLoadTiming::dnsStart):
        (WebKit::WebURLLoadTiming::setDNSStart):
        (WebKit::WebURLLoadTiming::dnsEnd):
        (WebKit::WebURLLoadTiming::setDNSEnd):
        (WebKit::WebURLLoadTiming::connectStart):
        (WebKit::WebURLLoadTiming::setConnectStart):
        (WebKit::WebURLLoadTiming::connectEnd):
        (WebKit::WebURLLoadTiming::setConnectEnd):
        (WebKit::WebURLLoadTiming::sendStart):
        (WebKit::WebURLLoadTiming::setSendStart):
        (WebKit::WebURLLoadTiming::sendEnd):
        (WebKit::WebURLLoadTiming::setSendEnd):
        (WebKit::WebURLLoadTiming::receiveHeadersStart):
        (WebKit::WebURLLoadTiming::setReceiveHeadersStart):
        (WebKit::WebURLLoadTiming::receiveHeadersEnd):
        (WebKit::WebURLLoadTiming::setReceiveHeadersEnd):
        (WebKit::WebURLLoadTiming::sslStart):
        (WebKit::WebURLLoadTiming::setSSLStart):
        (WebKit::WebURLLoadTiming::sslEnd):
        (WebKit::WebURLLoadTiming::setSSLEnd):
        * src/WebURLResponse.cpp:
        (WebKit::WebURLResponse::wasCached):
        (WebKit::WebURLResponse::setWasCached):

2010-07-12  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r63156.
        http://trac.webkit.org/changeset/63156
        https://bugs.webkit.org/show_bug.cgi?id=42129

        broke chromium compile (Requested by jamesr on #webkit).

        * WebKit.gyp:
        * public/WebAccessibilityObject.h:
        * public/WebAttribute.h: Removed.
        * public/WebDocumentType.h: Removed.
        * public/WebElement.h:
        * public/WebNamedNodeMap.h: Removed.
        * public/WebNode.h:
        * public/WebRenderStyle.h: Removed.
        * src/WebAccessibilityObject.cpp:
        * src/WebAttribute.cpp: Removed.
        * src/WebDocumentType.cpp: Removed.
        * src/WebElement.cpp:
        * src/WebNamedNodeMap.cpp: Removed.
        * src/WebNode.cpp:
        * src/WebRenderStyle.cpp: Removed.

2010-07-12  Dominic Mazzoni  <dmazzoni@google.com>

        Reviewed by Darin Fisher.

        Add methods to WebAccessibilityObject to access the Node and
        Document, and then add methods to access some document, node,
        and element properties needed for Windows accessibility.

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

        * WebKit.gyp:
        * public/WebAccessibilityObject.h:
        * public/WebAttribute.h: Added.
        (WebKit::WebAttribute::~WebAttribute):
        (WebKit::WebAttribute::WebAttribute):
        (WebKit::WebAttribute::operator=):
        * public/WebDocumentType.h: Added.
        (WebKit::WebDocumentType::WebDocumentType):
        (WebKit::WebDocumentType::operator=):
        (WebKit::WebDocumentType::assign):
        * public/WebElement.h:
        * public/WebNamedNodeMap.h: Added.
        (WebKit::WebNamedNodeMap::~WebNamedNodeMap):
        (WebKit::WebNamedNodeMap::WebNamedNodeMap):
        (WebKit::WebNamedNodeMap::operator=):
        * public/WebNode.h:
        * public/WebRenderStyle.h: Added.
        (WebKit::WebRenderStyle::~WebRenderStyle):
        (WebKit::WebRenderStyle::WebRenderStyle):
        (WebKit::WebRenderStyle::operator=):
        * src/WebAccessibilityObject.cpp:
        (WebKit::WebAccessibilityObject::node):
        (WebKit::WebAccessibilityObject::document):
        * src/WebAttribute.cpp: Added.
        (WebKit::WebAttribute::reset):
        (WebKit::WebAttribute::assign):
        (WebKit::WebAttribute::WebAttribute):
        (WebKit::WebAttribute::localName):
        (WebKit::WebAttribute::value):
        * src/WebDocumentType.cpp: Added.
        (WebKit::WebDocumentType::name):
        (WebKit::WebDocumentType::WebDocumentType):
        (WebKit::WebDocumentType::operator=):
        (WebKit::WebDocumentType::operator PassRefPtr<DocumentType>):
        * src/WebElement.cpp:
        (WebKit::WebElement::attributes):
        * src/WebNamedNodeMap.cpp: Added.
        (WebKit::WebNamedNodeMap::reset):
        (WebKit::WebNamedNodeMap::assign):
        (WebKit::WebNamedNodeMap::WebNamedNodeMap):
        (WebKit::WebNamedNodeMap::length):
        (WebKit::WebNamedNodeMap::attributeItem):
        * src/WebNode.cpp:
        (WebKit::WebNode::element):
        (WebKit::WebNode::hasComputedStyle):
        (WebKit::WebNode::computedStyle):
        * src/WebRenderStyle.cpp: Added.
        (WebKit::WebRenderStyle::reset):
        (WebKit::WebRenderStyle::assign):
        (WebKit::WebRenderStyle::WebRenderStyle):
        (WebKit::WebRenderStyle::display):

2010-07-12  Alexander Pavlov  <apavlov@chromium.org>

        Reviewed by Yury Semikhatsky.

        [Chromium] Crash when stepping on a breakpoint while debugging Web Inspector
        https://bugs.webkit.org/show_bug.cgi?id=41958

        * src/WebViewImpl.cpp:
        (WebKit::WebView::willEnterModalLoop):
        (WebKit::WebView::didExitModalLoop):

2010-07-12  Jeremy Orlow  <jorlow@chromium.org>

        Speculative fix for visual studio retardedness.

        * public/WebCommon.h:

2010-07-12  Jeremy Orlow  <jorlow@chromium.org>

        Build fix.  Add an include.

        * public/WebCommon.h:

2010-06-27  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Dumitru Daniliuc.

        Implement IDBObjectStore.get/set/remove
        https://bugs.webkit.org/show_bug.cgi?id=41250

        Plumbing for new features, IDBKey, and added support
        for both invalid (i.e. not serializable) and null
        (i.e. the RefPtr was 0) to SerializedScriptValue.

        * WebKit.gyp:
        * public/WebIDBCallbacks.h:
        (WebKit::WebIDBCallbacks::onSuccess):
        * public/WebIDBKey.h: Added.
        (WebKit::WebIDBKey::WebIDBKey):
        (WebKit::WebIDBKey::operator=):
        (WebKit::WebIDBKey::):
        * public/WebIDBObjectStore.h:
        (WebKit::WebIDBObjectStore::get):
        (WebKit::WebIDBObjectStore::set):
        (WebKit::WebIDBObjectStore::remove):
        (WebKit::WebIDBObjectStore::createIndex):
        (WebKit::WebIDBObjectStore::index):
        (WebKit::WebIDBObjectStore::removeIndex):
        * public/WebSerializedScriptValue.h:
        * src/IDBCallbacksProxy.cpp:
        (WebCore::IDBCallbacksProxy::onSuccess):
        * src/IDBCallbacksProxy.h:
        * src/IDBObjectStoreProxy.cpp:
        (WebCore::IDBObjectStoreProxy::get):
        (WebCore::IDBObjectStoreProxy::set):
        (WebCore::IDBObjectStoreProxy::remove):
        * src/IDBObjectStoreProxy.h:
        * src/WebIDBCallbacksImpl.cpp:
        (WebCore::WebIDBCallbacksImpl::onSuccess):
        * src/WebIDBCallbacksImpl.h:
        * src/WebIDBKey.cpp: Added.
        (WebKit::WebIDBKey::~WebIDBKey):
        (WebKit::WebIDBKey::createNull):
        (WebKit::WebIDBKey::createInvalid):
        (WebKit::WebIDBKey::assign):
        (WebKit::WebIDBKey::assignNull):
        (WebKit::WebIDBKey::assignInvalid):
        (WebKit::WebIDBKey::type):
        (WebKit::WebIDBKey::string):
        (WebKit::WebIDBKey::number):
        (WebKit::WebIDBKey::WebIDBKey):
        (WebKit::WebIDBKey::operator=):
        (WebKit::WebIDBKey::operator PassRefPtr<IDBKey>):
        * src/WebIDBObjectStoreImpl.cpp:
        (WebKit::WebIDBObjectStoreImpl::get):
        (WebKit::WebIDBObjectStoreImpl::set):
        (WebKit::WebIDBObjectStoreImpl::remove):
        * src/WebIDBObjectStoreImpl.h:
        * src/WebSerializedScriptValue.cpp:
        (WebKit::WebSerializedScriptValue::createInvalid):

2010-07-09  John Abd-El-Malek  <jam@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Take out WebPlugin::supportsFind since we can accomplish the same thing by having a return value on startFind
        https://bugs.webkit.org/show_bug.cgi?id=42011

        * public/WebPlugin.h:
        (WebKit::WebPlugin::startFind):

2010-07-09  Leon Clarke  <leonclarke@google.com>

        Reviewed by Adam Barth.

        add support for link prefetching
        https://bugs.webkit.org/show_bug.cgi?id=3652

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

2010-07-09  Michael Nordman  <michaeln@google.com>

        Reviewed by Dumitru Daniliuc.

        Use class ProgressEvent when raising appcache related progress events and
        set the 'total', 'loaded', and 'lengthComputable' attributes.
        Also raise the final progress event with the 'total' and 'loaded' attribute
        values are equal to one another to keep pace with the spec for this feature.
        https://bugs.webkit.org/show_bug.cgi?id=37602

        * src/ApplicationCacheHost.cpp:
        (WebCore::ApplicationCacheHost::notifyDOMApplicationCache):
        (WebCore::ApplicationCacheHost::stopDeferringEvents):
        (WebCore::ApplicationCacheHost::dispatchDOMEvent):
        * src/ApplicationCacheHostInternal.h:
        (WebCore::ApplicationCacheHostInternal::notifyEventListener):
        (WebCore::ApplicationCacheHostInternal::notifyProgressEventListener):

2010-07-09  David Holloway  <dhollowa@chromium.org>

        Reviewed by Dimitri Glazkov.

        Roll Chromium DEPS forward to r51736.
        https://bugs.webkit.org/show_bug.cgi?id=41867

        * DEPS:

2010-07-09  Pavel Feldman  <pfeldman@chromium.org>

        Not reviewed: chromium build fix.

        * public/WebGLES2Context.h:

2010-07-09  Yael Aharon  <yael.aharon@nokia.com>

        Reviewed by Laszlo Gombos.

        NotificationPresenter needs a cancelRequestPermission API
        https://bugs.webkit.org/show_bug.cgi?id=41783

        Updated the NotificationPresenter API.

        * src/NotificationPresenterImpl.cpp:
        (WebKit::NotificationPresenterImpl::checkPermission):
        (WebKit::NotificationPresenterImpl::requestPermission):
        * src/NotificationPresenterImpl.h:
        (WebKit::NotificationPresenterImpl::cancelRequestsForPermission):

2010-07-08  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: Provide detailed network info in the resources panel.

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

        * WebKit.gyp:
        * public/WebDevToolsAgent.h:
        * public/WebURLLoadTiming.h: Added.
        (WebKit::WebURLLoadTiming::~WebURLLoadTiming):
        (WebKit::WebURLLoadTiming::WebURLLoadTiming):
        (WebKit::WebURLLoadTiming::operator=):
        (WebKit::WebURLLoadTiming::isNull):
        * public/WebURLRequest.h:
        * public/WebURLResponse.h:
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::willSendRequest):
        * src/WebDevToolsAgentImpl.h:
        * src/WebURLLoadTiming.cpp: Added.
        (WebKit::WebURLLoadTiming::initialize):
        (WebKit::WebURLLoadTiming::reset):
        (WebKit::WebURLLoadTiming::assign):
        (WebKit::WebURLLoadTiming::setDomainLookupTimes):
        (WebKit::WebURLLoadTiming::setConnectStartTime):
        (WebKit::WebURLLoadTiming::setRequestTimes):
        (WebKit::WebURLLoadTiming::setHeadersAvailableTime):
        (WebKit::WebURLLoadTiming::WebURLLoadTiming):
        (WebKit::WebURLLoadTiming::operator=):
        (WebKit::WebURLLoadTiming::operator PassRefPtr<ResourceLoadTiming>):
        * src/WebURLRequest.cpp:
        (WebKit::WebURLRequest::reportLoadTiming):
        (WebKit::WebURLRequest::setReportLoadTiming):
        * src/WebURLResponse.cpp:
        (WebKit::WebURLResponse::setConnectionID):
        (WebKit::WebURLResponse::setLoadTiming):

2010-07-08  Jay Civelli  <jcivelli@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Exposing the EditorClient text field related methods
        to the WebViewClient. Also adding some more accessors methods
        to the WebNode and WebInputElement.
        This is needed to move the password autocomplete out of the
        Chromium WebKit API to the Chromium code.
        https://bugs.webkit.org/show_bug.cgi?id=41286

        * public/WebInputElement.h:
        * public/WebNode.h:
        (WebKit::operator!=):
        (WebKit::operator<):
        * public/WebViewClient.h:
        (WebKit::WebViewClient::textFieldDidBeginEditing):
        (WebKit::WebViewClient::textFieldDidEndEditing):
        (WebKit::WebViewClient::textDidChangeInTextField):
        (WebKit::WebViewClient::textFieldHandlingKeyDown):
        (WebKit::WebViewClient::didAcceptAutocompleteSuggestion):
        * src/EditorClientImpl.cpp:
        (WebKit::EditorClientImpl::textFieldDidBeginEditing):
        (WebKit::EditorClientImpl::textFieldDidEndEditing):
        (WebKit::EditorClientImpl::textDidChangeInTextField):
        (WebKit::EditorClientImpl::onAutocompleteSuggestionAccepted):
        (WebKit::EditorClientImpl::doTextFieldCommandFromEvent):
        * src/WebInputElement.cpp:
        (WebKit::WebInputElement::readOnly):
        (WebKit::WebInputElement::setSelectionRange):
        (WebKit::WebInputElement::selectionStart):
        (WebKit::WebInputElement::selectionEnd):
        * src/WebNode.cpp:
        (WebKit::WebNode::lessThan):

2010-07-08  Aaron Boodman  <aa@chromium.org>

        Reviewed by Timothy Hatcher.

        Add the ability for user scripts and user styles to affect just the top frame.

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

        * public/WebView.h:
        (WebKit::WebView::):
        (WebKit::WebView::addUserScript):
        (WebKit::WebView::addUserStyleSheet):
        * src/AssertMatchingEnums.cpp:
        * src/WebViewImpl.cpp:
        (WebKit::WebView::addUserScript):
        (WebKit::WebView::addUserStyleSheet):

2010-07-08  James Robinson  <jamesr@google.com>

        Reviewed by Darin Fisher.

        Allow resizing and getting the texture ID from an offscreen GLES2Context
        https://bugs.webkit.org/show_bug.cgi?id=41828

        When using an offscreen GLES2Context the caller needs to be able to resize the backing store
        managed by the embedder and get access to a texture id to pass to the compositor.  WebGL
        does these actions in an indirect way, it will be refactored to use this path.

        * public/WebGLES2Context.h:
        * src/GLES2Context.cpp:
        (WebCore::GLES2Context::resizeOffscreenContent):
        (WebCore::GLES2Context::getOffscreenContentParentTextureId):

2010-07-08  Vitaly Repeshko  <vitalyr@chromium.org>

        Reviewed by Pavel Feldman.

        [chromium] Fix deletion has begun assert in TestWebPopupMenuImpl.
        https://bugs.webkit.org/show_bug.cgi?id=41899

        * tests/PopupMenuTest.cpp:
        (WebKit::TestWebPopupMenuImpl::create):
        (WebKit::TestWebViewClient::TestWebViewClient):
        (WebKit::TestWebViewClient::createPopupMenu):

2010-07-08  Vitaly Repeshko  <vitalyr@chromium.org>

        Reviewed by Pavel Feldman.

        [chromium] Fix deletion has begun assertion in TestImage destructor.
        https://bugs.webkit.org/show_bug.cgi?id=41883

        * tests/DragImageTest.cpp:
        (WebCore::TestImage::create):
        (WebCore::TEST):

2010-07-08  Vitaly Repeshko  <vitalyr@chromium.org>

        Reviewed by Pavel Feldman.

        Fix adoptRef usage violations (mostly in chromium)
        https://bugs.webkit.org/show_bug.cgi?id=41863

        * src/IDBCallbacksProxy.cpp:
        (WebCore::IDBCallbacksProxy::create):
        * src/WebPopupMenuImpl.cpp:
        (WebKit::WebPopupMenu::create):
        * src/WebViewImpl.cpp:
        (WebKit::WebView::create):

2010-07-07  Alexander Pavlov  <apavlov@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Crash when re-entering message loop

        Allow re-entrancy of the message loop by tracking all suspended pages
        through a PageGroupLoadDeferrer stack.
        https://bugs.webkit.org/show_bug.cgi?id=41697

        * src/WebViewImpl.cpp:
        (WebKit::WebView::willEnterModalLoop):
        (WebKit::WebView::didExitModalLoop):
        * src/js/Tests.js:
        (.TestSuite.prototype.evaluateInConsole_):
        (.TestSuite.prototype.testCompletionOnPause):
        (.TestSuite.prototype.testMessageLoopReentrant.this):

2010-07-08  David Holloway  <dhollowa@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Exposes WebNode::unwrap() and WebNode::constUnwrap() for 
        use by other code in WebKit/chromium/src.

        Specific use of these methods is made in WebFrameImpl.cpp.  This is
        preferred to the cast operator call that was happening prior to this
        change.

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

        * public/WebNode.h:
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::registerPasswordListener):
        (WebKit::WebFrameImpl::notifiyPasswordListenerOfAutocomplete):
        (WebKit::WebFrameImpl::getPasswordListener):
        * src/WebFrameImpl.h:

2010-07-07  Pavel Podivilov  <podivilov@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: convert script offset to webkit format
        https://bugs.webkit.org/show_bug.cgi?id=41755

        * src/js/DebuggerScript.js:
        ():

2010-07-07  Kent Tamura  <tkent@chromium.org>

        Reviewed by Adam Barth.

        [DRT/Chromium] DumpRenderTree should depend on ImageDiff
        https://bugs.webkit.org/show_bug.cgi?id=41749

        We usually use DumpRenderTree with ImageDiff.  So ImageDiff should
        be built with DumpRenderTree. Without this change, ImageDiff is not
        built in a case of Chromium tree build.
        test_shell in Chromium tree also depends on image_diff.

        * WebKit.gyp:

2010-07-07  John Abd-El-Malek  <jam@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Add a few more methods to WebPlugin so that Pepper v2 plugins can support copy/zoom/find
        https://bugs.webkit.org/show_bug.cgi?id=41649

        * public/WebPlugin.h:
        (WebKit::WebPlugin::hasSelection):
        (WebKit::WebPlugin::selectionAsText):
        (WebKit::WebPlugin::selectionAsMarkup):
        (WebKit::WebPlugin::setZoomFactor):
        (WebKit::WebPlugin::supportsFind):
        (WebKit::WebPlugin::startFind):
        (WebKit::WebPlugin::selectFindResult):
        (WebKit::WebPlugin::stopFind):
        * src/ContextMenuClientImpl.cpp:
        (WebKit::ContextMenuClientImpl::getCustomMenuFromDefaultItems):
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::pluginContainerFromFrame):
        (WebKit::ChromePluginPrintContext::end):
        (WebKit::ChromePluginPrintContext::computePageRects):
        (WebKit::ChromePluginPrintContext::spoolPage):
        (WebKit::WebFrameImpl::executeCommand):
        * src/WebFrameImpl.h:
        * src/WebPluginContainerImpl.cpp:
        (WebKit::WebPluginContainerImpl::copy):
        (WebKit::WebPluginContainerImpl::handleKeyboardEvent):
        * src/WebPluginContainerImpl.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::setZoomLevel):

2010-07-07  James Hawkins  <jhawkins@chromium.org>

        Reviewed by Dimitri Glazkov.

        [Chromium] Add setSuggestedValue to WebInputElement
        https://bugs.webkit.org/show_bug.cgi?id=41785

        * public/WebInputElement.h:
        * src/WebInputElement.cpp:
        (WebKit::WebInputElement::setSuggestedValue):
        (WebKit::WebInputElement::suggestedValue):

2010-07-07  James Robinson  <jamesr@chromium.org> and Vincent Scheib <schieb@chromium.org>

        Reviewed by Dimitri Glazkov.

        WebCore::GLES2Context should allow creating onscreen and offscreen contexts
        https://bugs.webkit.org/show_bug.cgi?id=41492

        You should be able to create a GLES2Context for rendering both on screen
        and off screen (to a texture).  Currently WebGL does the latter by side
        stepping the WebCore::GLES2Context API completely.  Longer term it should
        move over to using this.

        * src/GLES2Context.cpp:
        (WebCore::GLES2ContextInternal::initializeOnscreen):
        (WebCore::GLES2ContextInternal::initializeOffscreen):
        (WebCore::GLES2Context::createOnscreen):
        (WebCore::GLES2Context::createOffscreen):

2010-07-07  Sam Weinig  <sam@webkit.org>

        Reviewed by Anders Carlsson.

        Patch for https://bugs.webkit.org/show_bug.cgi?id=41772
        Add basic piping for BackForwardControllerClient.

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

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

        Unreviewed, rolling out r62645.
        http://trac.webkit.org/changeset/62645
        https://bugs.webkit.org/show_bug.cgi?id=41757

        "Broken inspector tests on several platforms" (Requested by
        eseidel on #webkit).

        * src/js/DebuggerScript.js:
        ():

2010-07-07  Pavel Podivilov  <podivilov@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: if breakpoints were deactivated, add new breakpoints as disabled.
        https://bugs.webkit.org/show_bug.cgi?id=41461

        * src/js/DebuggerScript.js:
        ():

2010-07-06  Darin Adler  <darin@apple.com>

        Try to fix build.

        Why do the Chromium bots stop after the first error they encounter?

        * src/WebWorkerImpl.cpp:
        (WebKit::WebWorkerImpl::postMessageToWorkerContextTask): Removed
        unneeded release called on a PassOwnPtr to pass it as an argument of
        type PassOwnPtr.

2010-07-06  Darin Adler  <darin@apple.com>

        Try to fix build.

        * src/WebWorkerBase.cpp:
        (WebKit::WebWorkerBase::dispatchTaskToMainThread): Use leakPtr instead
        of release.
        * src/WebWorkerClientImpl.cpp:
        (WebKit::WebWorkerClientImpl::postMessageToWorkerObjectTask): Removed
        unneeded release called on a PassOwnPtr to pass it as an argument of
        type PassOwnPtr.

2010-07-06  Darin Adler  <darin@apple.com>

        Try to fix build.

        * src/WebSharedWorkerImpl.cpp:
        (WebKit::WebSharedWorkerImpl::connectTask): Removed unneeded release
        called on a PassOwnPtr to pass it as an argument of type PassOwnPtr.

2010-07-06  Darin Adler  <darin@apple.com>

        Try to fix build.

        * src/WebDataSourceImpl.cpp:
        (WebKit::WebDataSourceImpl::setNextPluginLoadObserver): Call leakPtr
        here instead of release. Comment makes it really unclear why it's OK!

2010-07-06  Darin Adler  <darin@apple.com>

        Try to fix build.

        * src/SharedWorkerRepository.cpp:
        (WebCore::SharedWorkerRepository::connect): Removed unneeded release
        called on a PassOwnPtr to pass it as an argument of type PassOwnPtr.

2010-07-05  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        [v8] Web Inspector: remove v8-specific code dealing with getOwnPropertyNames from InjectedScript.js
        https://bugs.webkit.org/show_bug.cgi?id=41595

        * src/js/DebuggerScript.js:

2010-07-03  Erik Arvidsson  <arv@chromium.org>

        Reviewed by Ojan Vafai.

        Fix issue where a contextmenu event was reporting the wrong target
        if the context menu was shown due to pressing the context menu key
        (or Shift+F10).

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

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

2010-07-02  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        [v8] Web Inspector: inspected page crashes on attempt to change iframe's src attribute
        https://bugs.webkit.org/show_bug.cgi?id=41511

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

2010-07-01  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r62349.
        http://trac.webkit.org/changeset/62349
        https://bugs.webkit.org/show_bug.cgi?id=41499

        It broke the chromium Linux build. (Requested by dave_levin on
        #webkit).

        * public/WebNode.h:
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::registerPasswordListener):
        (WebKit::WebFrameImpl::notifiyPasswordListenerOfAutocomplete):

2010-07-01  David Holloway  <dhollowa@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Exposes WebNode::unwrap() and WebNode::constUnwrap() for 
        use by other code in WebKit/chromium/src.

        Specific use of these methods is made in WebFrameImpl.cpp.  This is
        preferred to the cast operator call that was happening prior to this
        change.

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

        * public/WebNode.h:
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::registerPasswordListener):
        (WebKit::WebFrameImpl::notifiyPasswordListenerOfAutocomplete):

2010-07-01  Kenneth Russell  <kbr@google.com>

        Reviewed by Dimitri Glazkov.

        Stop linking against opengl32.lib in Windows Chromium port
        https://bugs.webkit.org/show_bug.cgi?id=41424

        * WebKit.gyp:
        * src/WebGraphicsContext3DDefaultImpl.cpp:
        (WebKit::WebGraphicsContext3DDefaultImpl::~WebGraphicsContext3DDefaultImpl):
        (WebKit::WebGraphicsContext3DDefaultImpl::initialize):
        (WebKit::WebGraphicsContext3DDefaultImpl::makeContextCurrent):
        * src/WebGraphicsContext3DDefaultImpl.h:

2010-07-01  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r62246.
        http://trac.webkit.org/changeset/62246
        https://bugs.webkit.org/show_bug.cgi?id=41470

        "Worker tests are broken in Chromium" (Requested by yurys on
        #webkit).

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

2010-07-01  David Holloway  <dhollowa@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Consolidates AutoFill and Autocomplete popup menus into a single popup menu.

        This change combines SuggestionsPopupMenuClient, AutoFillPopupMenuClient, and 
        AutocompletePopupMenuClient classes into a single consolidated AutoFillPopupMenuClient class.
        Prior to this change the contents of the AutoFill popup menu only included AutoFill
        suggestions and similarly the Autocomplete popup menu only included Autocomplete
        suggestions.  With this consolidation, both AutoFill and Autocomplete suggestions can
        now be displayed in a single menu.

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

        * WebKit.gyp:
        * public/WebFrame.h:
        * public/WebView.h:
        * src/AutoFillPopupMenuClient.cpp:
        (WebKit::AutoFillPopupMenuClient::AutoFillPopupMenuClient):
        (WebKit::AutoFillPopupMenuClient::~AutoFillPopupMenuClient):
        (WebKit::AutoFillPopupMenuClient::valueChanged):
        (WebKit::AutoFillPopupMenuClient::selectionCleared):
        (WebKit::AutoFillPopupMenuClient::itemText):
        (WebKit::AutoFillPopupMenuClient::itemStyle):
        (WebKit::AutoFillPopupMenuClient::menuStyle):
        (WebKit::AutoFillPopupMenuClient::clientPaddingLeft):
        (WebKit::AutoFillPopupMenuClient::clientPaddingRight):
        (WebKit::AutoFillPopupMenuClient::popupDidHide):
        (WebKit::AutoFillPopupMenuClient::setTextFromItem):
        (WebKit::AutoFillPopupMenuClient::fontSelector):
        (WebKit::AutoFillPopupMenuClient::hostWindow):
        (WebKit::AutoFillPopupMenuClient::createScrollbar):
        (WebKit::AutoFillPopupMenuClient::initialize):
        (WebKit::AutoFillPopupMenuClient::getWebView):
        (WebKit::AutoFillPopupMenuClient::textFieldStyle):
        * src/AutoFillPopupMenuClient.h:
        (WebKit::AutoFillPopupMenuClient::itemToolTip):
        (WebKit::AutoFillPopupMenuClient::itemAccessibilityText):
        (WebKit::AutoFillPopupMenuClient::itemIsEnabled):
        (WebKit::AutoFillPopupMenuClient::clientInsetLeft):
        (WebKit::AutoFillPopupMenuClient::clientInsetRight):
        (WebKit::AutoFillPopupMenuClient::listSize):
        (WebKit::AutoFillPopupMenuClient::selectedIndex):
        (WebKit::AutoFillPopupMenuClient::itemIsLabel):
        (WebKit::AutoFillPopupMenuClient::itemIsSelected):
        (WebKit::AutoFillPopupMenuClient::shouldPopOver):
        (WebKit::AutoFillPopupMenuClient::valueShouldChangeOnHotTrack):
        (WebKit::AutoFillPopupMenuClient::setAutocompleteMode):
        (WebKit::AutoFillPopupMenuClient::getTextField):
        (WebKit::AutoFillPopupMenuClient::getSelectedIndex):
        (WebKit::AutoFillPopupMenuClient::setSelectedIndex):
        * src/AutocompletePopupMenuClient.cpp: Removed.
        * src/AutocompletePopupMenuClient.h: Removed.
        * src/EditorClientImpl.cpp:
        (WebKit::EditorClientImpl::textFieldDidEndEditing):
        (WebKit::EditorClientImpl::doAutofill):
        (WebKit::EditorClientImpl::onAutocompleteSuggestionAccepted):
        * src/SuggestionsPopupMenuClient.cpp: Removed.
        * src/SuggestionsPopupMenuClient.h: Removed.
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::currentHistoryItem):
        (WebKit::WebFrameImpl::notifiyPasswordListenerOfAutocomplete):
        * src/WebFrameImpl.h:
        * src/WebViewImpl.cpp:
        (WebKit::):
        (WebKit::WebViewImpl::WebViewImpl):
        (WebKit::WebViewImpl::mouseDown):
        (WebKit::WebViewImpl::mouseUp):
        (WebKit::WebViewImpl::selectPopupHandleKeyEvent):
        (WebKit::WebViewImpl::autocompleteHandleKeyEvent):
        (WebKit::WebViewImpl::hideAutoFillPopup):
        (WebKit::WebViewImpl::setFocus):
        (WebKit::WebViewImpl::applyAutoFillSuggestions):
        (WebKit::WebViewImpl::applyAutocompleteSuggestions):
        (WebKit::WebViewImpl::hidePopups):
        (WebKit::WebViewImpl::refreshAutoFillPopup):
        * src/WebViewImpl.h:
        (WebKit::WebViewImpl::autoFillPopupDidHide):

2010-07-01  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Adam Barth.

        [v8] Web Inspector: inspected page crashes on attempt to change iframe's src attribute
        https://bugs.webkit.org/show_bug.cgi?id=41350

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

2010-07-01  Aaron Boodman  <aa@chromium.org>

        Reviewed by Darin Fisher.

        Make the user script API static. This makes it more convenient to use
        if you don't have a WebView instance yet.

        Added static versions of the three methods and re-route current ones
        temporarily through the static versions. Will remove the non-static
        versions once Chromium has been updated.

        Also, expose the URLPattern configuration for user stylesheets, since
        they were not before.

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

        * public/WebView.h:
        (WebKit::WebView::addUserScript):
        (WebKit::WebView::addUserStyleSheet):
        * src/WebViewImpl.cpp:
        (WebKit::WebView::addUserScript):
        (WebKit::WebView::addUserStyleSheet):
        (WebKit::WebView::removeAllUserContent):

2010-06-30  Kenneth Russell  <kbr@google.com>

        Reviewed by Dimitri Glazkov.

        Roll forward Chromium DEPS to r51287
        https://bugs.webkit.org/show_bug.cgi?id=41430

        * DEPS:

2010-06-25  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Yury Semikhatsky.

        Chrome DevTools: Finalize migration to new WebView constructor
        (devtools agent is now created within WebViewImpl only).

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

        * public/WebDevToolsAgent.h:
        * public/WebView.h:
        * src/WebDevToolsAgentImpl.cpp:
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::WebViewImpl):
        * src/WebViewImpl.h:
        * src/WebWorkerBase.cpp:
        (WebKit::WebWorkerBase::initializeLoader):
        * tests/PopupMenuTest.cpp:
        (WebKit::SelectPopupMenuTest::SetUp):

2010-06-29  Zhenyao Mo  <zmo@google.com>

        Reviewed by Dimitri Glazkov.

        Implement getAttachedShaders
        https://bugs.webkit.org/show_bug.cgi?id=31172

        * public/WebGraphicsContext3D.h: Declaration of getAttachedShaders().
        * src/GraphicsContext3D.cpp: Implementation of getAttachedShaders().
        * src/WebGraphicsContext3DDefaultImpl.cpp: Ditto.
        * src/WebGraphicsContext3DDefaultImpl.h: Declaration of getAttachedShaders().

2010-06-29  Dumitru Daniliuc  <dumi@chromium.org>

        Reviewed by Darin Fisher.

        Simplify the WebDatabase interface.
        https://bugs.webkit.org/show_bug.cgi?id=40607

        Do not ref()/deref() the private AbstractDatabase member. This
        allows us to use WebDatabase in the destructors of the DB
        classes.

        * public/WebDatabase.h:
        (WebKit::WebDatabase::WebDatabase):
        * src/WebDatabase.cpp:
        (WebKit::WebDatabase::name):
        (WebKit::WebDatabase::displayName):
        (WebKit::WebDatabase::estimatedSize):
        (WebKit::WebDatabase::securityOrigin):
        (WebKit::WebDatabase::WebDatabase):

2010-06-29  Zhe Su  <suzhe@chromium.org>

        Reviewed by Darin Fisher.

        A crash caused by the patch of bug 40608.
        https://bugs.webkit.org/show_bug.cgi?id=41334

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

2010-06-29  Victor Wang  <victorw@chromium.org>

        Reviewed by Darin Fisher.

        [chromium]: Update webkit for chromium multi dll build.

        1. Export more webkit APIs for chromium multi dll build.
        2. Update DumpRenderTree sources so it can build with webkit.dll
        3. Temp disable webkit unit tests for chromium multi dll build.

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

        * WebKit.gyp:
        * public/WebAccessibilityCache.h:
        * public/WebAccessibilityObject.h:
        * public/WebEventListener.h:
        * public/WebGeolocationServiceMock.h:
        * public/WebGraphicsContext3D.h:
        * public/WebIDBDatabaseError.h:
        (WebKit::WebIDBDatabaseError::WebIDBDatabaseError):
        (WebKit::WebIDBDatabaseError::operator=):
        * public/WebNotification.h:
        * public/WebPasswordFormData.h:
        * public/WebSearchableFormData.h:
        * public/WebStorageEventDispatcher.h:
        * public/WebString.h:
        (WebKit::WebString::WebString):
        (WebKit::WebString::operator=):

2010-06-29  Vangelis Kokkevis  <vangelis@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Hooking up GraphicsContext3D to the gpu compositor.
        GraphicsContext3DInternal is now initialized with a pointer to the HostWindow
        that corresponds to the WebView containing the context. The initializer
        forces a WebGLES2Context to be created for the WebView (if one doesn't already
        exist) and uses the view's GL context as a parent to the GL context created
        for WebGL. This allows the compositor to read the texture associated with 
        WebGL's frame buffer. We also plumb though GraphicsContext3D's prepareTexture
        and platformLayer methods which are required by the compositor code.
        https://bugs.webkit.org/show_bug.cgi?id=41243

        * public/WebGraphicsContext3D.h:
        * public/WebView.h:
            Made gles2Context() a virtual method on WebView instead of WebViewImpl
            to allow access to it from GraphicsContext3DInternal::initialize().
        * src/GraphicsContext3D.cpp:
        (WebCore::GraphicsContext3DInternal::initialize):
        (WebCore::GraphicsContext3DInternal::platformGraphicsContext3D):
        (WebCore::GraphicsContext3DInternal::platformTexture):
        (WebCore::GraphicsContext3DInternal::prepareTexture):
        (WebCore::GraphicsContext3DInternal::platformLayer):
        (WebCore::GraphicsContext3D::create):
        (WebCore::GraphicsContext3D::prepareTexture):
        (WebCore::GraphicsContext3D::platformLayer):
        * src/WebGraphicsContext3DDefaultImpl.cpp:
        (WebKit::WebGraphicsContext3DDefaultImpl::initialize):
        (WebKit::WebGraphicsContext3DDefaultImpl::getPlatformTextureId):
        (WebKit::WebGraphicsContext3DDefaultImpl::prepareTexture):
        * src/WebGraphicsContext3DDefaultImpl.h:
        * src/WebViewImpl.h:

2010-06-29  Pavel Podivilov  <podivilov@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: return line number where breakpoint was actually set by v8 from setBreakpoint function.
        https://bugs.webkit.org/show_bug.cgi?id=40781

        * src/js/DebuggerScript.js:
        ():

2010-06-23  John Gregg  <johnnyg@google.com>

        Reviewed by Kent Tamura.

        add ENABLE_DIRECTORY_UPLOAD build support
        https://bugs.webkit.org/show_bug.cgi?id=41100

        * features.gypi:

2010-06-28  Zhe Su  <suzhe@chromium.org>

        Reviewed by Jian Li.

        [chromium]Remove deprecated code related to input method.
        https://bugs.webkit.org/show_bug.cgi?id=41244

        Also update TestWebWidget in tests/PopupMenuTest.cpp to add missing implementations.

        * WebKit.gyp:
        * public/WebCompositionCommand.h: Removed.
        * public/WebViewClient.h:
        * public/WebWidget.h:
        * src/EditorClientImpl.cpp:
        (WebKit::EditorClientImpl::setInputMethodState):
        * src/WebPopupMenuImpl.cpp:
        * src/WebPopupMenuImpl.h:
        * src/WebViewImpl.cpp:
        * src/WebViewImpl.h:
        * tests/PopupMenuTest.cpp:
        (WebKit::TestWebWidget::setComposition):
        (WebKit::TestWebWidget::confirmComposition):
        (WebKit::TestWebWidget::textInputType):
        (WebKit::TestWebWidget::caretOrSelectionBounds):

2010-06-27  John Abd-El-Malek  <jam@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Get the selected text from plugins for right click menu
        https://bugs.webkit.org/show_bug.cgi?id=41242

        * public/WebContextMenuData.h:
        (WebKit::WebContextMenuData::):
        * public/WebPlugin.h:
        (WebKit::WebPlugin::selectedText):
        * src/ContextMenuClientImpl.cpp:
        (WebKit::ContextMenuClientImpl::getCustomMenuFromDefaultItems):
        * src/WebPluginContainerImpl.cpp:
        (WebKit::WebPluginContainerImpl::selectedText):
        * src/WebPluginContainerImpl.h:

2010-06-28  Yury Semikhatsky  <yurys@chromium.org>

        Unreviewed. Fix Chromium debugger tests.

        * src/js/Tests.js:
        (.TestSuite.prototype.testDebugIntrinsicProperties):

2010-06-25  Yuzo Fujishima  <yuzo@google.com>

        Reviewed by Shinichiro Hamaji.

        Improve default value handling for page format properties.
        https://bugs.webkit.org/show_bug.cgi?id=41150

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

2010-06-26  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r61943.
        http://trac.webkit.org/changeset/61943
        https://bugs.webkit.org/show_bug.cgi?id=41251

        Totally breaks webkit_unit_tests on Chromium linux and mac
        (Requested by mnaganov on #webkit).

        * WebKit.gyp:
        * src/WebFrameImpl.cpp:
        (WebKit::frameContentAsPlainText):
        * tests/RunAllTests.cpp:
        (main):
        * tests/WebFrameTest.cpp: Removed.
        * tests/data/iframes_test.html: Removed.
        * tests/data/invisible_iframe.html: Removed.
        * tests/data/visible_iframe.html: Removed.
        * tests/data/zero_sized_iframe.html: Removed.

2010-06-26  Tony Gentilcore  <tonyg@chromium.org>

        Reviewed by Dimitri Glazkov.

        Disable Web Timing support by default for chromium port.
        https://bugs.webkit.org/show_bug.cgi?id=38924

        * features.gypi:

2010-06-25  Jay Civelli  <jcivelli@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Made WebFrame not report the text from hidden frames.
        (some pages contain hidden frames with garbage text that
        should not be indexed or used to detect the page's language).
        https://bugs.webkit.org/show_bug.cgi?id=39456

        * DEPS:
        * WebKit.gyp:
        * src/WebFrameImpl.cpp:
        (WebKit::frameContentAsPlainText):
        * tests/RunAllTests.cpp:
        (main):
        * tests/WebFrameTest.cpp: Added.
        * tests/data: Added.
        * tests/data/iframes_test.html: Added.
        * tests/data/invisible_iframe.html: Added.
        * tests/data/visible_iframe.html: Added.
        * tests/data/zero_sized_iframe.html: Added.

2010-06-25  Bernhard Bauer  <bauerb@chromium.org>

        Reviewed by Darin Fisher.

        Add plugin accessors to WebPluginContainer.
        https://bugs.webkit.org/show_bug.cgi?id=41145

        * public/WebPluginContainer.h:
        * src/WebPluginContainerImpl.h:
        (WebKit::WebPluginContainerImpl::setPlugin):

2010-06-25  Sterling Swigart  <sswigart@google.com>

        Reviewed by David Levin.

        Resetting ENABLE_IMAGE_RESIZER to 0. Image.webkitGetImage needs to be developed under
        a 0 value, at least until both the JSC and V8 bindings are in place.
        https://bugs.webkit.org/show_bug.cgi?id=41116

        * features.gypi: ENABLE_IMAGE_RESIZER=0

2010-06-25  Victor Wang  <victorw@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Update chromium webkit gyp so it has
        option to be built as DLL.

        Chromium webkit is built as webkit.dll on windows
        if it is inside chromium build and variable component
        is set to shared_library.

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

        * WebKit.gyp:

2010-06-25  John Abd-El-Malek  <jam@chromium.org>

        Reviewed by David Levin.

        [chromium] Send unhandled events to Node's default handler
        https://bugs.webkit.org/show_bug.cgi?id=41223

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

2010-06-25  Daniel Cheng  <dcheng@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Add new stubs for querying platform drag-and-drop and copy-and-paste data.

        This change adds new stubs for querying for data in a clipboard or drag operation. This is
        so adding support for more data types in clipboard/drag operations doesn't become
        increasingly expensive, since we currently copy all the drag data we need every time a new
        web drop target is entered. It also adds a new mechanism to write back to the system
        clipboard that isn't tied to one data type.

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

        * public/WebClipboard.h:
        (WebKit::WebClipboard::):
        (WebKit::WebClipboard::isFormatAvailable):
        (WebKit::WebClipboard::readPlainText):
        (WebKit::WebClipboard::readHTML):
        (WebKit::WebClipboard::writePlainText):
        (WebKit::WebClipboard::writeHTML):
        (WebKit::WebClipboard::writeURL):
        (WebKit::WebClipboard::writeImage):
        (WebKit::WebClipboard::writeData):
        (WebKit::WebClipboard::readAvailableTypes):
        (WebKit::WebClipboard::readData):
        (WebKit::WebClipboard::readFilenames):
        * public/WebKitClient.h:
        * src/AssertMatchingEnums.cpp:
        * src/ChromiumBridge.cpp:
        (WebCore::ChromiumBridge::clipboardWriteData):
        (WebCore::ChromiumBridge::clipboardReadAvailableTypes):
        (WebCore::ChromiumBridge::clipboardReadData):
        (WebCore::ChromiumBridge::clipboardReadFilenames):

2010-06-25  Lei Zheng  <lzheng@chromium.org>

        Reviewed by Dimitri Glazkov.

        [Chromium] Add a flag to the ResourceResponse for tracking if a request was fetched
        when Alternate-Protocol is available.

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

        * public/WebURLResponse.h:
        * src/WebURLResponse.cpp:
        (WebKit::WebURLResponse::wasAlternateProtocolAvailable):
        (WebKit::WebURLResponse::setWasAlternateProtocolAvailable):

2010-06-25  Michael Nordman  <michaeln@google.com>

        Reviewed by Dumitru Daniliuc.

        Additional API to pass additional info needed for AppCache progress events.
        https://bugs.webkit.org/show_bug.cgi?id=37602

        Also, delete an obsolete method from the worker API.

        * public/WebApplicationCacheHostClient.h: define a new method
        * public/WebSharedWorker.h: remove an obsolte method
        * src/ApplicationCacheHostInternal.h: implement the new method
        (WebCore::ApplicationCacheHostInternal::notifyProgressEventListener):

2010-06-25  John Gregg  <johnnyg@google.com>

        Reviewed by Darin Fisher.

        Notification should expose ltr/rtl as TextDirection, not String
        https://bugs.webkit.org/show_bug.cgi?id=40871

        * public/WebNotification.h:
        * src/WebNotification.cpp:
        (WebKit::WebNotification::direction):

2010-06-24  Eric Seidel  <eric@webkit.org>

        Reviewed by Adam Barth.

        Clean up and document DocumentWriter::replaceDocument code path
        https://bugs.webkit.org/show_bug.cgi?id=41182

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::loadJavaScriptURL):
         - Make Chromium use DocumentWriter like it should.

2010-06-24  Vangelis Kokkevis  <vangelis@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] A WebView can now own a GLES2Context which gets created on
        demand. This context will typically be created for the gpu compositor
        and used as a parent context for any elements on the page that use the
        gpu for rendering (e.g. WebGL) and need to pass their backbuffer directly
        to the compositor.
        https://bugs.webkit.org/show_bug.cgi?id=41010

        * public/WebGLES2Context.h:
        * src/GLES2Context.cpp:
        (WebCore::GLES2ContextInternal::getWebGLES2Context):
        (WebCore::GLES2ContextInternal::initialize):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::WebViewImpl):
        (WebKit::WebViewImpl::gles2Context):
        * src/WebViewImpl.h:

2010-06-24  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Yury Semikhatsky.
 
        Web Inspector: Inspector cleanup + better DevTools alignment with Inspector.

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

        - Merged InspectorClient implementation into WebDevToolsAgent
        - Changed the way WebDevToolsAgent is initialized (will break chromium bot, needs coordinated landing)
        - Removed a lot of legacy code from WebDevToolsAgentImpl
        - Removed a lot of overrides from DevTools.js
        - Simplified devtools stubs
        - Got rid of all logic from within InjectDispatch.js

        * public/WebView.h:
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::dispatchDidCommitLoad):
        * src/InspectorClientImpl.cpp:
        (WebKit::InspectorClientImpl::inspectorDestroyed):
        (WebKit::InspectorClientImpl::openInspectorFrontend):
        (WebKit::InspectorClientImpl::highlight):
        (WebKit::InspectorClientImpl::hideHighlight):
        (WebKit::InspectorClientImpl::populateSetting):
        (WebKit::InspectorClientImpl::storeSetting):
        (WebKit::InspectorClientImpl::sendMessageToFrontend):
        (WebKit::InspectorClientImpl::resourceTrackingWasEnabled):
        (WebKit::InspectorClientImpl::resourceTrackingWasDisabled):
        (WebKit::InspectorClientImpl::timelineProfilerWasStarted):
        (WebKit::InspectorClientImpl::timelineProfilerWasStopped):
        (WebKit::InspectorClientImpl::devToolsAgent):
        * src/InspectorClientImpl.h:
        * src/InspectorFrontendClientImpl.cpp:
        (WebKit::InspectorFrontendClientImpl::inspectedURLChanged):
        * src/ToolsAgent.h:
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::):
        (WebKit::WebDevToolsAgentImpl::initDevToolsAgentHost):
        (WebKit::WebDevToolsAgentImpl::setApuAgentEnabled):
        (WebKit::WebDevToolsAgentImpl::jsDispatchOnClient):
        (WebKit::WebDevToolsAgentImpl::inspectorDestroyed):
        (WebKit::WebDevToolsAgentImpl::openInspectorFrontend):
        (WebKit::WebDevToolsAgentImpl::highlight):
        (WebKit::WebDevToolsAgentImpl::hideHighlight):
        (WebKit::WebDevToolsAgentImpl::populateSetting):
        (WebKit::WebDevToolsAgentImpl::storeSetting):
        (WebKit::WebDevToolsAgentImpl::sendMessageToFrontend):
        (WebKit::WebDevToolsAgentImpl::resourceTrackingWasEnabled):
        (WebKit::WebDevToolsAgentImpl::resourceTrackingWasDisabled):
        (WebKit::WebDevToolsAgentImpl::timelineProfilerWasStarted):
        (WebKit::WebDevToolsAgentImpl::timelineProfilerWasStopped):
        * src/WebDevToolsAgentImpl.h:
        * src/WebDevToolsAgentPrivate.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebView::create):
        (WebKit::WebViewImpl::WebViewImpl):
        * src/WebViewImpl.h:
        * src/js/DevTools.js:
        (devtools.ToolsAgent):
        ():
        (devtools):
        * src/js/DevToolsHostStub.js:
        (.window.setDebuggerScriptSource):
        (.window.dispatchOnInjectedScript):
        * src/js/InjectDispatch.js:
        (dispatch):
        * src/js/InspectorControllerImpl.js:

2010-06-24  Pavel Feldman  <pfeldman@chromium.org>

        Not reviewed: revert 61766.

        * WebKit.gyp:
        * public/WebView.h:
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::dispatchDidCommitLoad):
        * src/InspectorClientImpl.cpp: Added.
        (WebKit::InspectorClientImpl::InspectorClientImpl):
        (WebKit::InspectorClientImpl::~InspectorClientImpl):
        (WebKit::InspectorClientImpl::inspectorDestroyed):
        (WebKit::InspectorClientImpl::openInspectorFrontend):
        (WebKit::invalidateNodeBoundingRect):
        (WebKit::InspectorClientImpl::highlight):
        (WebKit::InspectorClientImpl::hideHighlight):
        (WebKit::InspectorClientImpl::populateSetting):
        (WebKit::InspectorClientImpl::storeSetting):
        (WebKit::InspectorClientImpl::sendMessageToFrontend):
        * src/InspectorClientImpl.h: Added.
        * src/InspectorFrontendClientImpl.cpp:
        (WebKit::InspectorFrontendClientImpl::inspectedURLChanged):
        * src/ToolsAgent.h:
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::):
        (WebKit::WebDevToolsAgentImpl::didCommitProvisionalLoad):
        (WebKit::WebDevToolsAgentImpl::initDevToolsAgentHost):
        (WebKit::WebDevToolsAgentImpl::setApuAgentEnabled):
        (WebKit::WebDevToolsAgentImpl::jsDispatchOnClient):
        (WebKit::WebDevToolsAgentImpl::jsDispatchToApu):
        (WebKit::WebDevToolsAgentImpl::jsEvaluateOnSelf):
        (WebKit::WebDevToolsAgentImpl::jsOnRuntimeFeatureStateChanged):
        * src/WebDevToolsAgentImpl.h:
        * src/WebDevToolsAgentPrivate.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebView::create):
        (WebKit::WebViewImpl::WebViewImpl):
        (WebKit::WebViewImpl::setDevToolsAgent):
        * src/WebViewImpl.h:
        * src/WebWorkerBase.cpp:
        (WebKit::WebWorkerBase::initializeLoader):
        * src/js/DevTools.js:
        (devtools.ToolsAgent):
        (devtools.ToolsAgent.prototype.frameNavigate_):
        ():
        * src/js/DevToolsHostStub.js:
        (.RemoteDebuggerAgentStub):
        (.RemoteDebuggerAgentStub.prototype.getContextId):
        (.RemoteDebuggerAgentStub.prototype.processDebugCommands):
        (.RemoteProfilerAgentStub):
        (.RemoteProfilerAgentStub.prototype.getActiveProfilerModules):
        (.RemoteProfilerAgentStub.prototype.getLogLines):
        (.RemoteToolsAgentStub):
        (.RemoteToolsAgentStub.prototype.dispatchOnInjectedScript):
        (.RemoteToolsAgentStub.prototype.dispatchOnInspectorController):
        (.ProfilerStubHelper):
        (.ProfilerStubHelper.GetInstance):
        (.ProfilerStubHelper.prototype.StopProfiling):
        (.ProfilerStubHelper.prototype.StartProfiling):
        (.ProfilerStubHelper.prototype.getActiveProfilerModules):
        (.ProfilerStubHelper.prototype.getLogLines):
        (.RemoteDebuggerCommandExecutorStub):
        (.RemoteDebuggerCommandExecutorStub.prototype.DebuggerCommand):
        (.RemoteDebuggerCommandExecutorStub.prototype.DebuggerPauseScript):
        (.RemoteDebuggerCommandExecutorStub.prototype.sendResponse_):
        (.DevToolsHostStub):
        (.DevToolsHostStub.prototype.reset):
        (.DevToolsHostStub.prototype.setting):
        (.DevToolsHostStub.prototype.setSetting):
        * src/js/InjectDispatch.js:
        (ApuAgentDispatcher.dispatchToApu):
        (dispatch):
        * src/js/InspectorControllerImpl.js:
        (devtools.InspectorBackendImpl.prototype.debuggerEnabled):
        (devtools.InspectorBackendImpl.prototype.profilerEnabled):

2010-06-23  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: Inspector cleanup + better DevTools alignment with Inspector.
        
        https://bugs.webkit.org/show_bug.cgi?id=41094

        - Merged InspectorClient implementation into WebDevToolsAgent
        - Changed the way WebDevToolsAgent is initialized (will break chromium bot, needs coordinated landing)
        - Removed a lot of legacy code from WebDevToolsAgentImpl
        - Removed a lot of overrides from DevTools.js
        - Simplified devtools stubs
        - Got rid of all logic from within InjectDispatch.js

        * WebKit.gyp:
        * public/WebDevToolsAgent.h:
        * public/WebView.h:
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::dispatchDidCommitLoad):
        * src/InspectorFrontendClientImpl.cpp:
        (WebKit::InspectorFrontendClientImpl::inspectedURLChanged):
        * src/ToolsAgent.h:
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::):
        (WebKit::WebDevToolsAgentImpl::initDevToolsAgentHost):
        (WebKit::WebDevToolsAgentImpl::setApuAgentEnabled):
        (WebKit::WebDevToolsAgentImpl::jsDispatchOnClient):
        (WebKit::WebDevToolsAgentImpl::inspectorDestroyed):
        (WebKit::WebDevToolsAgentImpl::openInspectorFrontend):
        (WebKit::WebDevToolsAgentImpl::highlight):
        (WebKit::WebDevToolsAgentImpl::hideHighlight):
        (WebKit::WebDevToolsAgentImpl::populateSetting):
        (WebKit::WebDevToolsAgentImpl::storeSetting):
        (WebKit::WebDevToolsAgentImpl::sendMessageToFrontend):
        (WebKit::WebDevToolsAgentImpl::resourceTrackingWasEnabled):
        (WebKit::WebDevToolsAgentImpl::resourceTrackingWasDisabled):
        (WebKit::WebDevToolsAgentImpl::timelineProfilerWasStarted):
        (WebKit::WebDevToolsAgentImpl::timelineProfilerWasStopped):
        * src/WebDevToolsAgentImpl.h:
        * src/WebDevToolsAgentPrivate.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebView::create):
        (WebKit::WebViewImpl::WebViewImpl):
        * src/WebViewImpl.h:
        * src/WebWorkerBase.cpp:
        (WebKit::WebWorkerBase::initializeLoader):
        * src/js/DevTools.js:
        (devtools.ToolsAgent):
        ():
        (devtools):
        * src/js/DevToolsHostStub.js:
        (.window.setDebuggerScriptSource):
        (.window.dispatchOnInjectedScript):
        * src/js/InjectDispatch.js:
        (dispatch):
        * src/js/InspectorControllerImpl.js:

2010-06-24  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: implement layout tests for debugger
        https://bugs.webkit.org/show_bug.cgi?id=40774

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

2010-06-23  Tony Chang  <tony@chromium.org>

        Reviewed by Darin Fisher.

        layout test for a crash in chromium multipart request handling
        https://bugs.webkit.org/show_bug.cgi?id=41050

        Also roll DEPS to pick up the crash fix.

        * DEPS:

2010-06-23  Yuzo Fujishima  <yuzo@google.com>

        Reviewed by Shinichiro Hamaji.

        Make page format data methods accessible from Chromium
        https://bugs.webkit.org/show_bug.cgi?id=41056

        * public/WebFrame.h:
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::isPageBoxVisible):
        (WebKit::WebFrameImpl::pageAreaRectInPixels):
        (WebKit::WebFrameImpl::preferredPageSizeInPixels):
        * src/WebFrameImpl.h:

2010-06-22  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        Rename HTMLDocumentParser to LegacyHTMLDocumentParser
        https://bugs.webkit.org/show_bug.cgi?id=41043

        * src/WebEntities.cpp:

2010-06-22  Pavel Feldman  <pfeldman@chromium.org>

        Not reviewed: follow up to r61655 to make Chromium tests happy.

        * src/js/InspectorControllerImpl.js:
        (devtools.InspectorBackendImpl):

2010-06-22  Mikhail Naganov  <mnaganov@chromium.org>

        Reviewed by Pavel Feldman.

        [Chromium] Clean up after removal of static WebDevToolsAgentClient::sendMessageToFrontendOnIOThread.

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

        * public/WebDevToolsAgentClient.h:

2010-06-22  Mikhail Naganov  <mnaganov@chromium.org>

        Reviewed by Pavel Feldman.

        [Chromium] Add a sanity test for heap profiler.

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

        * src/js/Tests.js:
        (.TestSuite.prototype.testHeapProfiler.findDisplayedNode):
        (.TestSuite.prototype.testHeapProfiler.findVisibleView):
        (.TestSuite.prototype.testHeapProfiler):

2010-06-21  MORITA Hajime  <morrita@google.com>

        Reviewed by Darin Fisher.

        [Chromium] Dragging outside the frame immediately causes page to scroll
        http://webkit.org/b/40461

        This is regression that was introduced at http://webkit.org/b/39725.
        
        There are 2 problems:
        1. It starts auto-scrolling immediately. We should have some delay.
        2. The scroll continues even after a mouse cursor goes outside a frame.
           The scroll should be stopped when the curosr has left.
        
        This change introduced DragScrollTimer to handle 1. 
        At the same time, it fixed DragScrollTimer::scrollDistanceFor() to
        handle 2, We now stop scrolling when the cursor gone.
        
        * WebKit.gyp:
        * src/DragScrollTimer.cpp: Added.
        (WebKit::distanceToRect):
        (WebKit::DragScrollTimer::DragScrollTimer):
        (WebKit::DragScrollTimer::~DragScrollTimer):
        (WebKit::DragScrollTimer::stop):
        (WebKit::DragScrollTimer::scroll):
        (WebKit::DragScrollTimer::update):
        (WebKit::DragScrollTimer::triggerScroll):
        (WebKit::DragScrollTimer::scrollDistanceFor):
        * src/DragScrollTimer.h: Added.
        (WebKit::DragScrollTimer::fired):
        (WebKit::DragScrollTimer::shouldScroll):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::WebViewImpl):
        (WebKit::WebViewImpl::dragSourceEndedAt):
        (WebKit::WebViewImpl::dragSourceMovedTo):
        (WebKit::WebViewImpl::dragTargetDrop):
        (WebKit::WebViewImpl::dragTargetDragEnterOrOver):
        * src/WebViewImpl.h:

2010-06-21  Kent Tamura  <tkent@chromium.org>

        Reviewed by Dimitri Glazkov.

        [Chromium] Enable EVENTSOURCE, FILE_WRITER, and IMAGE_RESIZER
        https://bugs.webkit.org/show_bug.cgi?id=40905

        EVENTSOURCE: It is already enabled in Chromium browser. This fixes
        some tests with Chromium DRT.

        FILE_WRITER and IMAGE_RESIZER: Enable experimental features in
        order to test them before enabling them in Chromium browser.

        * features.gypi:

2010-06-21  Satish Sampath  <satish@chromium.org>

        Reviewed by Steve Block.

        Speech Input Patch 0: Added compilation argument to conditionally compile pending patches.
        https://bugs.webkit.org/show_bug.cgi?id=40878

        * features.gypi:

2010-06-21  Mikhail Naganov  <mnaganov@chromium.org>

        Reviewed by Yury Semikhatsky.

        [Chromium] Remove usage of static WebDevToolsAgentClient::sendMessageToFrontendOnIOThread.

        Also, move WebDevToolsMessageTransport to its own header file.

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

        * DEPS:
        * WebKit.gyp:
        * public/WebDevToolsAgent.h:
        * public/WebDevToolsAgentClient.h:
        * public/WebDevToolsMessageTransport.h: Added.
        (WebKit::WebDevToolsMessageTransport::~WebDevToolsMessageTransport):
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::):

2010-06-20  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        [v8] Web Inspector: don't add ScriptDebugServer as v8 listener if browser exposes
        v8 debugging protocol.

        * src/DebuggerAgentManager.cpp:
        (WebKit::DebuggerAgentManager::setExposeV8DebuggerProtocol):

2010-06-19  Jay Civelli  <jcivelli@chromium.org>

        Reviewed by David Levin.

        Adding a < operator to WebURLs so they can be used in std::maps.
        https://bugs.webkit.org/show_bug.cgi?id=40632

        * public/WebCString.h:
        (WebKit::operator<):
        * public/WebURL.h:
        (WebKit::operator<):
        * src/WebCString.cpp:
        (WebKit::WebCString::compare):

2010-06-19  Kent Tamura  <tkent@chromium.org>

        Unreviewed. Build fix for r61488.

        * features.gypi: Define use_accelerated_compositing.

2010-06-19  Thomas Van Lenten  <thomasvl@chromium.org>

        Reviewed by David Levin.

        Warnings from -Wextra in a Chromium Mac build
        1. checks of unsigned >= 0
        2. enumeral and non-enumeral type in conditional expression
        3. copy ctors that don't call the super copy ctor or ctor

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

        * src/AutoFillPopupMenuClient.cpp:
        (WebKit::AutoFillPopupMenuClient::getSuggestion):
        (WebKit::AutoFillPopupMenuClient::removeSuggestionAtIndex):
        (WebKit::AutoFillPopupMenuClient::valueChanged):
        (WebKit::AutoFillPopupMenuClient::selectionChanged):
        * src/AutocompletePopupMenuClient.cpp:
        (WebKit::AutocompletePopupMenuClient::getSuggestion):
        (WebKit::AutocompletePopupMenuClient::removeSuggestionAtIndex):

2010-06-19  Zhe Su  <suzhe@chromium.org>

        Reviewed by Darin Fisher.

        [chromium]Refactor input method related APIs.
        https://bugs.webkit.org/show_bug.cgi?id=40608

        * WebKit.gyp:
        * public/WebCompositionCommand.h:
        * public/WebCompositionUnderline.h: Added.
        (WebKit::WebCompositionUnderline::WebCompositionUnderline):
        * public/WebTextInputType.h: Added.
        (WebKit::):
        * public/WebViewClient.h:
        * public/WebWidget.h:
        * public/WebWidgetClient.h:
        (WebKit::WebWidgetClient::resetInputMethod):
        * src/CompositionUnderlineBuilder.h: Added.
        (WebKit::CompositionUnderlineBuilder::CompositionUnderlineBuilder):
        * src/CompositionUnderlineVectorBuilder.cpp: Added.
        (WebKit::CompositionUnderlineVectorBuilder::CompositionUnderlineVectorBuilder):
        * src/CompositionUnderlineVectorBuilder.h: Added.
        * src/EditorClientImpl.cpp:
        (WebKit::EditorClientImpl::setInputMethodState):
        * src/WebPopupMenuImpl.cpp:
        (WebKit::WebPopupMenuImpl::setComposition):
        (WebKit::WebPopupMenuImpl::confirmComposition):
        (WebKit::WebPopupMenuImpl::textInputType):
        (WebKit::WebPopupMenuImpl::caretOrSelectionBounds):
        * src/WebPopupMenuImpl.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::handleCompositionEvent):
        (WebKit::WebViewImpl::setComposition):
        (WebKit::WebViewImpl::confirmComposition):
        (WebKit::WebViewImpl::textInputType):
        (WebKit::WebViewImpl::caretOrSelectionBounds):
        * src/WebViewImpl.h:

2010-06-19  Victoria Kirst  <vrk@google.com>

        Reviewed by David Levin.

        Modifying the WebMediaPlayer interface to be compatible with
        a change in chrome.
        This is a part 2 of 3 one-sided changes to chrome and WebKit. Chrome
        has been updated, so this commit should NOT break chromium anymore,
        nor should it cause any test failures.
        https://bugs.webkit.org/show_bug.cgi?id=39445

        * public/WebMediaPlayer.h: Changed buffered() to be non-const.

2010-06-19  Zhenyao Mo  <zmo@google.com>

        Reviewed by Dimitri Glazkov.

        fast/canvas/webgl/get-active-test.html failed in Chrome Mac
        https://bugs.webkit.org/show_bug.cgi?id=40496

        * src/WebGraphicsContext3DDefaultImpl.cpp: Call makeContextCurrent().
        (WebKit::WebGraphicsContext3DDefaultImpl::getActiveAttrib):
        (WebKit::WebGraphicsContext3DDefaultImpl::getActiveUniform):
        (WebKit::WebGraphicsContext3DDefaultImpl::readPixels):

2010-06-18  Aaron Boodman  <aa@chromium.org>

        Remove WebKit::WebDocument::isXHTMLDocument.
        https://bugs.webkit.org/show_bug.cgi?id=40815

        * public/WebDocument.h: Remove isXHTMLDocument().
        * src/WebDocument.cpp: Ditto.

2010-06-19  Aaron Boodman  <aa@chromium.org>

        Unreviewed, rolling out r61466.
        http://trac.webkit.org/changeset/61466
        https://bugs.webkit.org/show_bug.cgi?id=40816

        Landed wrong change

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

2010-06-18  Aaron Boodman  <aa@chromium.org>

        WebKit API: Undo static hooks into V8 when WebKit is shut downm
        https://bugs.webkit.org/show_bug.cgi?id=40816

        * src/WebKit.cpp:
        (WebKit::shutdown): Call new WebCore::V8DOMWindowShell::uninitializeV8IfNeeded().

2010-06-18  Drew Wilson  <atwilson@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Plumbing for top-level frame names
        https://bugs.webkit.org/show_bug.cgi?id=40430

        * public/WebFrame.h:
        Removed obsolete clearName() API and added better documentation for
        setName().
        * src/WebFrameImpl.cpp:
        Removed clearName() API.
        * src/WebFrameImpl.h:
        Removed clearName() API.

2010-06-18  Drew Wilson  <atwilson@chromium.org>

        Reviewed by Dumitru Daniliuc.

        Roll chromium DEPS 50089:50171
        https://bugs.webkit.org/show_bug.cgi?id=40842

        * DEPS:
        Update chromium_rev to r50171 to remove downstream reference to WebFrame::clearName().

2010-06-18  Mikhail Naganov  <mnaganov@chromium.org>

        Reviewed by Yury Semikhatsky.

        Implement 'takeHeapSnapshot' in InspectorController.

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

        * src/js/HeapProfilerPanel.js:
        (WebInspector.HeapSnapshotProfileType.prototype.buttonClicked):
        * src/js/InspectorControllerImpl.js:
        (devtools.InspectorBackendImpl):
        * src/js/ProfilerAgent.js:
        (devtools.ProfilerAgent.prototype.startProfiling):

2010-06-18  Anton Muhin  <antonm@chromium.org>

        Reviewed by Dimitri Glazkov.

        [v8] Finish migration to new named property query API
        https://bugs.webkit.org/show_bug.cgi?id=40771
        Remove definition which allowed gradual transition to new API.
        See https://bugs.webkit.org/show_bug.cgi?id=40303 for first phase.
        Requires V8 roll.

        * DEPS:

2010-06-17  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: bring XHR console records back.
        - adds "Enable XHR Monitor" / "Disable XHR Monitor" actions to the console's context menu
        - make the chosen option persist in the settings.

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

        * src/js/InspectorControllerImpl.js:
        (devtools.InspectorBackendImpl):

2010-06-15  Dumitru Daniliuc  <dumi@chromium.org>

        Reviewed by Adam Barth.

        Move isAvailable()/setIsAvailable() from Database/DatabaseSync to AbstractDatabase.
        https://bugs.webkit.org/show_bug.cgi?id=39041

        * src/WebRuntimeFeatures.cpp:
        (WebKit::WebRuntimeFeatures::enableDatabase):
        (WebKit::WebRuntimeFeatures::isDatabaseEnabled):

2010-06-17  Tony Chang  <tony@chromium.org>

        Reviewed by Kent Tamura.

        [chromium] cleanup redundant DEPS value and remove buildbot cleanup code
        https://bugs.webkit.org/show_bug.cgi?id=40615

        * DEPS: tools/data_pack was listed twice for linux (harmless, but unnecessary)

2010-06-17  Jeremy Moskovich  <jeremy@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium API] Implement WebSandboxSupport on OS X and add stubs to allow
        OOP loading of fonts.

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

        * WebKit.gyp: Add mac WebSandboxSupport.h
        * public/mac/WebSandboxSupport.h: Added.
        * src/ChromiumBridge.cpp:
        (WebCore::ChromiumBridge::loadFont):

2010-06-17  Pavel Feldman  <pfeldman@chromium.org>

        Unreviewed: chromium tests fix. Added InspectorBackend delegates for new inspector methods.

        * src/js/InspectorControllerImpl.js:
        (devtools.InspectorBackendImpl):

2010-06-17  Mikhail Naganov  <mnaganov@chromium.org>

        Reviewed by Pavel Feldman.

        [Chromium] Prepare to making WebDevToolsAgentClient::sendMessageToFrontendOnIOThread virtual

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

        * public/WebDevToolsAgent.h:
        * public/WebDevToolsAgentClient.h:
        (WebKit::WebDevToolsMessageTransport::~WebDevToolsMessageTransport):
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::):
        (WebKit::WebDevToolsAgent::dispatchMessageFromFrontendOnIOThread):

2010-06-17  John Gregg  <johnnyg@google.com>

        Reviewed by David Levin.

        Undo the build fix with the correct patch: Chromium NotificationPresenter
        is now informed of the destruction before it actually happens, so this
        use of the Notification object is correct. 
        https://bugs.webkit.org/show_bug.cgi?id=40097

        * src/NotificationPresenterImpl.cpp:
        (WebKit::NotificationPresenterImpl::notificationObjectDestroyed):

2010-06-16  Kent Tamura  <tkent@chromium.org>

        Reviewed by Dimitri Glazkov.

        [DRT/Chromium] Set current working directory for each of tests
        https://bugs.webkit.org/show_bug.cgi?id=40668

        * DEPS: Update Chromium to r49915 to have
          webkit_support::SetCurrentDirectoryForFileURL().

2010-06-16  Drew Wilson  <atwilson@chromium.org>

        Reviewed by Kent Tamura.

        Added plumbing to Chromium WebKit API to allow setting/getting the name
        of top level frames.

        https://bugs.webkit.org/show_bug.cgi?id=40430
        * public/WebFrame.h:
        Added setName() API.
        * public/WebViewClient.h:
        (WebKit::WebViewClient::createView):
        Now takes a "name" parameter.
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::createWindow):
        Passes a name parameter.
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::setName):
        Allows setting the frame name by calling through to the WebCore API.
        * src/WebFrameImpl.h:

2010-06-15  Darin Adler  <darin@apple.com>

        Reviewed by Adam Barth.

        Move functions out of Frame class that were marked "move to Chrome"
        https://bugs.webkit.org/show_bug.cgi?id=39636

        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::dispatchBeforeUnloadEvent): Call shouldClose
        on FrameLoader instead of going through Frame.

2010-06-11  Darin Fisher  <darin@chromium.org>

        Reviewed by Brady Eidson.

        Expose WebHistoryItem::itemSequenceNumber.

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

        * public/WebHistoryItem.h:
        * src/WebHistoryItem.cpp:
        (WebKit::WebHistoryItem::itemSequenceNumber):
        (WebKit::WebHistoryItem::setItemSequenceNumber):

2010-06-15  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        [v8] Web Inspector: make ui tests pass when ScriptDebugServer is used
        https://bugs.webkit.org/show_bug.cgi?id=40623

        * src/js/DebuggerAgent.js:
        (devtools.DebuggerAgent.prototype.formatCallFrame_): return empty function name for anonymous functions.
        * src/js/DebuggerScript.js:
        * src/js/Tests.js:
        (.TestSuite.prototype.testProfilerTab.findVisibleView):
        (.TestSuite.prototype.testProfilerTab):
        (.TestSuite.prototype.testScriptsTabIsPopulatedOnInspectedPageRefresh.waitUntilScriptIsParsed):
        (.TestSuite.prototype.testSetBreakpoint.this):
        (.TestSuite.prototype.testSetBreakpoint):
        (.TestSuite.prototype.testEvalOnCallFrame.waitForBreakpointHit):
        (.TestSuite.prototype._executeCodeWhenScriptsAreParsed.executeFunctionInInspectedPage):
        (.TestSuite.prototype.testExpandScope.examineScopes):
        (.TestSuite.prototype.testExpandScope):
        (.TestSuite.prototype.testDebugIntrinsicProperties):

2010-06-14  Anders Carlsson  <andersca@apple.com>

        Fix Chromium build.

        * src/WebPluginListBuilderImpl.cpp:
        (WebKit::WebPluginListBuilderImpl::addFileExtensionToLastMediaType):

2010-06-14  Dumitru Daniliuc  <dumi@chromium.org>

        Reviewed by Adam Barth.

        Get DatabaseTracker ready for sync DBs.
        https://bugs.webkit.org/show_bug.cgi?id=39041

        * public/WebDatabase.h:
        * src/DatabaseObserver.cpp:
        (WebCore::DatabaseObserver::databaseOpened):
        (WebCore::DatabaseObserver::databaseModified):
        (WebCore::DatabaseObserver::databaseClosed):
        * src/WebDatabase.cpp:
        (WebKit::WebDatabase::closeDatabaseImmediately):
        (WebKit::WebDatabase::WebDatabase):
        (WebKit::WebDatabase::operator=):
        (WebKit::WebDatabase::operator WTF::PassRefPtr<AbstractDatabase>):

2010-06-14  Chris Fleizach  <cfleizach@apple.com>

        Reviewed by Darin Adler.

        AX: need ListItemRole and PresentationalRole
        https://bugs.webkit.org/show_bug.cgi?id=40133

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

2010-06-14  Anders Carlsson  <andersca@apple.com>

        Reviewed by Sam Weinig.

        Remove pluginIndex from MimeClassInfo
        https://bugs.webkit.org/show_bug.cgi?id=40588

        * src/WebPluginListBuilderImpl.cpp:
        (WebKit::WebPluginListBuilderImpl::addMediaTypeToLastPlugin):

2010-06-14  Jeremy Orlow  <jorlow@chromium.org>

        Build fix.

        * src/IDBCallbacksProxy.h:

2010-06-14  Ilya Tikhonovsky  <loislo@chromium.org>

        Reviewed by Pavel Feldman.

        WebInspector: On the way to Remote Debugging we want to transfer dom/timeline/etc
        data from inspected page to WebInspector as JSON string via http. The native
        serialization to JSON string is supported by InspectorValue's classes. This patch
        has the implementation of sendMessageToFrontend function. WebKit version of it still
        uses ScriptFunctionCall and will be switched to another transport a little bit later.
        https://bugs.webkit.org/show_bug.cgi?id=40134

        * src/InspectorClientImpl.cpp:
        (WebKit::InspectorClientImpl::sendMessageToFrontend):
        * src/InspectorClientImpl.h:
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::setInspectorFrontendProxyToInspectorController):

2010-06-13  Tony Chang  <tony@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] checkout chromium third_party directly
        https://bugs.webkit.org/show_bug.cgi?id=40556

        * DEPS:

2010-06-13  Tony Chang  <tony@chromium.org>

        Build fix, not reviewed.

        fix chromium compile after r61094 (id attribute refactor)
        https://bugs.webkit.org/show_bug.cgi?id=40553

        * src/ChromeClientImpl.cpp:
        * src/WebFormControlElement.cpp:
        (WebKit::WebFormControlElement::nameForAutofill):

2010-06-13  Andras Becsi  <abecsi@inf.u-szeged.hu>

        Reviewed by Darin Adler.

        Centralize the gperf code generation commands into make-hash-tools.pl
        to avoid redundancy across multiple build systems.
        Do this in preparation of refactoring the usage of these generated
        sources to fix the debug linking error on Linux with gcc >= 4.4.0.

        webkit.org/b/29244

        * src/WebEntities.cpp:

2010-06-11  Eric Seidel  <eric@webkit.org>

        Reviewed by Adam Barth.

        Rename the rest of the *Tokenizer classes to *DocumentParser
        https://bugs.webkit.org/show_bug.cgi?id=40507

        * src/WebEntities.cpp:
         - Fix a comment to match new class names.

2010-06-12  Evan Stade  <estade@chromium.org>

        Reviewed by Eric Seidel.

        [chromium] Menu key should act on current selection even if it is not editable
        https://bugs.webkit.org/show_bug.cgi?id=40348

        Allow the menu key to act on non-editable selections.

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

2010-06-11  James Hawkins  <jhawkins@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Notify the WebView when the AutoFill popup hides.

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

        * src/AutoFillPopupMenuClient.cpp:
        (WebKit::AutoFillPopupMenuClient::selectionCleared):

2010-06-11  Tony Gentilcore  <tonyg@chromium.org>

        Reviewed by Dimitri Glazkov.

        Roll chromium DEPS 49376:49521
        https://bugs.webkit.org/show_bug.cgi?id=40488

        * DEPS:

2010-06-10  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Steve Block.

        Implement more of IndexedDB's Indexes and ObjectStores
        https://bugs.webkit.org/show_bug.cgi?id=40424

        Add plumbing for both of these classes.

        * public/WebIDBDatabase.h:
        (WebKit::WebIDBDatabase::name):
        (WebKit::WebIDBDatabase::description):
        (WebKit::WebIDBDatabase::version):
        (WebKit::WebIDBDatabase::objectStores):
        (WebKit::WebIDBDatabase::objectStore):
        (WebKit::WebIDBDatabase::removeObjectStore):
        * public/WebIDBObjectStore.h:
        (WebKit::WebIDBObjectStore::indexNames):
        (WebKit::WebIDBObjectStore::createIndex):
        (WebKit::WebIDBObjectStore::index):
        (WebKit::WebIDBObjectStore::removeIndex):
        * src/IDBDatabaseProxy.cpp:
        (WebCore::IDBDatabaseProxy::name):
        (WebCore::IDBDatabaseProxy::description):
        (WebCore::IDBDatabaseProxy::version):
        (WebCore::IDBDatabaseProxy::objectStores):
        (WebCore::IDBDatabaseProxy::objectStore):
        (WebCore::IDBDatabaseProxy::removeObjectStore):
        * src/IDBDatabaseProxy.h:
        * src/IDBObjectStoreProxy.cpp:
        (WebCore::IDBObjectStoreProxy::indexNames):
        (WebCore::IDBObjectStoreProxy::createIndex):
        (WebCore::IDBObjectStoreProxy::index):
        (WebCore::IDBObjectStoreProxy::removeIndex):
        * src/IDBObjectStoreProxy.h:
        * src/WebIDBDatabaseImpl.cpp:
        (WebKit::WebIDBDatabaseImpl::WebIDBDatabaseImpl):
        (WebKit::WebIDBDatabaseImpl::name):
        (WebKit::WebIDBDatabaseImpl::description):
        (WebKit::WebIDBDatabaseImpl::version):
        (WebKit::WebIDBDatabaseImpl::objectStores):
        (WebKit::WebIDBDatabaseImpl::createObjectStore):
        (WebKit::WebIDBDatabaseImpl::objectStore):
        (WebKit::WebIDBDatabaseImpl::removeObjectStore):
        * src/WebIDBDatabaseImpl.h:
        * src/WebIDBObjectStoreImpl.cpp:
        (WebKit::WebIDBObjectStoreImpl::WebIDBObjectStoreImpl):
        (WebKit::WebIDBObjectStoreImpl::name):
        (WebKit::WebIDBObjectStoreImpl::keyPath):
        (WebKit::WebIDBObjectStoreImpl::indexNames):
        (WebKit::WebIDBObjectStoreImpl::createIndex):
        (WebKit::WebIDBObjectStoreImpl::index):
        (WebKit::WebIDBObjectStoreImpl::removeIndex):
        * src/WebIDBObjectStoreImpl.h:

2010-06-11  Alexander Pavlov  <apavlov@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: Enable serialization/deserialization of the frontend state
        https://bugs.webkit.org/show_bug.cgi?id=40228

        * src/js/InspectorControllerImpl.js:
        (devtools.InspectorBackendImpl):

2010-06-10  Søren Gjesse  <sgjesse@chromium.org>

        Reviewed by Pavel Feldman.

        V8: Chromium test expectations not matching improved V8 JavaScript stepping
        https://bugs.webkit.org/show_bug.cgi?id=40419

        Update test expetations to match chaged V8 break locations.

        * src/js/Tests.js:

2010-06-10  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: Port performSearch from InjectedScript to InspectorDOMAgent.

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

        * src/js/InspectorControllerImpl.js:
        (devtools.InspectorBackendImpl):

2010-06-11  Vangelis Kokkevis  <vangelis@chromium.org>

        Reviewed by David Levin.

        [chromium] Adding a build dependency to the gles2 C library to the webkit_unit_tests
        project to allow it to link when WebCore is compiled with the ACCELERATED_COMPOSITING
        flag.
        https://bugs.webkit.org/show_bug.cgi?id=40341

        * WebKit.gyp:

2010-06-10  Kent Tamura  <tkent@chromium.org>

        Reviewed by Dimitri Glazkov.

        [DRT/Chromium] Support plugin tests
        https://bugs.webkit.org/show_bug.cgi?id=40413

        * DEPS:
         Bump the Chromium revision to r49376 to have a npapi_layout_test_plugin
         change and Linux <progress> resources.
         Add third_party/mesa because app/ depends on them
         since r49332.
        * WebKit.gyp:
          Copy a plugin binary for DRT to recognize it.

2010-06-10  James Hawkins  <jhawkins@chromium.org>

        Not reviwed.

        Build fix for Chromium Mac Release.

        * src/AutoFillPopupMenuClient.cpp:
        (WebKit::AutoFillPopupMenuClient::getSuggestion):
        (WebKit::AutoFillPopupMenuClient::valueChanged):
        (WebKit::AutoFillPopupMenuClient::selectionChanged):
        (WebKit::AutoFillPopupMenuClient::itemIsSeparator):

2010-06-09  James Hawkins  <jhawkins@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Add the ability to specify a separator in
        AutoFillPopupMenuClient.

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

        * public/WebViewClient.h:
        (WebKit::WebViewClient::didAcceptAutoFillSuggestion):
        * src/AutoFillPopupMenuClient.cpp:
        (WebKit::AutoFillPopupMenuClient::getSuggestionsCount):
        (WebKit::AutoFillPopupMenuClient::getSuggestion):
        (WebKit::AutoFillPopupMenuClient::valueChanged):
        (WebKit::AutoFillPopupMenuClient::selectionChanged):
        (WebKit::AutoFillPopupMenuClient::itemIsSeparator):
        (WebKit::AutoFillPopupMenuClient::initialize):
        (WebKit::AutoFillPopupMenuClient::setSuggestions):
        * src/AutoFillPopupMenuClient.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::applyAutoFillSuggestions):
        * src/WebViewImpl.h:

2010-06-10  Dmitry Titov  <dimich@chromium.org>

        Not reviewed, Chromium build fix from Abhishek Arya.

        * src/WebImageCG.cpp:
        (WebKit::WebImage::WebImage):
        (WebKit::WebImage::operator=):

2010-06-10  Abhishek Arya  <inferno@chromium.org>

        Reviewed by Dimitri Glazkov.

        Add null pointer checks for nativeImageForCurrentFrame
        function calls.
        https://bugs.webkit.org/show_bug.cgi?id=39797

        * src/WebImageCG.cpp:
        (WebKit::WebImage::WebImage):
        (WebKit::WebImage::operator=):

2010-06-10  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: to reduce the front end start up time don't push script
        sources to frontend if debugger is always enabled, instead request
        script content lazily at the moment it should be displyed. It is critical for
        always enabled debugger because in that case lots of script may have
        already been parsed when the front end is opening and pushing all
        of them at once may slow things down(even though the script sources will never
        be used if scripts panel isn't open).
        https://bugs.webkit.org/show_bug.cgi?id=40364

        * src/js/DevTools.js:
        * src/js/InspectorControllerImpl.js:
        (devtools.InspectorBackendImpl):
        (.devtools.InspectorBackendImpl.prototype.getScriptSource):

2010-06-10  Mike Belshe  <mbelshe@google.com>

        Reviewed by David Levin

        Track whether a resource is loaded via a proxy.

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

        * public/WebURLResponse.h:
        * src/WebURLResponse.cpp:
        (WebKit::WebURLResponse::wasFetchedViaProxy):
        (WebKit::WebURLResponse::setWasFetchedViaProxy):

2010-06-10  Vangelis Kokkevis  <vangelis@chromium.org>

        Reviewed by Dimitri Glazkov.

        [chromium] Adding the ANGLE project to the DEPS file as it's required
        by the gpu-accelerated compositor.
        https://bugs.webkit.org/show_bug.cgi?id=40379

        * DEPS:

2010-06-09  Bo Liu  <boliu@chromium.org>

        Reviewed by David Levin.

        [Chromium] Pass <video> full screen calls to Chromium port client
        https://bugs.webkit.org/show_bug.cgi?id=40317

        * public/WebViewClient.h:
        (WebKit::WebViewClient::supportsFullscreen):
        (WebKit::WebViewClient::enterFullscreenForNode):
        (WebKit::WebViewClient::exitFullscreenForNode):
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::supportsFullscreenForNode):
        (WebKit::ChromeClientImpl::enterFullscreenForNode):
        (WebKit::ChromeClientImpl::exitFullscreenForNode):
        * src/ChromeClientImpl.h:

2010-06-09  Kenneth Russell  <kbr@google.com>

        Reviewed by Dimitri Glazkov.

        Rename FloatArray to Float32Array
        https://bugs.webkit.org/show_bug.cgi?id=40323

        Used do-webcore-rename to perform renaming. Manually undid
        incorrect changes to WebCore/bridge/jni/jsc/JNIBridgeJSC.cpp,
        WebCore/manual-tests/resources/ArrayParameterTestApplet.java and
        ArrayParameterTestApplet.class. Updated LayoutTests. Built and ran
        all layout tests on Safari; built Chromium and ran selected WebGL
        tests.

        * src/GraphicsContext3D.cpp:

2010-06-09  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r60889.
        http://trac.webkit.org/changeset/60889
        https://bugs.webkit.org/show_bug.cgi?id=40365

        gtk bot has some kind of memory corruption (Requested by
        loislo on #webkit).

        * src/InspectorClientImpl.cpp:
        * src/InspectorClientImpl.h:
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::setInspectorFrontendProxyToInspectorController):

2010-06-09  Pavel Podivilov  <podivilov@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: retreive debugger script source synchronously when
        frontend is attached. We need this to be able to stop on top-level
        breakpoints.
        https://bugs.webkit.org/show_bug.cgi?id=40289

        * WebKit.gypi:
        * src/DebuggerAgent.h:
        * src/DebuggerAgentImpl.cpp:
        * src/DebuggerAgentImpl.h:
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::createInspectorFrontendProxy):
        * src/js/DebuggerScript.js:
        * src/js/DevTools.js:
        (WebInspector.loaded):
        * src/js/DevToolsHostStub.js:

2010-06-07  Ilya Tikhonovsky  <loislo@chromium.org>

        Reviewed by Pavel Feldman.

        WebInspector: On the way to Remote Debugging we want to transfer dom/timeline/etc
        data from inspected page to WebInspector as JSON string via http. The native
        serialization to JSON string is supported by InspectorValue's classes. This patch
        has the implementation of sendMessageToFrontend function. WebKit version of it still
        uses ScriptFunctionCall and will be switched to another transport a little bit later.
        https://bugs.webkit.org/show_bug.cgi?id=40134

        * src/InspectorClientImpl.cpp:
        (WebKit::InspectorClientImpl::sendMessageToFrontend):
        * src/InspectorClientImpl.h:
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::setInspectorFrontendProxyToInspectorController):

2010-06-09  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: update stack trace after script source editing
        https://bugs.webkit.org/show_bug.cgi?id=40357

        * src/js/DebuggerAgent.js:
        (devtools.DebuggerAgent.prototype.editScriptSource.this.requestSeqToCallback_.cmd.getSequenceNumber):
        (devtools.DebuggerAgent.prototype.editScriptSource.requestBacktrace):
        (devtools.DebuggerAgent.prototype.editScriptSource.handleBacktraceResponse):
        (devtools.DebuggerAgent.prototype.editScriptSource.reportDidCommitEditing):
        (devtools.DebuggerAgent.prototype.editScriptSource):
        (devtools.DebuggerAgent.prototype.requestBacktrace_):
        (devtools.DebuggerAgent.prototype.handleDebuggerOutput_):
        (devtools.DebuggerAgent.prototype.doHandleBacktraceResponse_):
        (devtools.DebuggerAgent.prototype.updateCallFramesFromBacktraceResponse_):
        * src/js/InspectorControllerImpl.js:
        (.devtools.InspectorBackendImpl.prototype.editScriptSource):

2010-06-08  Tony Chang  <tony@chromium.org>

        Reviewed by David Levin.

        [chromium] compile linux chromium in WebKit/out instead of WebKit/WebKit/chromium/out
        https://bugs.webkit.org/show_bug.cgi?id=40285

        Take 2 at landing this patch, this time rolling DEPS just a bit
        further to pick up some chromium fixes.

        * DEPS
        * gyp_webkit:

2010-06-08  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r60878.
        http://trac.webkit.org/changeset/60878
        https://bugs.webkit.org/show_bug.cgi?id=40349

        broke linux build (Requested by tony^work on #webkit).

        * DEPS:
        * gyp_webkit:

2010-06-08  Tony Chang  <tony@chromium.org>

        Reviewed by David Levin.

        [chromium] compile linux chromium in WebKit/out instead of WebKit/WebKit/chromium/out
        https://bugs.webkit.org/show_bug.cgi?id=40285

        * gyp_webkit:

2010-06-08  Tony Chang  <tony@chromium.org>

        Not reviewed, build fix.

        [chromium] fix linux compile
        https://bugs.webkit.org/show_bug.cgi?id=40343

        * DEPS:

2010-06-08  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: extend ScriptDebugServer to support script source editing
        https://bugs.webkit.org/show_bug.cgi?id=40297

        * src/js/DebuggerAgent.js:
        (devtools.ScriptInfo.prototype.worldType):
        * src/js/DebuggerScript.js:
        (debuggerScriptConstructor.DebuggerScript.editScriptSource):
        * src/js/DevTools.js:
        (WebInspector.loaded):
        * src/js/InspectorControllerImpl.js:
        (devtools.InspectorBackendImpl):

2010-06-08  Antonio Gomes  <tonikitoo@webkit.org>

        Reviewed by Ojan Vafai and Darin Adler.

        Refactor platform dependent editing behavior code out of Settings
        https://bugs.webkit.org/show_bug.cgi?id=39854

        EditingBehavior enum was renamed to EditingBehaviorTypes and moved out from Settings.h to
        EditingBehaviorTypes.h . Call sites in WebKit/ adjusted accordingly.

        * src/WebSettingsImpl.cpp:
        (WebKit::WebSettingsImpl::setEditingBehavior):
2010-06-07  Tony Chang  <tony@chromium.org>

        Reviewed by Kent Tamura.

        [chromium] roll chromium DEPS
        https://bugs.webkit.org/show_bug.cgi?id=40277

        * DEPS:

2010-06-07  Kinuko Yasuda  <kinuko@chromium.org>

        Reviewed by Jian Li.

        Refactor FormData and Blob for better support of Blobs synthesized by BlobBuilder.
        https://bugs.webkit.org/show_bug.cgi?id=39083

        Replace FormDataList::Item list with BlobItemList to get it compiled
        with the refactoring in FormDataList.

        * src/WebSearchableFormData.cpp:
        (WebCore::HasSuitableTextElement):

2010-06-07  Andrei Popescu  <andreip@google.com>

        Reviewed by Jeremy Orlow.

        [indexedDB] It is impossible to create object stores
        https://bugs.webkit.org/show_bug.cgi?id=40054

        * WebKit.gyp:
        * public/WebIDBCallbacks.h:
        (WebKit::WebIDBCallbacks::onSuccess):
        * public/WebIDBDatabase.h:
        (WebKit::WebIDBDatabase::createObjectStore):
        * public/WebIDBObjectStore.h: Added.
        (WebKit::WebIDBObjectStore::~WebIDBObjectStore):
        (WebKit::WebIDBObjectStore::name):
        (WebKit::WebIDBObjectStore::keyPath):
        * src/IDBCallbacksProxy.cpp:
        (WebCore::IDBCallbacksProxy::onSuccess):
        * src/IDBCallbacksProxy.h:
        * src/IDBDatabaseProxy.cpp:
        (WebCore::IDBDatabaseProxy::createObjectStore):
        * src/IDBDatabaseProxy.h:
        * src/IDBObjectStoreProxy.cpp: Added.
        (WebCore::IDBObjectStoreProxy::create):
        (WebCore::IDBObjectStoreProxy::IDBObjectStoreProxy):
        (WebCore::IDBObjectStoreProxy::~IDBObjectStoreProxy):
        (WebCore::IDBObjectStoreProxy::name):
        (WebCore::IDBObjectStoreProxy::keyPath):
        (WebCore::IDBObjectStoreProxy::indexNames):
        (WebCore::IDBObjectStoreProxy::createIndex):
        (WebCore::IDBObjectStoreProxy::index):
        (WebCore::IDBObjectStoreProxy::removeIndex):
        * src/IDBObjectStoreProxy.h: Added.
        * src/IndexedDatabaseProxy.cpp:
        (WebCore::IndexedDatabaseProxy::open):
        * src/WebIDBCallbacksImpl.cpp:
        (WebCore::WebIDBCallbacksImpl::onSuccess):
        * src/WebIDBCallbacksImpl.h:
        * src/WebIDBDatabaseImpl.cpp:
        (WebKit::WebIDBDatabaseImpl::createObjectStore):
        * src/WebIDBDatabaseImpl.h:
        * src/WebIDBObjectStoreImpl.cpp: Added.
        (WebKit::WebIDBObjectStoreImpl::WebIDBObjectStoreImpl):
        (WebKit::WebIDBObjectStoreImpl::~WebIDBObjectStoreImpl):
        (WebKit::WebIDBObjectStoreImpl::name):
        (WebKit::WebIDBObjectStoreImpl::keyPath):
        * src/WebIDBObjectStoreImpl.h: Added.
        * src/WebIndexedDatabaseImpl.cpp:
        (WebKit::WebIndexedDatabaseImpl::open):

2010-06-07  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: should be possible to distinguish extension scripts from main world scripts
        https://bugs.webkit.org/show_bug.cgi?id=40220

        * src/js/DebuggerAgent.js:
        (devtools.DebuggerAgent.prototype.initUI):
        (devtools.DebuggerAgent.prototype.addScriptInfo_):
        (devtools.DebuggerAgent.prototype.formatCallFrame_):
        (devtools.ScriptInfo.prototype.worldType):
        * src/js/DebuggerScript.js:
        (debuggerScriptConstructor.DebuggerScript.getScripts): use only context id without context type
        when filtering scripts so that extension scripts are also included.
        (debuggerScriptConstructor.DebuggerScript._formatScript):
        * src/js/devTools.css:

2010-06-04  Jay Civelli  <jcivelli@chromium.org>

        Reviewed by Dimitri Glazkov.

        Accessibility focus change notifications are now sent from
        ChromeClientImpl::focusedNodeChanged().
        https://bugs.webkit.org/show_bug.cgi?id=39792

        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::focus):
        (WebKit::ChromeClientImpl::focusedNodeChanged):

2010-06-04  Jay Civelli  <jcivelli@chromium.org>

        Reviewed by David Levin.

        [chromium] Adding support for the left and right Windows keys to the
                   NativeWebKeyboardEvent.
        https://bugs.webkit.org/show_bug.cgi?id=39752

        * src/gtk/WebInputEventFactory.cpp:
        (WebKit::gdkEventToWindowsKeyCode):

2010-06-04  Pavel Podivilov  <podivilov@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: Create resource for DebuggerScript.js.
        https://bugs.webkit.org/show_bug.cgi?id=40122

        * WebKit.grd:
        * public/WebDevToolsAgentClient.h:
        (WebKit::WebDevToolsAgentClient::debuggerScriptSource):

2010-05-26  MORITA Hajime  <morrita@google.com>

        Reviewed by Jian Li.

        [Chromium] Dragging over an element with scrollbars should scroll the element when dragging near edges
        https://bugs.webkit.org/show_bug.cgi?id=39725

        Added WebViewImpl::scrollForDragging() to handle scroll-on-drag.
        Note that this change handes both source and destination cases.
        
        * public/WebView.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::dragSourceMovedTo):
        (WebKit::WebViewImpl::dragTargetDragEnterOrOver):
        (WebKit::WebViewImpl::scrollForDragging):
        * src/WebViewImpl.h:

2010-06-03  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        [v8] Web Inspector: show "Object" as description for values with anonymous constructor
        https://bugs.webkit.org/show_bug.cgi?id=40121

        * src/js/DevTools.js: don't call DebuggerAgent methods if ScriptDebugServer is used.

2010-06-03  Kent Tamura  <tkent@chromium.org>

        Reviewed by Dimitri Glazkov.

        [DRT/Chromium] Checking out lighttpd
        https://bugs.webkit.org/show_bug.cgi?id=39948

        - Add lighttpd only on Windows. It is used by new-run-webkit-tests.
        - Add libvpx.
        - Remove pthreads-win32 from DEPS.
          It has not been used since Chromium r28642.
        - Update Chromium revision to use Windows resource query code and
          webkit_glue dependency fix.

        * DEPS:

2010-06-02  Tony Chang  <tony@chromium.org>

        Reviewed by Kent Tamura.

        [chromium] refactor WebKit.gyp's DRT section so the conditions are less messy
        https://bugs.webkit.org/show_bug.cgi?id=40104

        * WebKit.gyp:

2010-06-02  Tony Chang  <tony@chromium.org>

        Not reviewed, build fix in downstream chromium.

        Fix the path to repack.py so it works in a chromium checkout too.

        * WebKit.gyp:

2010-06-02  Tony Chang  <tony@chromium.org>

        Reviewed by Kent Tamura.

        [chromium] generate DumpRenderTree.pak on DRT linux
        https://bugs.webkit.org/show_bug.cgi?id=40098

        * WebKit.gyp:

2010-06-02  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r60592.
        http://trac.webkit.org/changeset/60592
        https://bugs.webkit.org/show_bug.cgi?id=40099

        broke the build, need to coordiate updating DEPS (Requested by
        tony^work on #webkit).

        * DEPS:
        * public/WebMediaPlayer.h:

2010-06-02  Victoria Kirst  <vrk@google.com>

        Reviewed by David Levin.

        Modifying the WebMediaPlayer interface to be compatible with
        a change in chrome.
        This is a part 2 of 3 one-sided changes to chrome and WebKit. Chrome
        has been updated, so this commit should NOT break chromium anymore.
        https://bugs.webkit.org/show_bug.cgi?id=39445

        * DEPS: Updated to a newer chrome revision number.
        * public/WebMediaPlayer.h: Changed buffered() to be non-const.

2010-06-02  Peter Kasting  <pkasting@google.com>

        Unreviewed, emergency fix for test crashes (verbal r+ beforehand from
        John Gregg).

        Temporarily make notificationObjectDestroyed() a no-op to avoid an
        ASSERT failure.

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

        * src/NotificationPresenterImpl.cpp:
        (WebKit::NotificationPresenterImpl::notificationObjectDestroyed):

2010-06-02  Sterling Swigart  <sswigart@google.com>

        Reviewed by David Levin.

        Image Resizer Patch 0: Added compilation argument to conditionally compile pending patches.
        https://bugs.webkit.org/show_bug.cgi?id=39906

        * features.gypi:

2010-06-01  James Hawkins  <jhawkins@chromium.org>

        UNREVIEWED: build fix.

        Implement the added virtual methods from PopupMenuClient to
        TestPopupMenuClient.

        * tests/PopupMenuTest.cpp:
        (WebKit::TestPopupMenuClient::selectionChanged):
        (WebKit::TestPopupMenuClient::selectionCleared):

2010-05-24  James Hawkins  <jhawkins@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Implement new PopupMenuClient methods selectionChanged()
        and selectionCleared().  Expose placeHolder methods and isAutoFilled()
        in WebInputElement.

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

        * public/WebInputElement.h:
        * public/WebViewClient.h:
        (WebKit::WebViewClient::didSelectAutoFillSuggestion):
        (WebKit::WebViewClient::didClearAutoFillSelection):
        * src/AutoFillPopupMenuClient.cpp:
        (WebKit::AutoFillPopupMenuClient::selectionChanged):
        (WebKit::AutoFillPopupMenuClient::selectionCleared):
        (WebKit::AutoFillPopupMenuClient::popupDidHide):
        * src/AutoFillPopupMenuClient.h:
        * src/SuggestionsPopupMenuClient.h:
        (WebKit::SuggestionsPopupMenuClient::selectionChanged):
        (WebKit::SuggestionsPopupMenuClient::selectionCleared):
        * src/WebInputElement.cpp:
        (WebKit::WebInputElement::setPlaceholder):
        (WebKit::WebInputElement::placeholder):
        (WebKit::WebInputElement::isAutofilled):

2010-06-01  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r60483.
        http://trac.webkit.org/changeset/60483
        https://bugs.webkit.org/show_bug.cgi?id=40013

        Breaks Mac and Linux builds (Requested by antonm on #webkit).

        * DEPS:

2010-06-01  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Darin Fisher.

        IndexedDB cleanup
        https://bugs.webkit.org/show_bug.cgi?id=40007

        Remove the exception code paramter (that hasn't been used for a while).
        Add asserts to default implementations.

        * public/WebIDBDatabase.h:
        (WebKit::WebIDBDatabase::name):
        (WebKit::WebIDBDatabase::description):
        (WebKit::WebIDBDatabase::version):
        (WebKit::WebIDBDatabase::objectStores):
        * public/WebIndexedDatabase.h:
        (WebKit::WebIndexedDatabase::open):
        * src/WebIndexedDatabaseImpl.cpp:
        (WebKit::WebIndexedDatabaseImpl::open):
        * src/WebIndexedDatabaseImpl.h:

2010-06-01  Anton Muhin  <antonm@chromium.org>

        Reviewed by Dimitri Glazkov.

        Rolling Chromium revision to bring recent changes to V8.

        * DEPS:

2010-06-01  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r60470.
        http://trac.webkit.org/changeset/60470
        https://bugs.webkit.org/show_bug.cgi?id=39990

        Need to rollout until bot can be updated (Requested by jorlow
        on #webkit).

        * DEPS:

2010-05-31  Pavel Podivilov  <podivilov@chromium.org>

        Reviewed by Pavel Feldman.

        Chromium: save inspector settings as dictionary, not as string.
        https://bugs.webkit.org/show_bug.cgi?id=32118

        * public/WebView.h:
        * public/WebViewClient.h:
        (WebKit::WebViewClient::didUpdateInspectorSetting):
        * src/InspectorClientImpl.cpp:
        (WebKit::InspectorClientImpl::populateSetting):
        (WebKit::InspectorClientImpl::storeSetting):
        * src/InspectorClientImpl.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::WebViewImpl):
        (WebKit::WebViewImpl::inspectorSetting):
        (WebKit::WebViewImpl::setInspectorSetting):
        * src/WebViewImpl.h:

2010-05-31  James Robinson  <jamesr@chromium.org>

        Reviewed by Darin Fisher.

        Expose html5 parser enabled flag in WebSettings
        https://bugs.webkit.org/show_bug.cgi?id=39913

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

2010-05-31  Lyon Chen  <liachen@rim.com>

        Reviewed by Kent Tamura.

        Enum value FORWARD, BACKWARD, RIGHT, LEFT are causing macro conflicts.
        https://bugs.webkit.org/show_bug.cgi?id=35530

        Change enum EAlteration from { MOVE, EXTEND } to { AlterationMove, AlterationExtend } and enum EDirection { FORWARD, BACKWARD, RIGHT, LEFT} to { DirectionForward, DirectionBackward, DirectionRight, DirectionLeft } to avoid macro conflict, and also better coding style conformance.

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::executeCommand):

2010-05-31  Roland Steiner  <rolandsteiner@chromium.org>

        Bug 39977 - Missing Chromium bindings for InspectorController methods introduced in r60443
        https://bugs.webkit.org/show_bug.cgi?id=39977
        
        add missing InspectorController JS bindings:
        - getStyleSheet
        - getRuleRangesForStyleSheetId
        
        Tests: inspector/styles-source-offsets.html

        * src/js/InspectorControllerImpl.js:
        (devtools.InspectorBackendImpl):

2010-05-31  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r60456.
        http://trac.webkit.org/changeset/60456
        https://bugs.webkit.org/show_bug.cgi?id=39974

        Broke Chromium Linux/Max build (Requested by tkent on
        #webkit).

        * DEPS:

2010-05-31  Kent Tamura  <tkent@chromium.org>

        Reviewed by Dimitri Glazkov.

        [DRT/Chromium] Checking out lighttpd
        https://bugs.webkit.org/show_bug.cgi?id=39948

        - Checking out lighttpd only on Windows. It is used by new-run-webkit-tests.
        - Update Chromium revision to use Windows resource query code

        * DEPS:

2010-05-31  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: allow hiding Scripts panel from Chromium code. This
        is needed to support v8 debugging protocol which has an implementation
        that conflicts with debugger provided by the inspector.
        https://bugs.webkit.org/show_bug.cgi?id=39952

        * public/WebDevToolsAgentClient.h:
        (WebKit::WebDevToolsAgentClient::exposeV8DebuggerProtocol):
        * public/WebDevToolsFrontendClient.h:
        (WebKit::WebDevToolsFrontendClient::WebDevToolsFrontendClient):
        (WebKit::WebDevToolsFrontendClient::sendMessageToAgent):
        (WebKit::WebDevToolsFrontendClient::sendDebuggerCommandToAgent):
        (WebKit::WebDevToolsFrontendClient::sendDebuggerPauseScript):
        (WebKit::WebDevToolsFrontendClient::activateWindow):
        (WebKit::WebDevToolsFrontendClient::closeWindow):
        (WebKit::WebDevToolsFrontendClient::requestDockWindow):
        (WebKit::WebDevToolsFrontendClient::requestUndockWindow):
        (WebKit::WebDevToolsFrontendClient::hideScriptsPanel):
        * src/DebuggerAgentManager.cpp:
        (WebKit::DebuggerAgentManager::debugAttach):
        (WebKit::DebuggerAgentManager::debugDetach):
        (WebKit::DebuggerAgentManager::setExposeV8DebuggerProtocol):
        * src/DebuggerAgentManager.h:
        * src/InspectorFrontendClientImpl.cpp:
        (WebKit::InspectorFrontendClientImpl::hiddenPanels):
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::WebDevToolsAgentImpl):
        (WebKit::WebDevToolsAgentImpl::attach):

2010-05-30  Lyon Chen  <liachen@rim.com>

        Reviewed by Kent Tamura.

        This is a coding style cleanup before fixing to bug 35530.

        Enum value FORWARD, BACKWARD, RIGHT, LEFT are causing macro conflicts.
        https://bugs.webkit.org/show_bug.cgi?id=35530

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

2010-05-30  Daniel Bates  <dbates@rim.com>

        Unreviewed, attempt to fix the build after http://trac.webkit.org/changeset/60418.

        I missed a few call sites in the Chromium source when I
        landed http://trac.webkit.org/changeset/60419.

        Credit to Chris Jerdonek for looking over both this patch and the patch
        committed in r60419.

        * src/WebSearchableFormData.cpp:
        (WebCore::GetButtonToActivate):
        (WebCore::HasSuitableTextElement):

2010-05-30  Daniel Bates  <dbates@rim.com>

        Unreviewed, attempt to fix the build after http://trac.webkit.org/changeset/60418.

        * src/EditorClientImpl.cpp:
        (WebKit::EditorClientImpl::autofill):
        * src/WebFormControlElement.cpp:
        (WebKit::WebFormControlElement::formControlName):
        (WebKit::WebFormControlElement::formControlType):
        * src/WebFormElement.cpp:
        (WebKit::WebFormElement::getFormControlElements):
        * src/WebPasswordFormUtils.cpp:
        (WebKit::findPasswordFormFields):

2010-05-30  Jessie Berlin  <jberlin@webkit.org>

        Reviewed by Pavel Feldman.

        https://bugs.webkit.org/show_bug.cgi?id=39224
        Bug 39224 - Web Inspector: There should be a way to clean up profiles

        * src/js/InspectorControllerImpl.js:
        (devtools.InspectorBackendImpl):

2010-05-29  Vangelis Kokkevis  <vangelis@chromium.org>

        Reviewed by Darin Fisher.

        Adding support for a runtime flag to enable accelerated
        compositing in chromium.
        https://bugs.webkit.org/show_bug.cgi?id=39917

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

2010-05-28  Aaron Boodman  <aa@chromium.org>

        Reviewed by Darin Fisher.

        Add isXHTMLDocument() to WebDocument.

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

        * public/WebDocument.h: Add isXHTMLDocument().
        * src/WebDocument.cpp: ditto.
        (WebKit::WebDocument::isXHTMLDocument): dittorama.

2010-05-27  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Steve Block.

        Add IndexedDB's IDBIndex
        https://bugs.webkit.org/show_bug.cgi?id=39850

        Add WebKit layer for IDBIndex.

        * WebKit.gyp:
        * public/WebCommon.h:
        * public/WebIDBCallbacks.h:
        (WebKit::WebIDBCallbacks::onError):
        (WebKit::WebIDBCallbacks::onSuccess):
        * public/WebIDBDatabase.h:
        * public/WebIDBIndex.h: Added.
        (WebKit::WebIDBIndex::~WebIDBIndex):
        (WebKit::WebIDBIndex::name):
        (WebKit::WebIDBIndex::keyPath):
        (WebKit::WebIDBIndex::unique):
        * src/IDBCallbacksProxy.cpp:
        (WebCore::IDBCallbacksProxy::onSuccess):
        * src/IDBCallbacksProxy.h:
        * src/IDBDatabaseProxy.cpp:
        * src/IDBDatabaseProxy.h:
        * src/IDBIndexProxy.cpp: Added.
        (WebCore::IDBIndexProxy::create):
        (WebCore::IDBIndexProxy::IDBIndexProxy):
        (WebCore::IDBIndexProxy::~IDBIndexProxy):
        (WebCore::IDBIndexProxy::name):
        (WebCore::IDBIndexProxy::keyPath):
        (WebCore::IDBIndexProxy::unique):
        * src/IDBIndexProxy.h: Added.
        * src/WebIDBCallbacksImpl.cpp:
        (WebCore::WebIDBCallbacksImpl::onSuccess):
        * src/WebIDBCallbacksImpl.h:
        * src/WebIDBDatabaseImpl.cpp:
        * src/WebIDBDatabaseImpl.h:
        * src/WebIDBIndexImpl.cpp: Added.
        (WebKit::WebIDBIndexImpl::WebIDBIndexImpl):
        (WebKit::WebIDBIndexImpl::~WebIDBIndexImpl):
        (WebKit::WebIDBIndexImpl::name):
        (WebKit::WebIDBIndexImpl::keyPath):
        (WebKit::WebIDBIndexImpl::unique):
        * src/WebIDBIndexImpl.h: Added.

2010-05-28  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: check that ClientMessageLoopAdapter is not 0 before
        accessing its fileds from inspectedViewClosed method. It may be 0
        if inspector frontend has not been open.
        https://bugs.webkit.org/show_bug.cgi?id=39876

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

2010-05-27  Eric Uhrhane  <ericu@chromium.org>

        Reviewed by Adam Barth.

        Add v8 bindings for async DB API in workers
        https://bugs.webkit.org/show_bug.cgi?id=39145
        
        * src/DatabaseObserver.cpp:
        We should check that we're on the context thread now, not the main
        thread.
        (WebCore::DatabaseObserver::databaseOpened):
        (WebCore::DatabaseObserver::databaseModified):
        (WebCore::DatabaseObserver::databaseClosed):

2010-05-27  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Resume script execution if user tries to navigate to another URL
        https://bugs.webkit.org/show_bug.cgi?id=39842

        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::):
        (WebKit::WebDevToolsAgentImpl::didNavigate):

2010-05-27  Zhenyao Mo  <zmo@google.com>

        Reviewed by Dimitri Glazkov.

        Implement lazy clearing of renderbuffers
        https://bugs.webkit.org/show_bug.cgi?id=36248

        * src/WebGraphicsContext3DDefaultImpl.cpp:
        (WebKit::WebGraphicsContext3DDefaultImpl::reshape): Clear WebGL internal buffers.

2010-05-26  Roland Steiner  <rolandsteiner@chromium.org>

        Reviewed by NOBODY (layout test crashing fix).

        Bug 39811 - WebPluginListBuilderImpl::addMediaTypeToLastPlugin does not initialize pluginIndex
        https://bugs.webkit.org/show_bug.cgi?id=39811

        Initialize the pluginIndex field (quick fix).

        Tests: covered by fast/dom/prototype-inheritance-2.html
        (crashed under Chromium Linux and Windows)

        * src/WebPluginListBuilderImpl.cpp:
        (WebKit::WebPluginListBuilderImpl::addMediaTypeToLastPlugin):

2010-05-26  Anders Carlsson  <andersca@apple.com>

        Reviewed by Darin Adler.

        Clean up MimeClassInfo and PluginInfo
        https://bugs.webkit.org/show_bug.cgi?id=39700

        Update for WebCore changes.

        * src/WebPluginListBuilderImpl.cpp:
        (WebKit::WebPluginListBuilderImpl::addPlugin):
        (WebKit::WebPluginListBuilderImpl::addMediaTypeToLastPlugin):
        (WebKit::WebPluginListBuilderImpl::addFileExtensionToLastMediaType):
        * src/WebPluginListBuilderImpl.h:
        (WebKit::WebPluginListBuilderImpl::WebPluginListBuilderImpl):

2010-05-26  Jeremy Orlow  <jorlow@chromium.org>

        Unreviewed chromium build fix
        https://bugs.webkit.org/show_bug.cgi?id=39739

        The backwards compat function needs to take in a WebSecurityOrigin
        instead of a WebString.

        * public/WebIndexedDatabase.h:
        (WebKit::WebIndexedDatabase::open):

2010-05-26  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Darin Fisher.

        Implement WebDOMStorageList and make WebIDBDatabase use it
        https://bugs.webkit.org/show_bug.cgi?id=39731

        * WebKit.gyp:
        * public/WebDOMStringList.h: Added.
        (WebKit::WebDOMStringList::~WebDOMStringList):
        (WebKit::WebDOMStringList::WebDOMStringList):
        (WebKit::WebDOMStringList::operator=):
        * public/WebIDBDatabase.h:
        (WebKit::WebIDBDatabase::objectStores):
        * src/IDBDatabaseProxy.cpp:
        (WebCore::IDBDatabaseProxy::objectStores):
        * src/WebDOMStringList.cpp: Added.
        (WebKit::WebDOMStringList::reset):
        (WebKit::WebDOMStringList::assign):
        (WebKit::WebDOMStringList::append):
        (WebKit::WebDOMStringList::length):
        (WebKit::WebDOMStringList::item):
        (WebKit::WebDOMStringList::WebDOMStringList):
        (WebKit::WebDOMStringList::operator=):
        (WebKit::WebDOMStringList::operator WTF::PassRefPtr<WebCore::DOMStringList>):
        * src/WebIDBDatabaseImpl.cpp:
        (WebKit::WebIDBDatabaseImpl::objectStores):
        * src/WebIDBDatabaseImpl.h:

2010-05-24  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Steve Block.

        Add IDBDatabase's attributes
        https://bugs.webkit.org/show_bug.cgi?id=39602

        Plumbing to hook up the synchronous attribute requests
        on IDBDatabase.

        * public/WebIDBDatabase.h:
        (WebKit::WebIDBDatabase::name):
        (WebKit::WebIDBDatabase::description):
        (WebKit::WebIDBDatabase::version):
        (WebKit::WebIDBDatabase::objectStores):
        * src/IDBDatabaseProxy.cpp:
        (WebCore::IDBDatabaseProxy::name):
        (WebCore::IDBDatabaseProxy::description):
        (WebCore::IDBDatabaseProxy::version):
        (WebCore::IDBDatabaseProxy::objectStores):
        * src/IDBDatabaseProxy.h:
        * src/WebIDBDatabaseImpl.cpp:
        (WebKit::WebIDBDatabaseImpl::WebIDBDatabaseImpl):
        (WebKit::WebIDBDatabaseImpl::name):
        (WebKit::WebIDBDatabaseImpl::description):
        (WebKit::WebIDBDatabaseImpl::version):
        (WebKit::WebIDBDatabaseImpl::objectStores):
        * src/WebIDBDatabaseImpl.h:

2010-05-24  Dirk Pranke  <dpranke@chromium.org>

        Reviewed by Dimitri Glazkov.

        Re-commit r58765 - it had been rolled out to see if it was causing
        a perf regression (in r59787 and r59789), but that does not seem to
        have been the case.

        * public/WebNotification.h:
        * src/WebNotification.cpp:
        (WebKit::WebNotification::dir):
        (WebKit::WebNotification::replaceId):

2010-05-25  Brett Wilson  <brettw@chromium.org>

        Reviewed by Darin Fisher.

        Remove obsolete code for Mac & Windows plugin creation in the Chromium
        port. This non-Windows code was to prevent a crash which we no longer
        seem to have, and it is preventing other types of plugins from working.
        https://bugs.webkit.org/show_bug.cgi?id=39684

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

2010-05-25  Kent Tamura  <tkent@chromium.org>

        Reviewed by Dimitri Glazkov.

        [DRT/Chromium] Enable 3D_CANVAS, FILTERS, METER_TAG and PROGRESS_TAG
        https://bugs.webkit.org/show_bug.cgi?id=39652

        3D_CANVAS and FILTERS have been enabled for Chromium tree
        build. They fix dozens of unexpected test results in a case of
        upstreaming build.
        Enable METER_TAG and PROGRESS_TAG too because they will be enabled
        in Chromium tree in the near future.

        * features.gypi:

2010-05-25  Vangelis Kokkevis  <vangelis@chromium.org>

        Reviewed by Darin Fisher.

        The GraphicsContext that serves as a backing store for the root layer
        updates when doing accelerated compositing is now stored in LayerRendererChromium
        instead of the Layer itself. Updating code in WebViewImpl to reflect
        that change.
        https://bugs.webkit.org/show_bug.cgi?id=39640

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

2010-05-24  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        ScriptDebugServer is now implemented as DebugEventListener which means it doesn't
        depend on v8 debugging protocol, instead it uses ExecState to collect debugging
        info and pass it to the listeners.

        New implementation of ScriptDebugServer uses methods provided by client to dispatch
        its messages while JS is paused(previously the messages was dispatched in a callback
        passed to v8 along with DebugEventHandler).

        Pause command is dispatched on IO thread.

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

        * public/WebDevToolsAgentClient.h:
        (WebKit::WebDevToolsAgentClient::ClientMessageLoop::~ClientMessageLoop):
        (WebKit::WebDevToolsAgentClient::createClientMessageLoop): Returns an object that allows to run
        nested client message loop while script execution is paused on a breakpoint.
        * src/DebuggerAgentManager.cpp:
        (WebKit::DebuggerAgentManager::setMessageLoopDispatchHandler):
        * src/DebuggerAgentManager.h:
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::):
        (WebKit::WebDevToolsAgentImpl::~WebDevToolsAgentImpl):
        (WebKit::WebDevToolsAgentImpl::attach):
        * src/js/DebuggerScript.js:
        (debuggerScriptConstructor.DebuggerScript.getAfterCompileScript):
        (debuggerScriptConstructor.DebuggerScript.stepIntoStatement):
        (debuggerScriptConstructor.DebuggerScript.stepOverStatement):
        (debuggerScriptConstructor.DebuggerScript.stepOutOfFunction):
        * src/js/InspectorControllerImpl.js:
        (devtools.InspectorBackendImpl):
        (else.devtools.InspectorBackendImpl.prototype.pauseInDebugger): Pause command should be handled on IO
        thread so that script can be paused even if it's in an infinite loop.

2010-05-25  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Add memory graph to Timeline overview pane.

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

        * src/js/devTools.css:
        (.timeline-category-statusbar-item input):

2010-05-24  Tony Chang  <tony@chromium.org>

        Reviewed by David Levin.

        [chromium] Fix zoom tests after r60104
        https://bugs.webkit.org/show_bug.cgi?id=39645
        
        m_zoomFactor moved from Frame to FrameView.  FrameView has separate
        notions of page zoom and text zoom.  In my hurried compile fix, I
        assumed that m_zoomFactor was for page zoom, but it's not always.

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

2010-05-24  Kent Tamura  <tkent@chromium.org>

        Unreviewed. Sort features.

        * features.gypi:

2010-05-24  Kent Tamura  <tkent@chromium.org>

        Reviewed by Dimitri Glazkov.

        [DRT/Chromium] Import layout_test_helper for Windows
        https://bugs.webkit.org/show_bug.cgi?id=39581

        * WebKit.gyp: Add a build rule for LayoutTestHelper.exe for Windows.

2010-05-24  Marcus Bulach  <bulach@chromium.org>

        Reviewed by Kent Tamura.

        [chromium] Adds WebGeolocationServiceMockImpl to remove public dependency on wtf/HashMap.h
        https://bugs.webkit.org/show_bug.cgi?id=39587

        * public/WebGeolocationServiceMock.h:
        * src/WebGeolocationServiceMock.cpp:
        (WebKit::WebGeolocationServiceMockImpl::~WebGeolocationServiceMockImpl):
        (WebKit::WebGeolocationServiceMock::createWebGeolocationServiceMock):
        (WebKit::WebGeolocationServiceMockImpl::requestPermissionForFrame):
        (WebKit::WebGeolocationServiceMockImpl::attachBridge):
        (WebKit::WebGeolocationServiceMockImpl::detachBridge):

2010-05-24  Tony Chang  <tony@chromium.org>

        Reviewed by Kent Tamura.

        [chromium] setup fonts on chromium linux DRT
        https://bugs.webkit.org/show_bug.cgi?id=39644

        * WebKit.gyp:

2010-05-24  Tony Chang  <tony@chromium.org>

        Not reviewed, build fix.

        Fix the chromium compile due to pageZoomFactor refactoring.

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

2010-05-24  Darin Adler  <darin@apple.com>

        Reviewed by Eric Seidel.

        Move view-related functions from Frame to FrameView
        https://bugs.webkit.org/show_bug.cgi?id=39366

        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::setZoomLevel): Call setZoomLevel on FrameView.

2010-05-24  Anders Carlsson  <andersca@apple.com>

        Attempt to fix the Chromium build.

        * src/WebViewImpl.cpp:

2010-05-21  Tony Chang  <tony@chromium.org>

        Reviewed by Ojan Vafai.

        [chromium] if keydown is prevented, don't update the IME and clear the IME state
        https://bugs.webkit.org/show_bug.cgi?id=39475

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

2010-05-23  Roman Gershman  <romange@google.com>

        Reviewed by Darin Fisher.

        [Chromium] Suggestion popup is not closed when the view is scrolled.
        https://bugs.webkit.org/show_bug.cgi?id=38640

        This bug appears on both Windows and Linux platforms.
        Mac OS, however handles window messages differently and
        closes popup menu in RenderWidgetHostViewMac::Destroy().

        No tests were added because test_shell does not support suggestion
        popup.

        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::invalidateContentsForSlowScroll):
        (WebKit::ChromeClientImpl::scroll):

2010-05-23  Marcus Bulach  <bulach@chromium.org>

        Reviewed by Kent Tamura.

        [chromium] Adds Geolocation support to DumpRenderTree.
        https://bugs.webkit.org/show_bug.cgi?id=39440

        Existing LayoutTests/fast/dom/Geolocation/* should pass.

        * public/WebGeolocationServiceMock.h:
        * src/WebGeolocationServiceMock.cpp:
        (WebKit::WebGeolocationServiceMock::setMockGeolocationPermission):
        (WebKit::WebGeolocationServiceMock::requestPermissionForFrame):
        (WebKit::WebGeolocationServiceMock::attachBridge):
        (WebKit::WebGeolocationServiceMock::detachBridge):

2010-05-22  Kent Tamura  <tkent@chromium.org>

        Reviewed by Dimitri Glazkov.

        [DRT/Chromium] Link resources and load Ahem font for Windows
        https://bugs.webkit.org/show_bug.cgi?id=39473

        * WebKit.gyp:
          Add net and webkit resources for Windows.
          Copy AHEM____.TTF to DumpRenderTree.exe directory.

2010-05-21  Steve Block  <steveblock@google.com>

        Reviewed by Jeremy Orlow.

        Add DeviceOrientation and DeviceOrientationClient
        https://bugs.webkit.org/show_bug.cgi?id=39479

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

2010-05-20  Viet-Trung Luu  <viettrungluu@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Don't rely on focused node to route mouse events to plugins.
        https://bugs.webkit.org/show_bug.cgi?id=39375
        http://crbug.com/43935

        On mouse down, do a hit test and check if a plugin was hit. If so, then
        save the node for future mouse events (until mouse up or capture lost).

        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::WebViewImpl):
        (WebKit::WebViewImpl::mouseDown):
        (WebKit::WebViewImpl::handleInputEvent):
        (WebKit::WebViewImpl::mouseCaptureLost):
        * src/WebViewImpl.h: Remove m_haveMouseCapture; add m_mouseCaptureNode.

2010-05-20  Dominic Mazzoni  <dmazzoni@chromium.org>

        Reviewed by Darin Fisher.

        Add headingLevel and setFocused methods.

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

        * public/WebAccessibilityObject.h:
        * src/WebAccessibilityObject.cpp:
        (WebKit::WebAccessibilityObject::headingLevel):
        (WebKit::WebAccessibilityObject::setFocused):

2010-05-20  Zhenyao Mo  <zmo@google.com>

        Reviewed by Dimitri Glazkov.

        Map RGBA4/RGB5_A1 to RGBA and RGB565 to RGB in RenderbufferStorage
        https://bugs.webkit.org/show_bug.cgi?id=39077

        * src/WebGraphicsContext3DDefaultImpl.cpp:
        (WebKit::WebGraphicsContext3DDefaultImpl::renderbufferStorage): Mapping the enums.

2010-05-20  Abhishek Arya  <inferno@chromium.org>

        Reviewed by Adam Barth.

        Added method to WebSecurityOrigin for invoking
        SecurityOrigin::canAccessPasswordManager.
        https://bugs.webkit.org/show_bug.cgi?id=38916

        * public/WebSecurityOrigin.h:
        * src/WebSecurityOrigin.cpp:
        (WebKit::WebSecurityOrigin::canAccessPasswordManager):

2010-05-20  Darin Fisher  <darin@chromium.org>

        Reviewed by Nate Chapin.

        [chromium] Provide a way to catch exceptions thrown while interacting
        with a NPObject via WebBindings methods.
        https://bugs.webkit.org/show_bug.cgi?id=39378

        * public/WebBindings.h:
        * src/WebBindings.cpp:
        (WebKit::WebBindings::pushExceptionHandler):
        (WebKit::WebBindings::popExceptionHandler):

2010-05-20  Jian Li  <jianli@chromium.org>

        Reviewed by David Levin.

        Rename GenericWorkerTask.h to CrossThreadTask.h and move it to dom directory.
        https://bugs.webkit.org/show_bug.cgi?id=39135

        * src/WebSharedWorkerImpl.cpp:
        * src/WebWorkerBase.cpp:
        * src/WebWorkerClientImpl.cpp:
        * src/WebWorkerImpl.cpp:

2010-05-20  Martin Robinson  <mrobinson@webkit.org>

        Reviewed by Ojan Vafai.

        Expose the editing behavior setting in DRT to test all editing code paths
        https://bugs.webkit.org/show_bug.cgi?id=38603

        * public/WebSettings.h:
        (WebKit::WebSettings::): Added an enum for EditingBehavior types.
        * src/WebSettingsImpl.cpp: 
        (WebKit::WebSettingsImpl::setEditingBehavior): Added.
        * src/WebSettingsImpl.h:

2010-05-19  Vangelis Kokkevis  <vangelis@chromium.org>

        Reviewed by Darin Fisher.

        Modifying WebViewImpl to support new hardware compositing for
        LayerChromium layers.
        https://bugs.webkit.org/show_bug.cgi?id=38783

        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::paint):
        (WebKit::WebViewImpl::setIsAcceleratedCompositingActive):
        (WebKit::WebViewImpl::updateRootLayerContents):
        (WebKit::WebViewImpl::setRootLayerNeedsDisplay):

2010-05-19  Tony Chang  <tony@chromium.org>

        Reviewed by Kent Tamura.

        [chromium] disable spelling suggestions if spellcheck=false
        https://bugs.webkit.org/show_bug.cgi?id=39402
        
        This is the Chromium fix for bug 25639 that was fixed in the
        other ports in r59585.

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

2010-05-19  Darin Fisher  <darin@chromium.org>

        Revert r59790 due to failing Chromium npruntime tests.

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

2010-05-19  Darin Fisher  <darin@chromium.org>

        Reviewed by Nate Chapin.

        [chromium] Provide a way to catch exceptions thrown while interacting
        with a NPObject via WebBindings methods.
        https://bugs.webkit.org/show_bug.cgi?id=39378

        * public/WebBindings.h:
        * src/WebBindings.cpp:
        (WebKit::WebBindings::pushExceptionHandler):
        (WebKit::WebBindings::popExceptionHandler):

2010-05-19  Dirk Pranke  <dpranke@chromium.org>

        Try again to roll out r58765.

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

2010-05-19  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r59782.
        http://trac.webkit.org/changeset/59782
        https://bugs.webkit.org/show_bug.cgi?id=39379

        broke DRT build (Requested by dpranke on #webkit).

        * public/WebNotification.h:
        * src/WebNotification.cpp:
        (WebKit::WebNotification::dir):
        (WebKit::WebNotification::replaceId):

2010-05-19  Jian Li  <jianli@chromium.org>

        Reviewed by Darin Fisher.

        Remove obsolete ChromiumBridge code that routes FileSystem calls to WebKitClient.
        https://bugs.webkit.org/show_bug.cgi?id=39332

        * public/WebKitClient.h:
        * src/ChromiumBridge.cpp:
        (WebCore::ChromiumBridge::fileExists):
        (WebCore::ChromiumBridge::deleteFile):
        (WebCore::ChromiumBridge::deleteEmptyDirectory):
        (WebCore::ChromiumBridge::getFileSize):
        (WebCore::ChromiumBridge::getFileModificationTime):
        (WebCore::ChromiumBridge::directoryName):
        (WebCore::ChromiumBridge::pathByAppendingComponent):
        (WebCore::ChromiumBridge::makeAllDirectories):
        (WebCore::ChromiumBridge::getAbsolutePath):
        (WebCore::ChromiumBridge::isDirectory):
        (WebCore::ChromiumBridge::filePathToURL):

2010-05-19  Marcus Bulach  <bulach@chromium.org>

        Reviewed by Steve Block.

        [chromium] Adds supports for layout tests using GeolocationServiceMock.
        https://bugs.webkit.org/show_bug.cgi?id=39081

        Allows injection of GeolocationServiceMock factory.
        Tests: existing fast/dom/Geolocation/*

        * WebKit.gyp:
        * public/WebGeolocationServiceMock.h: Added.
        * src/WebGeolocationServiceMock.cpp: Added.
        (WebCore::GeolocationServiceChromiumMock::create):
        (WebCore::GeolocationServiceChromiumMock::GeolocationServiceChromiumMock):
        (WebCore::GeolocationServiceChromiumMock::startUpdating):
        (WebCore::GeolocationServiceChromiumMock::stopUpdating):
        (WebCore::GeolocationServiceChromiumMock::lastPosition):
        (WebCore::GeolocationServiceChromiumMock::lastError):
        (WebCore::GeolocationServiceChromiumMock::geolocationServicePositionChanged):
        (WebCore::GeolocationServiceChromiumMock::geolocationServiceErrorOccurred):
        (WebKit::WebGeolocationServiceMock::setMockGeolocationPosition):
        (WebKit::WebGeolocationServiceMock::setMockGeolocationError):

2010-05-17  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Darin Fisher.

        Hook Chromium's WebIndexedDatabaseImpl up to IndexedDatabaseImpl
        https://bugs.webkit.org/show_bug.cgi?id=39216

        Web____Impl is for re-entering the WebKit layer from the browser layer.
        Thus the previous IDBCallbacksProxy was mis-named (and should have been
        WebIDBCallbacksImpl).  This patch renames it and then implements the
        proper proxy (which is for going from WebCore to WebKit).

        Also change using security origin strings to using WebSecurityOrigin
        objects.

        This patch also implements the glue between WebIndexedDatabaseImpl and
        IndexedDatabaseImpl.

        * WebKit.gyp:
        * src/IDBCallbacksProxy.cpp:
        (WebCore::IDBCallbacksProxy::create):
        (WebCore::IDBCallbacksProxy::IDBCallbacksProxy):
        (WebCore::IDBCallbacksProxy::onError):
        (WebCore::IDBCallbacksProxy::onSuccess):
        * src/IDBCallbacksProxy.h:
        * src/IndexedDatabaseProxy.cpp:
        (WebCore::IndexedDatabaseProxy::open):
        * src/IndexedDatabaseProxy.h:
        * src/WebIDBCallbacksImpl.cpp: Added.
        (WebCore::WebIDBCallbacksImpl::WebIDBCallbacksImpl):
        (WebCore::WebIDBCallbacksImpl::~WebIDBCallbacksImpl):
        (WebCore::WebIDBCallbacksImpl::onError):
        (WebCore::WebIDBCallbacksImpl::onSuccess):
        * src/WebIDBCallbacksImpl.h: Added.
        * src/WebIDBDatabaseImpl.cpp: Added.
        (WebKit::WebIDBDatabaseImpl::WebIDBDatabaseImpl):
        (WebKit::WebIDBDatabaseImpl::~WebIDBDatabaseImpl):
        * src/WebIDBDatabaseImpl.h: Added.
        * src/WebIndexedDatabaseImpl.cpp:
        (WebKit::WebIndexedDatabaseImpl::WebIndexedDatabaseImpl):
        (WebKit::WebIndexedDatabaseImpl::open):
        * src/WebIndexedDatabaseImpl.h:

2010-05-18  Kent Tamura  <tkent@chromium.org>

        Reviewed by Dimitri Glazkov.

        [DRT/Chromium] Fix a repaint issue and textarea tests
        https://bugs.webkit.org/show_bug.cgi?id=39054

        * DEPS: Update to Chromium r47248 to use a fix for CommandLine assertion
          and textAreaResizeCorner.png
        * WebKit.gyp: Add textAreaResizeCorner.png as a Mac resource

2010-05-18  Tony Chang  <tony@chromium.org>

        Reviewed by Ojan Vafai.

        [chromium] ignore IME events if the keydown event was prevented
        https://bugs.webkit.org/show_bug.cgi?id=37692

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

2010-05-18  MORITA Hajime  <morrita@google.com>

        Reviewed by Kent Tamura.

        [Chromium] Windows: Determinate progress bar should have glossy overlay
        https://bugs.webkit.org/show_bug.cgi?id=39269

        Changed WebThemeEngine::drawProgressBar() signature to delegate
        theme implementation detail to the engine.
        Chromium side will come to http://crbug.com/44430.
        
        No new tests, animation effect can be confirmed only manually.        

        * public/WebThemeEngine.h:
        (WebKit::WebThemeEngine::paintProgressBar):
        * src/ChromiumBridge.cpp:
        (WebCore::ChromiumBridge::paintProgressBar):

2010-05-16  Mike Belshe  <mbelshe@chromium.org>

        Reviewed by Dimitri Glazkov.

        Add a flag to the ResourceResponse for tracking if a request was
        fetched via the TLS/Next-Protocol-Negotiation mechanism.

        Also cleaned up the style in ResourceResponse to group the flags
        together (and alphabetically) and hopefully improve readability of
        the file.

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

        * public/WebURLResponse.h:
        * src/WebURLResponse.cpp:
        (WebKit::WebURLResponse::wasNpnNegotiated):
        (WebKit::WebURLResponse::setWasNpnNegotiated):

2010-05-16  Eric Seidel  <eric@webkit.org>

        Unreviewed, rolling out r59571.
        http://trac.webkit.org/changeset/59571
        https://bugs.webkit.org/show_bug.cgi?id=39054

        Broke Cr Win, but we didn't notice immediately due to
        https://bugs.webkit.org/show_bug.cgi?id=38926.  It's possible
        that this didn't actually break Cr Win, but rather that bug
        38926 necessitates a clean compile after this and sucessive
        checkins only produced a partial recompile and thus failed to
        build.

        * DEPS:
        * WebKit.gyp:
        * features.gypi:

2010-05-16  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r59574.
        http://trac.webkit.org/changeset/59574
        https://bugs.webkit.org/show_bug.cgi?id=39176

        Supposedly broke cr-win, but the errors seems somewhat
        unrelated (Requested by abarth on #webkit).

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

2010-05-16  Mike Belshe  <mbelshe@chromium.org>

        Reviewed by Dimitri Glazkov.

        Add a flag to the ResourceResponse for tracking if a request was
        fetched via the TLS/Next-Protocol-Negotiation mechanism.

        Also cleaned up the style in ResourceResponse to group the flags
        together (and alphabetically) and hopefully improve readability of
        the file.

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

        * public/WebURLResponse.h:
        * src/WebURLResponse.cpp:
        (WebKit::WebURLResponse::wasNpnNegotiated):
        (WebKit::WebURLResponse::setWasNpnNegotiated):

2010-05-16  Kent Tamura  <tkent@chromium.org>

        Reviewed by Dimitri Glazkov.

        [DRT/Chromium] Fix repaint, WebGL, textarea tests
        https://bugs.webkit.org/show_bug.cgi?id=39054

        * DEPS: Update to Chromium r47248 to use a fix for CommandLine assertion
          and textAreaResizeCorner.png
        * WebKit.gyp: Add textAreaResizeCorner.png as a Mac resource
        * features.gypi: Enable ENABLE_3D_CANVAS.

2010-05-15  Darin Fisher  <darin@chromium.org>

        Reviewed by Adam Barth.

        [chromium] Expose element accessor on WebPluginContainer
        https://bugs.webkit.org/show_bug.cgi?id=39152

        * public/WebPluginContainer.h:
        * src/WebPluginContainerImpl.cpp:
        (WebKit::WebPluginContainerImpl::element):
        * src/WebPluginContainerImpl.h:

2010-05-15  Jochen Eisinger  <jochen@chromium.org>

        Reviewed by Dmitry Titov.

        Implement canEstablishDatabase call for workers.
        https://bugs.webkit.org/show_bug.cgi?id=38742

        * public/WebCommonWorkerClient.h:
        * src/DatabaseObserver.cpp:
        (WebCore::DatabaseObserver::canEstablishDatabase):
        * src/WebWorkerBase.cpp:
        (WebKit::WebWorkerBase::allowDatabase):
        (WebKit::WebWorkerBase::allowDatabaseTask):
        (WebKit::WebWorkerBase::AllowDatabaseMainThreadBridge::AllowDatabaseMainThreadBridge):
        (WebKit::WebWorkerBase::AllowDatabaseMainThreadBridge::cancel):
        (WebKit::WebWorkerBase::AllowDatabaseMainThreadBridge::result):
        (WebKit::WebWorkerBase::AllowDatabaseMainThreadBridge::signalCompleted):
        (WebKit::WebWorkerBase::AllowDatabaseMainThreadBridge::didComplete):
        * src/WebWorkerBase.h:
        * src/WebWorkerClientImpl.h:
        (WebKit::WebWorkerClientImpl::allowDatabase):

2010-05-15  Jay Civelli  <jcivelli@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Adding a notification on WebViewClient when a new 
        node gets focused.
        https://bugs.webkit.org/show_bug.cgi?id=38508

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

2010-05-15  Evan Stade  <estade@chromium.org>

        Reviewed by Adam Barth.

        [chromium] "Check spelling in this field" context menu item always checked
        https://bugs.webkit.org/show_bug.cgi?id=39018

        Initialize all POD members of WebContextMenuData in a default
        constructor.

        No tests because this code would need some major refactoring to unit
        test, and AFAICT it's not testable via layout tests. See note at top
        of getCustomMenuFromDefaultItems.

        * public/WebContextMenuData.h:
        (WebKit::WebContextMenuData::WebContextMenuData):
        * src/ContextMenuClientImpl.cpp:
        (WebKit::ContextMenuClientImpl::getCustomMenuFromDefaultItems):

2010-05-14  Darin Fisher  <darin@chromium.org>

        Reviewed by Dimitri Glazkov.

        [chromium] Remove temporary relative include paths
        https://bugs.webkit.org/show_bug.cgi?id=38776

        * public/WebPasswordAutocompleteListener.h:
        * src/FrameLoaderClientImpl.h:
        * src/PlatformMessagePortChannel.h:
        * src/WebAnimationControllerImpl.h:
        * src/WebBindings.cpp:
        * src/WebDataSourceImpl.h:
        * src/WebDevToolsAgentPrivate.h:
        * src/WebFileChooserCompletionImpl.h:
        * src/WebFrameImpl.h:
        * src/WebInputEventConversion.h:
        * src/WebPluginContainerImpl.h:
        * src/WebPluginLoadObserver.h:
        * src/WebPopupMenuImpl.h:
        * src/WebSettingsImpl.h:
        * src/WebViewImpl.h:
        * src/WebWorkerClientImpl.h:
        * src/WrappedResourceRequest.h:
        * src/WrappedResourceResponse.h:

2010-05-14  Anton Muhin  <antonm@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Consider implementing addOriginAccessWhitelistEntry method
        https://bugs.webkit.org/show_bug.cgi?id=37578

        Remove deprecated methods.

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

2010-05-14  Kenneth Russell  <kbr@google.com>

        Reviewed by Darin Adler.

        Rename WebGLArray types to TypedArray types
        https://bugs.webkit.org/show_bug.cgi?id=39091

        Extended functionality of do-webcore-rename script and used it to
        rename the WebGLArray types to the TypedArray naming convention.
        The only source files which were touched by hand, and which are
        being manually reviewed, are:
            WebCore/page/DOMWindow.idl
            WebCore/bindings/generic/RuntimeEnabledFeatures.h (script's changes undone)
            WebKit/WebCore/bindings/js/JSDOMWindowCustom.cpp
            WebKit/WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp
        These only needed to be touched to update the aliases between the
        WebGLArray and TypedArray names introduced in bug 39036. (It was
        not feasible to have do-webcore-rename handle this as it would
        introduce circular renamings.) These aliases will be removed in
        roughly a month once existing WebGL content has been updated.

        No new tests; covered under existing WebGL tests. Updated
        constructed-objects-prototypes and prototype-inheritance-2 tests.
        Ran all layout tests in Safari and all WebGL tests in Chromium.

        * src/GraphicsContext3D.cpp:
        (WebCore::GraphicsContext3DInternal::bufferData):
        (WebCore::GraphicsContext3DInternal::bufferSubData):

2010-05-14  Jochen Eisinger  <jochen@chromium.org>

        Reviewed by Eric Seidel.

        Make ImageDiff depend on webkit (again).
        https://bugs.webkit.org/show_bug.cgi?id=39000

        * WebKit.gyp:

2010-05-14  James Simonsen  <simonjam+webkit@google.com>

        Reviewed by Darin Fisher.

        [chromium] Expose volume through WebMediaPlayerClient
        https://bugs.webkit.org/show_bug.cgi?id=38947

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

2010-05-14  Tony Gentilcore  <tonyg@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Update chromium port to send/receive cached metadata
        https://bugs.webkit.org/show_bug.cgi?id=38665

        * public/WebKitClient.h:
        (WebKit::WebKitClient::cacheMetadata):
        * public/WebURLLoaderClient.h:
        (WebKit::WebURLLoaderClient::didReceiveCachedMetadata):
        * public/WebURLResponse.h:
        * src/ChromiumBridge.cpp:
        (WebCore::ChromiumBridge::cacheMetadata):
        * src/ResourceHandle.cpp:
        (WebCore::ResourceHandleInternal::didReceiveCachedMetadata):
        (WebCore::ResourceHandle::cacheMetadata):
        * src/WebURLResponse.cpp:
        (WebKit::WebURLResponse::responseTime):
        (WebKit::WebURLResponse::setResponseTime):

2010-05-13  Tony Chang  <tony@chromium.org>

        Reviewed by Kent Tamura.

        [chromium] enable DRT build in chromium (for the last time)
        https://bugs.webkit.org/show_bug.cgi?id=39109

        * WebKit.gyp:

2010-05-13  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: main inspector toolbar takes noticeable time to expand.

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

        * src/js/DevTools.js:
        (devtools.domContentLoaded):

2010-05-12  Hans Wennborg  <hans@chromium.org>

        Reviewed by Jeremy Orlow.

        [Chromium] Remove transitional functions from WebStorageNamespace and WebViewClient.
        https://bugs.webkit.org/show_bug.cgi?id=38985

        These functions are no longer called as of Chromium revision 47020.
        This is part of resolving http://crbug.com/42740

        * public/WebStorageNamespace.h:
        * public/WebViewClient.h:
        (WebKit::WebViewClient::createSessionStorageNamespace):

2010-05-12  Tony Chang  <tony@chromium.org>

        Reviewed by Kent Tamura.

        [chromium] disable DRT in chromium again
        https://bugs.webkit.org/show_bug.cgi?id=39049

        * WebKit.gyp:

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

        Reviewed by Darin Fisher.

        [chromium] Disable WebScrollbarImpl's scrollbar if it's not needed
        https://bugs.webkit.org/show_bug.cgi?id=39025

        * src/WebScrollbarImpl.cpp:
        (WebKit::WebScrollbarImpl::setLocation):
        (WebKit::WebScrollbarImpl::setDocumentSize):

2010-05-12  Dumitru Daniliuc  <dumi@chromium.org>

        Reviewed by Dimitri Glazkov.

        Removing the unnecessary dirfd parameter.
        https://bugs.webkit.org/show_bug.cgi?id=38869

        * public/WebKitClient.h:
        (WebKit::WebKitClient::databaseOpenFile):
        * src/ChromiumBridge.cpp:
        (WebCore::ChromiumBridge::databaseOpenFile):

2010-05-12  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Steve Block.

        [Chromium] Pass the origin parameter for WebIndexedDatabase::open
        https://bugs.webkit.org/show_bug.cgi?id=38983

        * public/WebIndexedDatabase.h:
        * src/IndexedDatabaseProxy.cpp:
        (WebCore::IndexedDatabaseProxy::open):
        * src/WebIndexedDatabaseImpl.cpp:
        (WebKit::WebIndexedDatabaseImpl::open):
        * src/WebIndexedDatabaseImpl.h:

2010-05-10  yael aharon  <yael.aharon@nokia.com>

        Reviewed by Darin Adler.

        Support control attribute of HTMLLabelElement
        https://bugs.webkit.org/show_bug.cgi?id=38688

        Renamed HTMLLabelElement::correspondingControl to HTMLLabelElement::control

        * src/WebLabelElement.cpp:
        (WebKit::WebLabelElement::correspondingControl):

2010-05-12  MORITA Hajime  <morrita@google.com>

        Reviewed by Kent Tamura.
        
        [Chromium] Support HTML5 <progress> element on Windows.
        https://bugs.webkit.org/show_bug.cgi?id=37308

        Extended ChromiumBridge to handle progress bar painting,
        and added delegations to it.
        
        No new tests. Test cases should be shared with existing ones for
        progress element.  Expectaions will be added after PROGRESS_TAG is
        enabled on Chromium tree.

        * public/WebThemeEngine.h:
        (WebKit::WebThemeEngine::paintProgressBar):
        * src/ChromiumBridge.cpp:
        (WebCore::ChromiumBridge::paintProgressBar):

2010-05-12  Marcus Bulach  <bulach@chromium.org>

        Reviewed by Steve Block.

        Attaches the geolocation bridge later on startUpdating().
        This prevents a page requesting permission when it has just accessed navigator.geolocation (without calling navigator.geolocation.getCurrentPosition/watchPosition).
        Note: when Geolocation::haveSuitableCachedPosition(), WebGeolocationServiceBridgeImpl::startUpdating() is not called,
        so we attach the bridge if needed at requestGeolocationPermissionForFrame().
        https://bugs.webkit.org/show_bug.cgi?id=38323
        http://crbug.com/42789

        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::requestGeolocationPermissionForFrame):
        * src/WebGeolocationServiceBridgeImpl.cpp:
        (WebKit::WebGeolocationServiceBridgeImpl::attachBridgeIfNeeded):
        (WebKit::WebGeolocationServiceBridgeImpl::setLastPosition):

2010-05-12  Tony Chang  <tony@chromium.org>

        Reviewed by Kent Tamura.

        [chromium] add DRT back to the chromium build
        https://bugs.webkit.org/show_bug.cgi?id=38978

        * WebKit.gyp:

2010-05-11  Kent Tamura  <tkent@chromium.org>

        Reviewed by Dimitri Glazkov.

        [DRT/Chromium] Apply recent changes of test_shell to DRT
        https://bugs.webkit.org/show_bug.cgi?id=38895

        * DEPS: Update Chromium revision to use the recent webkit_support change.
        * WebKit.gyp: Add JavaScriptCore/wtf to 'include' section.
        * src/WebGraphicsContext3D.cpp:
          Remove ENABLE(3D_CANVAS) to provide an empty implementation of
          WebGraphicsContext3D::createDefault().

2010-05-11  Avi Drissman  <avi@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Pipe RTL info into WebPopupMenuInfo
        https://bugs.webkit.org/show_bug.cgi?id=38749

        * public/WebPopupMenuInfo.h:
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::getPopupMenuInfo):

2010-05-11  David Holloway  <dhollowa@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Add size method to WebInputElement class, providing same data
        as HTMLInputElement::size().  During form AutoFill Chromium needs to
        access the input element's size attribute in aid of form matching and
        filling heuristics.
        
        https://bugs.webkit.org/show_bug.cgi?id=38825

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

2010-05-11  Nate Chapin  <japhet@chromium.org>

        Reviewed by Adam Barth.

        Crash fix in WebPageSerializerImpl::serialize().

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

        The relevant test is a test_shell_test in src.chromium.org, because neither
        DRT nor the Chromium webkit unit tests can currently cover the serializer
        functionality.

        * src/WebPageSerializerImpl.cpp:
        (WebKit::WebPageSerializerImpl::serialize): Check each frame's url before using it,
            since they are not guaranteed to be valid (e.g., if the frame was treated as a download).

2010-05-11  Jian Li  <jianli@chromium.org>

        Reviewed by Dmitry Titov.

        Expose FileReader interface.
        https://bugs.webkit.org/show_bug.cgi?id=38609

        * features.gypi: turn on building FileReader for Chromium.

2010-05-10  Tony Chang  <tony@chromium.org>

        Reviewed by Kent Tamura.

        [chromium] don't build DRT in chromium checkouts due to a circular gyp dependency
        https://bugs.webkit.org/show_bug.cgi?id=38889

        * WebKit.gyp:

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

        Reviewed by Darin Fisher.

        [chromium] Add WebKitScrollbar interface to allow Chromium code to reuse the scrollbar code
        https://bugs.webkit.org/show_bug.cgi?id=38854

        * public/WebScrollbar.h: Added.
        (WebKit::WebScrollbar::):
        (WebKit::WebScrollbar::~WebScrollbar):
        * public/WebScrollbarClient.h: Added.
        * public/WebThemeEngine.h:
        * src/AssertMatchingEnums.cpp:
        * src/WebScrollbarImpl.cpp: Added.
        (WebKit::WebScrollbar::create):
        (WebKit::WebScrollbar::defaultThickness):
        (WebKit::WebScrollbarImpl::WebScrollbarImpl):
        (WebKit::WebScrollbarImpl::~WebScrollbarImpl):
        (WebKit::WebScrollbarImpl::setLocation):
        (WebKit::WebScrollbarImpl::value):
        (WebKit::WebScrollbarImpl::setValue):
        (WebKit::WebScrollbarImpl::setDocumentSize):
        (WebKit::WebScrollbarImpl::scroll):
        (WebKit::WebScrollbarImpl::paint):
        (WebKit::WebScrollbarImpl::handleInputEvent):
        (WebKit::WebScrollbarImpl::onMouseDown):
        (WebKit::WebScrollbarImpl::onMouseUp):
        (WebKit::WebScrollbarImpl::onMouseMove):
        (WebKit::WebScrollbarImpl::onMouseLeave):
        (WebKit::WebScrollbarImpl::onMouseWheel):
        (WebKit::WebScrollbarImpl::onKeyDown):
        (WebKit::WebScrollbarImpl::valueChanged):
        (WebKit::WebScrollbarImpl::invalidateScrollbarRect):
        (WebKit::WebScrollbarImpl::isActive):
        (WebKit::WebScrollbarImpl::scrollbarCornerPresent):
        (WebKit::WebScrollbarImpl::getTickmarks):
        * src/WebScrollbarImpl.h: Added.
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::scrollViewWithKeyboard):
        (WebKit::WebViewImpl::mapKeyCodeForScroll):
        * src/WebViewImpl.h:

2010-05-10  Tony Gentilcore  <tonyg@chromium.org>

        Reviewed by Adam Barth.

        Provide mechanism to cache metadata for a resource
        https://bugs.webkit.org/show_bug.cgi?id=37874

        * src/ResourceHandle.cpp:
        (WebCore::ResourceHandle::cacheMetadata):

2010-05-10  Hans Wennborg  <hans@chromium.org>

        Reviewed by Jeremy Orlow.

        [Chromium] Add quota parameter to WebViewClient::createSessionStorageNamespace()
        https://bugs.webkit.org/show_bug.cgi?id=38750

        Put a per-origin quota on session storage since it is using memory in
        the browser process, and should not be allowed to grow arbitrarily
        large. See also http://trac.webkit.org/changeset/58828.

        * public/WebStorageNamespace.h:
        * public/WebViewClient.h:
        (WebKit::WebViewClient::createSessionStorageNamespace):
        * src/StorageNamespaceProxy.cpp:
        (WebCore::StorageNamespace::sessionStorageNamespace):


2010-05-10  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Nate Chapin.

        Change IndexedDB to use events instead of callbacks
        https://bugs.webkit.org/show_bug.cgi?id=38594

        Change the glue here to match the changes I made in WebCore.

        * WebKit.gyp:
        * public/WebIDBCallbacks.h:
        * public/WebIndexedDatabase.h:
        * src/IDBCallbacksProxy.cpp: Added.
        (WebCore::IDBCallbacksProxy::IDBCallbacksProxy):
        (WebCore::IDBCallbacksProxy::~IDBCallbacksProxy):
        (WebCore::IDBCallbacksProxy::onError):
        (WebCore::IDBCallbacksProxy::onSuccess):
        * src/IDBCallbacksProxy.h:
        * src/IndexedDatabaseProxy.cpp:
        (WebCore::IndexedDatabaseProxy::open):
        * src/IndexedDatabaseProxy.h:
        * src/WebIndexedDatabaseImpl.cpp:
        (WebKit::WebIndexedDatabaseImpl::open):
        * src/WebIndexedDatabaseImpl.h:

2010-05-08  Jens Alfke  <snej@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] WebFrame::registerPasswordListener shouldn't assert on duplicate listener.
        https://bugs.webkit.org/show_bug.cgi?id=38765

        * public/WebFrame.h:
        (WebKit::WebFrameImpl::registerPasswordListener): Changed return type to bool. Updated comment.
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::registerPasswordListener): Return false instead of asserting.
        * src/WebFrameImpl.h:
        (WebKit::WebFrameImpl::registerPasswordListener): Changed return type to bool.

2010-05-08  Michael Nordman  <michaeln@google.com>

        Reviewed by Dmitry Titov.

        Add an additional parameter to the WebSharedWorker::startWorkerContext method
        to indicate which appcache the shared worker script resource was loaded from,
        and provide that value when calling out to chrome via this interface.
        https://bugs.webkit.org/show_bug.cgi?id=38605

        I'm keeping the old method around until patches can land in both repositories
        that make the old method obsolete and unneeded. There's a FIXME for that.

        Also somewhat related but independent change to propagate the runtime enabled 
        flag thru to the page settings instance used by the 'shadow page'.
 
        * public/WebSharedWorker.h: Add the new param (but keep the old interface around for now too)
        (WebKit::WebSharedWorker::startWorkerContext):
        * src/SharedWorkerRepository.cpp: Provide the value when calling out to chrome.
        (WebCore::SharedWorkerScriptLoader::notifyFinished):
        * src/WebSharedWorkerImpl.cpp:
        (WebKit::WebSharedWorkerImpl::startWorkerContext):
        * src/WebSharedWorkerImpl.h:
        * src/WebWorkerBase.cpp: Propagate runtime enabled flag thru to the page settings.
        (WebKit::WebWorkerBase::initializeLoader):

2010-05-07  Darin Fisher  <darin@chromium.org>

        Fix build bustage.  Update to Chromium code that avoids a bad
        dependency from net/ on chrome/.

        * DEPS:

2010-05-07  Darin Fisher  <darin@chromium.org>

        Fix build bustage.  Update to Chromium code that no longer uses
        deprecated methods.

        * DEPS:

2010-05-07  Darin Fisher  <darin@chromium.org>

        Reviewed by Dimitri Glazkov.

        [chromium] clear out more deprecated methods that are no longer used
        https://bugs.webkit.org/show_bug.cgi?id=38702

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

2010-05-07  Finnur Thorarinsson  <finnur.webkit@gmail.com>

        Reviewed by Dimitri Glazkov.

        [chromium]: Fixing Find in page crash on sites.google.com
        https://bugs.webkit.org/show_bug.cgi?id=38591
        
        setMarkerActive should not try to set a collapsed marker as
        active. This can happen when you Edit a Sites page after doing
        a Find operation and then you press FindNext.
        
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::setMarkerActive):

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

        Reviewed by Dimitri Glazkov.

        [DRT/Chromium] Add support for resources on Mac
        https://bugs.webkit.org/show_bug.cgi?id=38637

        * DEPS: Check out tools/data_pack.

2010-05-06  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Timothy Hatcher.

        Chromium Dev Tools: Large toolbar icons flash when dev
        tools is opened in docked mode.

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

        * src/js/DevTools.js:
        (devtools.domContentLoaded):

2010-05-06  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        drop support for sessionStorage in sandbox iframes
        https://bugs.webkit.org/show_bug.cgi?id=38151

        Update client of sessionStorage to handle exceptions.

        * src/StorageAreaProxy.cpp:
        (WebCore::StorageAreaProxy::storageEvent):

2010-05-05  Darin Fisher  <darin@chromium.org>

        Reviewed by Dimitri Glazkov.

        [chromium] clear out deprecated methods that are no longer used
        https://bugs.webkit.org/show_bug.cgi?id=38610

        * public/WebFormElement.h:
        * public/WebInputElement.h:
        * public/WebKitClient.h:
        * public/WebView.h:
        * public/WebViewClient.h:
        (WebKit::WebViewClient::createPopupMenu):
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::popupOpened):
        * src/WebFormElement.cpp:
        * src/WebInputElement.cpp:
        (WebKit::WebInputElement::setSelectionRange):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::hideSuggestionsPopup):
        * src/WebViewImpl.h:

2010-05-05  Hans Wennborg  <hans@chromium.org>

        Reviewed by Jeremy Orlow.

        [chromium] Add quota parameter to  WebStorageNamespace::createSessionStorageNamespace
        https://bugs.webkit.org/show_bug.cgi?id=38589

        * public/WebStorageNamespace.h:
        (WebKit::WebStorageNamespace::createSessionStorageNamespace):
        * src/WebStorageNamespaceImpl.cpp:
        (WebKit::WebStorageNamespace::createSessionStorageNamespace):

2010-05-05  Stuart Morgan  <stuartmorgan@chromium.org>

        Reviewed by Darin Fisher.

        Update the plugin container's setFocus implementation to pass the new
        boolean argument to the next layer.

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

        * src/WebPluginContainerImpl.cpp:
        (WebKit::WebPluginContainerImpl::setFocus):
        * src/WebPluginContainerImpl.h:

2010-05-04  Vangelis Kokkevis  <vangelis@chromium.org>

        Reviewed by Darin Fisher.

        Provide an API for querying whether a WebWidget is using gpu accelerated compositing.
        Also changed: isAcceleratedCompositing to: isAcceleratedCompositingActive.
        https://bugs.webkit.org/show_bug.cgi?id=38220

        * public/WebWidget.h:
        * src/WebPopupMenuImpl.h:
        (WebKit::WebPopupMenuImpl::isAcceleratedCompositingActive):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::WebViewImpl):
        (WebKit::WebViewImpl::paint):
        (WebKit::WebViewImpl::isAcceleratedCompositingActive):
        (WebKit::WebViewImpl::setRootGraphicsLayer):
        (WebKit::WebViewImpl::setIsAcceleratedCompositingActive):
        (WebKit::WebViewImpl::updateRootLayerContents):
        * src/WebViewImpl.h:

2010-04-29  John Gregg  <johnnyg@google.com>

        Reviewed by Dmitry Titov.

        notifications should have dir and replaceId attributes
        https://bugs.webkit.org/show_bug.cgi?id=38336

        * public/WebNotification.h:
        * src/WebNotification.cpp:
        (WebKit::WebNotification::dir):
        (WebKit::WebNotification::replaceId):

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

        Reviewed by David Levin.

        [chromium] Make the select popup not close on right/middle clicks.
        https://bugs.webkit.org/show_bug.cgi?id=38473

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

2010-05-03  Abhishek Arya  <inferno@chromium.org>

        Reviewed by Adam Barth.

        Add support for controlling clipboard access from javascript.
        Clipboard access from javascript is disabled by default.
        https://bugs.webkit.org/show_bug.cgi?id=27751

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

2010-05-03  Jens Alfke  <snej@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Add "willSendSubmitEvent" hook to WebFrameClient and FrameLoaderClient
        https://bugs.webkit.org/show_bug.cgi?id=38397

        No tests (functionality is exposed only through native WebKit API.)

        * public/WebFrameClient.h:
        (WebKit::WebFrameClient::willSendSubmitEvent): New empty method
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::dispatchWillSendSubmitEvent): Delegate to client
        * src/FrameLoaderClientImpl.h:

2010-05-02  Michael Nordman  <michaeln@google.com>

        Reviewed by Dmitry Titov.

        Define two new ResourceRequestBase TargetTypes for worker and shared worker
        main resources. Use the new target types where appropiate. Add logic to marshal
        the target type specified by requests initiated on a background worker thread.

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

        * src/SharedWorkerRepository.cpp:  use TargetIsSharedWorker
        (WebCore::SharedWorkerScriptLoader::SharedWorkerScriptLoader):

2010-05-02  Rafael Weinstein  <rafaelw@chromium.org>

        Reviewed by Darin Fisher.

        Include WebWindowFeatures in call to WebViewClient::createView.
        https://bugs.webkit.org/show_bug.cgi?id=38301

        * public/WebViewClient.h:
        (WebKit::WebViewClient::createView):
        * public/WebWindowFeatures.h:
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::createWindow):

2010-05-01  Evan Stade  <estade@chromium.org>

        Reviewed by David Levin

        [chromium] Skia needs to fade DragImages
        https://bugs.webkit.org/show_bug.cgi?id=38008

        * tests/DragImageTest.cpp:
        (DragImageTest.CreateDragImage): test that the drag image is a deep copy

2010-04-30  Jian Li  <jianli@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Add WebFileSystem interface and hook up with all FileSystem methods.
        https://bugs.webkit.org/show_bug.cgi?id=38228

        * WebKit.gyp:
        * public/WebFileSystem.h: Added.
        * public/WebKitClient.h:
        (WebKit::WebKitClient::fileSystem):
        * src/ChromiumBridge.cpp:
        (WebCore::ChromiumBridge::fileExists):
        (WebCore::ChromiumBridge::deleteFile):
        (WebCore::ChromiumBridge::deleteEmptyDirectory):
        (WebCore::ChromiumBridge::getFileSize):
        (WebCore::ChromiumBridge::getFileModificationTime):
        (WebCore::ChromiumBridge::directoryName):
        (WebCore::ChromiumBridge::pathByAppendingComponent):
        (WebCore::ChromiumBridge::makeAllDirectories):
        (WebCore::ChromiumBridge::getAbsolutePath):
        (WebCore::ChromiumBridge::isDirectory):
        (WebCore::ChromiumBridge::filePathToURL):
        (WebCore::ChromiumBridge::openFile):
        (WebCore::ChromiumBridge::closeFile):
        (WebCore::ChromiumBridge::seekFile):
        (WebCore::ChromiumBridge::truncateFile):
        (WebCore::ChromiumBridge::readFromFile):
        (WebCore::ChromiumBridge::writeToFile):

2010-04-29  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Darin Fisher.

        Change StorageEvent.uri to StorageEvent.url to match the spec
        https://bugs.webkit.org/show_bug.cgi?id=38331

        Get rid of a stale FIXME and combine 2 lines that needn't be split.

        * src/StorageEventDispatcherImpl.cpp:
        (WebCore::StorageEventDispatcherImpl::dispatchStorageEvent):

2010-04-29  Anton Muhin  <antonm@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Consider implementing addOriginAccessWhitelistEntry method
        http://trac.webkit.org/changeset/57537 introduced a new method
        to manage whitelisting of origins.
        Expose this method in Chromium's bridge.
        https://bugs.webkit.org/show_bug.cgi?id=37578

        * public/WebSecurityPolicy.h: Start renaming (keep old function names) and add new removeOriginAccessWhitelistEntry method
        * src/WebSecurityPolicy.cpp: Start renaming (keep old function names) and add new removeOriginAccessWhitelistEntry method

2010-04-29  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r58498.
        http://trac.webkit.org/changeset/58498
        https://bugs.webkit.org/show_bug.cgi?id=38332

        "Broke a bunch of tests on Chromium canaries" (Requested by
        dglazkov on #webkit).

        * public/WebViewClient.h:
        (WebKit::WebViewClient::createView):
        * public/WebWindowFeatures.h:
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::createWindow):

2010-04-29  Adam Langley  <agl@chromium.org>

        Unreviewed, DEPS roll.

        WebKit's r58517 needs OTS's r30 which was rolled into Chromium in
        r45932.

        * DEPS:
          Use Chromium r45932.

2010-04-29  Rafael Weinstein  <rafaelw@chromium.org>

        Reviewed by Darin Fisher.

        Include WindowFeatures in call to WebViewClient::createView.

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

        * public/WebViewClient.h:
        (WebKit::WebViewClient::createView):
        * public/WebWindowFeatures.h:
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::createWindow):

2010-04-29  Garret Kelly  <gdk@chromium.org>

        Reviewed by Darin Fisher.

        Expose the RuntimeFeature for touch events through the
        WebRuntimeFeatures mechanism.
        https://bugs.webkit.org/show_bug.cgi?id=37486

        * public/WebRuntimeFeatures.h:
        * src/WebRuntimeFeatures.cpp:
        (WebKit::WebRuntimeFeatures::enableTouch):
        (WebKit::WebRuntimeFeatures::isTouchEnabled):

2010-04-29  Zhenyao Mo  <zmo@google.com>

        Reviewed by Dimitri Glazkov.

        Remove the unnecessary texImage2D function with Image as input in GraphicsContext3D
        https://bugs.webkit.org/show_bug.cgi?id=38235

        * src/GraphicsContext3D.cpp: Remove tex*image implementation with Image input.

2010-04-28  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: Allow editing script resources when resource tracking is enabled.

        http://bugs.webkit.org/show_bug.cgi?id=38269
 
        * src/js/DebuggerAgent.js:
        * src/js/InspectorControllerImpl.js:
        (.devtools.InspectorBackendImpl.prototype.setBreakpoint):
        (.devtools.InspectorBackendImpl.prototype.editScriptSource):

2010-04-28  Darin Fisher  <darin@chromium.org>

        Reviewed by David Levin.

        [Chromium] callOnMainThread should equate to MessageLoop::PostTask
        https://bugs.webkit.org/show_bug.cgi?id=38276

        * public/WebKitClient.h:
        (WebKit::WebKitClient::callOnMainThread):
        * src/ChromiumThreading.cpp:
        (WTF::ChromiumThreading::callOnMainThread):

2010-04-27  John Abd-El-Malek  <jam@chromium.org>

        Reviewed by Darin Fisher.

        Make WebThemeEngine::paint take a const ref of ExtraParams
        https://bugs.webkit.org/show_bug.cgi?id=38242

        * public/WebThemeEngine.h:
        (WebKit::WebThemeEngine::paint):

2010-04-28  Andrey Kosyakov  <caseq@chromium.org>

        Reviewed by Pavel Feldman.

        Fixed passing breakpoints to V8. 
        https://bugs.webkit.org/show_bug.cgi?id=38266

        * src/js/InspectorControllerImpl.js:
        (.devtools.InspectorBackendImpl.prototype.setBreakpoint):

2010-04-28  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Support pause on exceptions in v8 implementation of ScriptDebugServer.

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

        * src/js/DebuggerScript.js:
        (debuggerScriptConstructor.DebuggerScript.getScripts):
        (debuggerScriptConstructor.DebuggerScript.pauseOnExceptionsState):
        (debuggerScriptConstructor.DebuggerScript.setPauseOnExceptionsState):
        (debuggerScriptConstructor.DebuggerScript._v8ToWebkitLineNumber):
        (debuggerScriptConstructor):

2010-04-27  Jens Alfke  <snej@chromium.org>

        Reviewed by Eric Seidel.

        [chromium] Fix bug that prevents autosave of forms without action attribute
        https://bugs.webkit.org/show_bug.cgi?id=38014
        Change is in the Chromium WebKit API so it can't be tested with a JS-based layout test.
        It needs a native unit test, which would go in the Chromium repo, not WebKit.

        * src/WebPasswordFormData.cpp:
        (WebKit::WebPasswordFormData::WebPasswordFormData): Set correct URL if action is NULL

2010-04-27  Michael Nordman  <michaeln@google.com>

        Reviewed by Dmitry Titov.

        [Chromium] Add two things to the webkit API to support appcaches in workers.
        1) WebURLRequest TargetTypes for worker and shared worker main resources.
        2) Factory method on class WebCommonWorkerClient to
           createApplicationCacheHost() for the associated worker.

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

        * public/WebCommonWorkerClient.h: add the factory method
        * public/WebURLRequest.h: add the TargetTypes
        * src/WebWorkerBase.cpp: call the embedder's factory when needed
        (WebKit::WebWorkerBase::didCreateDataSource)
        (WebKit::WebWorkerBase::createApplicationCacheHost)
        * src/WebWorkerBase.h: ditto
        * src/WebWorkerClientImpl.h: add a stub impl of the factory method 
        (WebKit::WebWorkerClientImpl::createApplicationCacheHost):

2010-04-27  Kent Tamura  <tkent@chromium.org>

        Reviewed by Shinichiro Hamaji.

        [DRT/Chromium] Enable Windows project generation
        https://bugs.webkit.org/show_bug.cgi?id=38103

        - Avoid platform.system(), which causes a crash with python.exe in
          depot_tools. Use sys.platform instead.
        - Process DumpRenderTree.gyp on all platforms.

        * gyp_webkit:

2010-04-27  Jay Civelli  <jcivelli@chromium.org>

        Reviewed by Darin Fisher.

        Makes clicking a select element close its associated popup if
        it is open.
        https://bugs.webkit.org/show_bug.cgi?id=38105

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

2010-04-27  Jay Civelli  <jcivelli@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Merged the WebView public method to close suggestion popups
        into a single method to close all popups (select and suggestions).
        That ensures select popups are closed when the browser window is moved
        or resized.
        https://bugs.webkit.org/show_bug.cgi?id=37837

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

2010-04-27  John Abd-El-Malek  <jam@chromium.org>

        Reviewed by Darin Adler.

        Remove unnecessary header now that Chrome is updated
        https://bugs.webkit.org/show_bug.cgi?id=38211

        * public/win/WebThemeEngine.h: Removed.

2010-04-27  Jens Alfke  <snej@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Add some notifications and an accessor to WebKit API
        https://bugs.webkit.org/show_bug.cgi?id=37625

        * public/WebFrameClient.h:
        (WebKit::WebFrameClient::didFirstLayout):
        (WebKit::WebFrameClient::didFirstVisuallyNonEmptyLayout):
        * public/WebNode.h:
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::dispatchDidFirstLayout):
        (WebKit::FrameLoaderClientImpl::dispatchDidFirstVisuallyNonEmptyLayout):
        * src/WebElement.cpp:
        * src/WebNode.cpp:
        (WebKit::WebNode::hasNonEmptyBoundingBox):

2010-04-27  Darin Fisher  <darin@chromium.org>

        Reviewed by Dimitri Glazkov.

        [Chromium] Remove deprecated form of didChangeLocationWithinPage
        https://bugs.webkit.org/show_bug.cgi?id=38178

        * public/WebFrameClient.h:
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::dispatchDidNavigateWithinPage):

2010-04-27  Evan Martin  <evan@chromium.org>

        Reviewed by David Levin.

        [chromium] bold bengali text not rendered properly on Linux
        Roll forward Chrome DEPS so we get new Skia API.

        * DEPS: update Chrome to r45696.

2010-04-27  Andrey Kosyakov  <caseq@chromium.org>

        Reviewed by Pavel Feldman.

        Restore breakpoints associated with script's URL once
        script is parsed.
        https://bugs.webkit.org/show_bug.cgi?id=38132

        * src/js/DebuggerAgent.js:
        (devtools.DebuggerAgent.prototype.initUI):
        (devtools.DebuggerAgent.prototype.addBreakpoint):
        (devtools.DebuggerAgent.prototype.addScriptInfo_):
        (devtools.DebuggerAgent.prototype.restoreBreakpoints_):
        (devtools.BreakpointInfo):
        (devtools.BreakpointInfo.prototype.enabled):
        (devtools.BreakpointInfo.prototype.condition):

2010-04-27  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Yury Semikhatsky.

        Chrome Dev Tools: Further beautify themes.

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

        * src/js/DevTools.js:
        (WebInspector.setToolbarColors):
        * src/js/devTools.css:
        (body.platform-windows #toolbar, body.platform-windows.inactive #toolbar):

2010-04-26  John Abd-El-Malek  <jam@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Prepare to making WebThemeEngine cross-platform
        https://bugs.webkit.org/show_bug.cgi?id=38077

        * WebKit.gyp:
        * public/WebThemeEngine.h: Added.
        * public/win/WebThemeEngine.h:

2010-04-26  Darin Fisher  <darin@chromium.org>

        Reviewed by Adam Barth.

        [Chromium] Crash after calling window.print() on a window object that has been closed.
        https://bugs.webkit.org/show_bug.cgi?id=38148

        It is unfortunately not possible to write a layout test for this as the
        crash occurs in an API that is only called by Chrome while showing a
        print dialog.

        * src/WebViewImpl.cpp:
        (WebKit::WebView::willEnterModalLoop):
        (WebKit::WebView::didExitModalLoop):

2010-04-25  Sam Weinig  <sam@webkit.org>

        Reviewed by Maciej Stachowiak.

        Fix for https://bugs.webkit.org/show_bug.cgi?id=38097
        Disentangle initializing the main thread from initializing threading

        * src/WebKit.cpp:
        (WebKit::initialize): Add call to initializeMainThread.
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::WebViewImpl): Ditto.

2010-04-26  Roman Gershman  <romange@google.com>

        Reviewed by Adam Barth.

        [Chromium] Font size in suggestions popup menu should be correlated with the font size of its text field.

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

        * src/SuggestionsPopupMenuClient.cpp:
        (WebKit::SuggestionsPopupMenuClient::initialize):

2010-04-26  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Yury Semikhatsky.

        Chromium Dev Tools: brush up images.

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

        * WebKit.gypi:
        * src/js/DevTools.js:
        (WebInspector.setToolbarColors):
        * src/js/Images/segmentChromium.png:
        * src/js/Images/segmentChromium2.png: Removed.
        * src/js/Images/segmentHoverChromium2.png: Removed.
        * src/js/Images/segmentSelectedChromium2.png: Removed.
        * src/js/Images/statusbarBackgroundChromium.png:
        * src/js/Images/statusbarBackgroundChromium2.png: Removed.
        * src/js/Images/statusbarBottomBackgroundChromium.png:
        * src/js/Images/statusbarButtonsChromium.png:
        * src/js/Images/statusbarMenuButtonChromium.png:
        * src/js/Images/statusbarMenuButtonChromium2.png: Removed.
        * src/js/devTools.css:
        (.section > .header):
        (.console-group-messages .section > .header):
        (#resources-filter):
        (.crumbs .crumb):
        (.crumbs .crumb.end):
        (.crumbs .crumb.selected):
        (.crumbs .crumb.selected:hover):
        (.crumbs .crumb.selected.end, .crumbs .crumb.selected.end:hover):
        (.crumbs .crumb:hover):
        (.crumbs .crumb.dimmed:hover):
        (.crumbs .crumb.end:hover):
        (body.drawer-visible #main-status-bar):
        (.status-bar):
        (button.status-bar-item):
        (select.status-bar-item:active):
        (#drawer):
        (select.status-bar-item):

2010-04-23  Zhenyao Mo  <zmo@google.com>

        Reviewed by Darin Fisher.

        Add isGLES2Compliant to GraphicsContext3D: make the method const.
        https://bugs.webkit.org/show_bug.cgi?id=37872

        * src/GraphicsContext3D.cpp: Make isGLES2Compliant() const.
        (WebCore::GraphicsContext3DInternal::isGLES2Compliant):
        (WebCore::GraphicsContext3D::isGLES2Compliant):

2010-04-23  Rafael Weinstein  <rafaelw@grafaelw.sfo.corp.google.com>

        Reviewed by Darin Fisher.

        This patch adds a WebWindowFeatures binding struct for the
        chromium client in anticipation of a follow-on patch which will
        pass it to WebViewClient::createWindow.

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

        * public/WebViewClient.h:
        (WebKit::WebViewClient::createView):
        * public/WebWindowFeatures.h: Added.
        (WebKit::WebWindowFeatures::WebWindowFeatures):
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::createWindow):

2010-04-22  Zhenyao Mo  <zmo@google.com>

        Reviewed by Darin Fisher.

        Add isGLES2Compliant to GraphicsContext3D
        https://bugs.webkit.org/show_bug.cgi?id=37872

        * public/WebGraphicsContext3D.h: Add isGLES2Compliant().
        * src/GraphicsContext3D.cpp: Ditto.
        * src/WebGraphicsContext3DDefaultImpl.cpp: Ditto.
        (WebKit::WebGraphicsContext3DDefaultImpl::isGLES2Compliant):
        * src/WebGraphicsContext3DDefaultImpl.h: Ditto.

2010-04-22  Dave Moore  <davemoore@chromium.org>

        Reviewed by Dimitri Glazkov.

        Added notification when the favicons for a page are changed
        from a script.
        The Document object will notify the frame loader, which will
        notify the client. Implementations of FrameLoaderClient will
        have to add one method; dispatchDidChangeIcons().

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

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

2010-04-22  Zhenyao Mo  <zmo@google.com>

        Reviewed by Dimitri Glazkov.

        Emulate GL_IMPLEMENTATION_COLOR_READ_FORMAT/TYPE for glGet
        https://bugs.webkit.org/show_bug.cgi?id=37281

        * src/WebGraphicsContext3DDefaultImpl.cpp:
        (WebKit::WebGraphicsContext3DDefaultImpl::getIntegerv): Emulate two  enums.

2010-04-22  Adam Barth  <abarth@webkit.org>

        Unreviewed, rolling out r58069.
        http://trac.webkit.org/changeset/58069
        https://bugs.webkit.org/show_bug.cgi?id=27751

        Broke compile on Windows.

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

2010-04-22  Tony Chang  <tony@chromium.org>

        Reviewed by Shinichiro Hamaji.

        [chromium] roll chromium deps to pick up some windows build fixes
        https://bugs.webkit.org/show_bug.cgi?id=37972

        * DEPS:

2010-04-22  Abhishek Arya  <inferno@chromium.org>

        Reviewed by Adam Barth.

        Add support for controlling clipboard access from javascript.
        Clipboard access from javascript is disabled by default.
        https://bugs.webkit.org/show_bug.cgi?id=27751

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

2010-04-21  Tony Chang  <tony@chromium.org>

        Reviewed by Shinichiro Hamaji.

        [chromium] gyp_webkit should be executable
        https://bugs.webkit.org/show_bug.cgi?id=37971

        * gyp_webkit: Added property svn:executable.

2010-04-21  Jay Civelli  <jcivelli@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Don't notify the WebView that a popup was
        opened when the popup is handled externally, as the popup
        is in that case transparent to the WebView.
        The notification was causing an ASSERT on Mac (where
        the popup is handled externally) as there would be no
        notification that the popup was closed.
        https://bugs.webkit.org/show_bug.cgi?id=37825

        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::popupOpened):

2010-04-21  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r58028.
        http://trac.webkit.org/changeset/58028
        https://bugs.webkit.org/show_bug.cgi?id=37962

        broke the chromium build (Requested by tony^work on #webkit).

        * DEPS:

2010-04-21  Evan Martin  <evan@chromium.org>

        Unreviewed, just a dependency change.

        [chromium] roll skia forward to r538
        https://bugs.webkit.org/show_bug.cgi?id=37960

        This will cause a bunch of pixel tests to fail due to bulleted
        lists rendering slightly differently.  I will grab new baselines
        from the bots and check them in in a followup.

        * DEPS:

2010-04-21  Evan Stade  <estade@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Web page serializer saves tag names in upper case
        https://bugs.webkit.org/show_bug.cgi?id=37940

        Simply convert all tags to lower case.

        This is tested by chrome tests:
         - save page browser tests
         - encoding ui tests
         - web page serializer test shell tests

        * src/WebPageSerializer.cpp:
        (WebKit::WebPageSerializer::generateMetaCharsetDeclaration):
        (WebKit::WebPageSerializer::generateBaseTagDeclaration):
        * src/WebPageSerializerImpl.cpp:
        (WebKit::WebPageSerializerImpl::openTagToString):
        (WebKit::WebPageSerializerImpl::endTagToString):

2010-04-20  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        Factor DocumentWriter out of FrameLoader
        https://bugs.webkit.org/show_bug.cgi?id=37175

        Update these callsites because the method moved to DocumentWriter.

        * src/ContextMenuClientImpl.cpp:
        (WebKit::ContextMenuClientImpl::getCustomMenuFromDefaultItems):
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::finishedLoading):
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::encoding):
        (WebKit::WebFrameImpl::commitDocumentData):
        * src/WebPageSerializerImpl.cpp:
        (WebKit::WebPageSerializerImpl::preActionBeforeSerializeOpenTag):
        (WebKit::WebPageSerializerImpl::serialize):
        * src/WebSearchableFormData.cpp:
        (WebCore::GetFormEncoding):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::pageEncoding):

2010-04-20  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Timothy Hatcher.

        Web Inspector: add basic script editing capabilities to the front-end.

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

        * src/js/DebuggerAgent.js:
        (devtools.DebuggerAgent.prototype.resolveScriptSource.this.requestSeqToCallback_.cmd.getSequenceNumber):
        (devtools.DebuggerAgent.prototype.resolveScriptSource):
        (devtools.DebuggerAgent.prototype.editScriptLine.this.requestSeqToCallback_.cmd.getSequenceNumber):
        (devtools.DebuggerAgent.prototype.editScriptLine):
        (devtools.DebuggerAgent.prototype.handleDebuggerOutput_):
        * src/js/DevTools.js:
        * src/js/InspectorControllerImpl.js:
        (.devtools.InspectorBackendImpl.prototype.editScriptLine):

2010-04-20  Kent Tamura  <tkent@chromium.org>

        Reviewed by Darin Adler.

        Change a parameter type of chooseIconForFiles()
        https://bugs.webkit.org/show_bug.cgi?id=37504

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

2010-04-20  Jay Civelli  <jcivelli@chromium.org>

        Reviewed by Dimitri Glazkov.

        [chromium] Tests that pressing tab now closes the select popup.
        https://bugs.webkit.org/show_bug.cgi?id=37721

        * tests/PopupMenuTest.cpp:
        (WebKit::TEST_F):

2010-04-20  Evan Stade  <estade@chromium.org>

        Reviewed by David Levin.

        [chromium] crash when dragging images
        https://bugs.webkit.org/show_bug.cgi?id=37715

        Added unit tests for DragImageChromiumSkia.

        * WebKit.gyp:
        * tests/DragImageTest.cpp: Added.
        (WebCore::TestImage::TestImage):
        (WebCore::TestImage::~TestImage):
        (WebCore::TestImage::size):
        (WebCore::TestImage::nativeImageForCurrentFrame):
        (WebCore::TestImage::destroyDecodedData):
        (WebCore::TestImage::decodedSize):
        (WebCore::TestImage::draw):
        (WebCore::TEST):

2010-04-20  Stuart Morgan  <stuartmorgan@chromium.org>

        Reviewed by David Levin.

        Remove a workaround in plugin cursor setting that was obsoleted by
        the change in https://bugs.webkit.org/show_bug.cgi?id=35132
        https://bugs.webkit.org/show_bug.cgi?id=37811

        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::ChromeClientImpl):
        (WebKit::ChromeClientImpl::setCursor):
        (WebKit::ChromeClientImpl::setCursorForPlugin):
        * src/ChromeClientImpl.h:

2010-04-19  Ada Chan  <adachan@apple.com>

        Reviewed by Jeremy Orlow.

        https://bugs.webkit.org/show_bug.cgi?id=37717
        Changes needed now that StorageNamespaceImpl::sessionStorageNamespace() and
        StorageNamespace::sessionStorageNamespace() take in a quota parameter.

        * src/StorageNamespaceProxy.cpp:
        (WebCore::StorageNamespace::sessionStorageNamespace):
        * src/WebStorageNamespaceImpl.cpp:
        (WebKit::WebStorageNamespace::createSessionStorageNamespace):

2010-04-17  Vangelis Kokkevis  <vangelis@chromium.org>

        Reviewed by Dimitri Glazkov.

        Adding the implementation of GLES2Context class which provides WebCore access to a GL ES context.
        https://bugs.webkit.org/show_bug.cgi?id=37541

        * WebKit.gyp:
        * public/WebGLES2Context.h: Added.
        (WebKit::WebGLES2Context::~WebGLES2Context):
        * src/GLES2Context.cpp: Added.
        (WebCore::GLES2ContextInternal::GLES2ContextInternal):
        (WebCore::GLES2ContextInternal::~GLES2ContextInternal):
        (WebCore::GLES2ContextInternal::getWebGLES2Context):
        (WebCore::GLES2ContextInternal::initialize):
        (WebCore::GLES2Context::create):
        (WebCore::GLES2Context::~GLES2Context):
        (WebCore::GLES2Context::initialize):
        (WebCore::GLES2Context::makeCurrent):
        (WebCore::GLES2Context::destroy):
        (WebCore::GLES2Context::swapBuffers):

2010-04-16  Dumitru Daniliuc  <dumi@chromium.org>

        Reviewed by Eric Seidel.

        Get rid of the UNUSED_PARAM macro in GraphicsContext3D.cpp.
        https://bugs.webkit.org/show_bug.cgi?id=37733

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

2010-04-16  Dumitru Daniliuc  <dumi@chromium.org>

        Reviewed by Jeremy Orlow.

        Changing the return type of WebSecurityOrigin::createFromDatabaseIdentifier().
        https://bugs.webkit.org/show_bug.cgi?id=34466

        Changing the return type of
        WebSecurityOrigin::createFromDatabaseIdentifier() from
        WebSecurityOrigin* to WebSecurityOrigin, to make it more
        consistent with the other WebSecurityOrigin methods.

        * public/WebSecurityOrigin.h:
        * src/WebDatabase.cpp:
        (WebKit::WebDatabase::closeDatabaseImmediately):
        * src/WebSecurityOrigin.cpp:
        (WebKit::WebSecurityOrigin::createFromDatabaseIdentifier):

2010-04-16  Dmitry Titov  <dimich@chromium.org>

        Reviewed by Yury Semikhatsky.

        [v8] In Workers, script errors right after close() are not delivered to the Worker.onerror
        https://bugs.webkit.org/show_bug.cgi?id=37691

        * src/WebWorkerClientImpl.cpp:
        (WebKit::WebWorkerClientImpl::createWorkerContextProxy): Don't need to pull V8 proxy to retrieve current WorkerContext.

2010-04-16  Albert J. Wong  <ajwong@chromium.org>

        Not reviewed. Build fix.

        [chromium] Compile fix. Missing include header, and missing type conversion.

        * src/GraphicsContext3D.cpp:
        (WebCore::GraphicsContext3DInternal::beginPaint):

2010-04-16  Jarkko Sakkinen  <jarkko.j.sakkinen@gmail.com>
 
        Reviewed by Simon Hausmann.
 
        [Qt] WebGL is not visible when QGLWidget viewport is used
        https://bugs.webkit.org/show_bug.cgi?id=37070
 
        Added HostWindow parameter to the constructor of GraphicsContext3D.
        Shared OpenGL context is initialized with parent QGLWidget.
 
        * src/GraphicsContext3D.cpp:
        (WebCore::GraphicsContext3D::GraphicsContext3D):

2010-04-16  Fumitoshi Ukai  <ukai@chromium.org>

        Reviewed by Jian Li.

        [chromium] WebKit::WebURLResponse::addHTTPHeaderField will crash if response is invalid UTF-8
        https://bugs.webkit.org/show_bug.cgi?id=37687

        * src/WebURLResponse.cpp:
        (WebKit::WebURLResponse::addHTTPHeaderField): ignore if name or value is null string.

2010-04-16  Jay Civelli  <jcivelli@chromium.org>

        Reviewed by Dimitri Glazkov.

        [chromium] Select popups would assert when destroyed.
        Also adding unit-tests for the select popup code.
        https://bugs.webkit.org/show_bug.cgi?id=37436

        * WebKit.gyp:
        * src/WebViewImpl.h:
        (WebKit::WebViewImpl::selectPopup):
        * tests/PopupMenuTest.cpp: Added.

2010-04-16  Tony Chang  <tony@chromium.org>

        Reviewed by Dimitri Glazkov.

        [chromium] build DRT on Linux
        https://bugs.webkit.org/show_bug.cgi?id=37690

        * DEPS: Need to roll deps to remove a dependency on src/chrome
        * gyp_webkit: generate makefiles for DRT.gyp on Linux

2010-04-15  Tony Chang  <tony@chromium.org>

        Reviewed by Dimitri Glazkov.

        build DRT on chromium mac
        https://bugs.webkit.org/show_bug.cgi?id=37639

        * gyp_webkit: generate build files for DRT on mac

2010-04-15  Yury Semikhatsky  <yurys@google.com>

        Reviewed by Pavel Feldman.

        Support basic debugging capabilities including step in/over/out in v8
        implementation of ScriptDebugServer.

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

        * WebKit.gypi:
        * src/DebuggerAgent.h:
        * src/DebuggerAgentImpl.cpp:
        (WebKit::DebuggerAgentImpl::setDebuggerScriptSource):
        * src/DebuggerAgentImpl.h:
        * src/DebuggerAgentManager.cpp:
        (WebKit::DebuggerAgentManager::hostDispatchHandler):
        (WebKit::DebuggerAgentManager::debugAttach):
        (WebKit::DebuggerAgentManager::debugDetach):
        (WebKit::DebuggerAgentManager::setMessageLoopDispatchHandler):
        * src/DebuggerAgentManager.h:
        * src/InspectorFrontendClientImpl.cpp:
        (WebKit::InspectorFrontendClientImpl::windowObjectCleared):
        * src/js/DebuggerScript.js: Added.
        (debuggerScriptConstructor.DebuggerScript.getAfterCompileScript):
        (debuggerScriptConstructor.DebuggerScript.getScripts):
        (debuggerScriptConstructor.DebuggerScript._formatScript):
        (debuggerScriptConstructor.DebuggerScript.setBreakpoint):
        (debuggerScriptConstructor.DebuggerScript.removeBreakpoint):
        (debuggerScriptConstructor.DebuggerScript.currentCallFrame):
        (debuggerScriptConstructor.DebuggerScript.stepIntoStatement):
        (debuggerScriptConstructor.DebuggerScript.stepOverStatement):
        (debuggerScriptConstructor.DebuggerScript.stepOutOfFunction):
        (debuggerScriptConstructor.DebuggerScript.clearBreakpoints):
        (debuggerScriptConstructor.DebuggerScript.setBreakpointsActivated):
        (debuggerScriptConstructor.DebuggerScript._frameMirrorToJSCallFrame):
        (debuggerScriptConstructor.DebuggerScript._webkitToV8LineNumber):
        (debuggerScriptConstructor.DebuggerScript._v8ToWwebkitLineNumber):
        (debuggerScriptConstructor):
        * src/js/DevTools.js:
        (WebInspector.loaded):
        (.):
        ():
        * src/js/DevToolsHostStub.js:
        (.RemoteDebuggerAgentStub.prototype.setDebuggerScriptSource):
        * src/js/InspectorControllerImpl.js:
        (devtools.InspectorBackendImpl):

2010-04-15  Matt Perry  <mpcomplete@chromium.org>

        Reviewed by Dimitri Glazkov.

        Implement layoutTestController's addUserStyleSheet and
        setAuthorAndUserStylesEnabled on Chromium port.
        https://bugs.webkit.org/show_bug.cgi?id=37595

        * public/WebSettings.h:
        * public/WebView.h:
        * src/WebSettingsImpl.cpp:
        (WebKit::WebSettingsImpl::setAuthorAndUserStylesEnabled):
        * src/WebSettingsImpl.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::addUserStyleSheet):
        * src/WebViewImpl.h:

2010-04-15  Zhenyao Mo  <zmo@google.com>

        Reviewed by Dimitri Glazkov.

        Must enable GL_VERTEX_PROGRAM_POINT_SIZE during initialization
        https://bugs.webkit.org/show_bug.cgi?id=37178

        * src/WebGraphicsContext3DDefaultImpl.cpp: Enable GL_VERTEX_PROGRAM_POINT_SIZE during initialization.
        (WebKit::WebGraphicsContext3DDefaultImpl::initialize):

2010-04-15  Albert J. Wong  <ajwong@chromium.org>

        Unreviewed, rolling out r57660.
        http://trac.webkit.org/changeset/57660
        https://bugs.webkit.org/show_bug.cgi?id=37604

        Broke a large number of inspector layout tests in chromium.

        * WebKit.gypi:
        * src/DebuggerAgent.h:
        * src/DebuggerAgentImpl.cpp:
        * src/DebuggerAgentImpl.h:
        * src/DebuggerAgentManager.cpp:
        (WebKit::DebuggerAgentManager::debugAttach):
        (WebKit::DebuggerAgentManager::debugDetach):
        (WebKit::DebuggerAgentManager::setMessageLoopDispatchHandler):
        * src/DebuggerAgentManager.h:
        * src/InspectorFrontendClientImpl.cpp:
        (WebKit::InspectorFrontendClientImpl::windowObjectCleared):
        * src/js/DebuggerScript.js: Removed.
        * src/js/DevTools.js:
        (WebInspector.loaded):
        (WebInspector.UnresolvedPropertyValue):
        ():
        * src/js/DevToolsHostStub.js:
        * src/js/InspectorControllerImpl.js:
        (devtools.InspectorBackendImpl):

2010-04-15  Yury Semikhatsky  <yurys@google.com>

        Reviewed by Pavel Feldman.

        Support basic debugging capabilities including step in/over/out in v8
        implementation of ScriptDebugServer.

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

        * WebKit.gypi:
        * src/DebuggerAgent.h:
        * src/DebuggerAgentImpl.cpp:
        (WebKit::DebuggerAgentImpl::setDebuggerScriptSource):
        * src/DebuggerAgentImpl.h:
        * src/DebuggerAgentManager.cpp:
        (WebKit::DebuggerAgentManager::hostDispatchHandler):
        (WebKit::DebuggerAgentManager::debugAttach):
        (WebKit::DebuggerAgentManager::debugDetach):
        (WebKit::DebuggerAgentManager::setMessageLoopDispatchHandler):
        * src/DebuggerAgentManager.h:
        * src/InspectorFrontendClientImpl.cpp:
        (WebKit::InspectorFrontendClientImpl::windowObjectCleared):
        * src/js/DebuggerScript.js: Added.
        (debuggerScriptConstructor.DebuggerScript.getAfterCompileScript):
        (debuggerScriptConstructor.DebuggerScript.getScripts):
        (debuggerScriptConstructor.DebuggerScript._formatScript):
        (debuggerScriptConstructor.DebuggerScript.setBreakpoint):
        (debuggerScriptConstructor.DebuggerScript.removeBreakpoint):
        (debuggerScriptConstructor.DebuggerScript.currentCallFrame):
        (debuggerScriptConstructor.DebuggerScript.stepIntoStatement):
        (debuggerScriptConstructor.DebuggerScript.stepOverStatement):
        (debuggerScriptConstructor.DebuggerScript.stepOutOfFunction):
        (debuggerScriptConstructor.DebuggerScript.clearBreakpoints):
        (debuggerScriptConstructor.DebuggerScript.setBreakpointsActivated):
        (debuggerScriptConstructor.DebuggerScript._frameMirrorToJSCallFrame):
        (debuggerScriptConstructor.DebuggerScript._webkitToV8LineNumber):
        (debuggerScriptConstructor.DebuggerScript._v8ToWwebkitLineNumber):
        (debuggerScriptConstructor):
        * src/js/DevTools.js:
        (WebInspector.loaded):
        (.):
        ():
        * src/js/DevToolsHostStub.js:
        (.RemoteDebuggerAgentStub.prototype.setDebuggerScriptSource):
        * src/js/InspectorControllerImpl.js:
        (devtools.InspectorBackendImpl):

2010-04-15  Ben Murdoch  <benm@google.com>

        Unreviewed, rolling out r57652.
        http://trac.webkit.org/changeset/57652
        https://bugs.webkit.org/show_bug.cgi?id=37609

        Caused a build break on Chromium Mac and Layout Test fail on
        Qt

        * src/WebInputEventConversion.cpp:
        (WebKit::toPlatformTouchPointState):

2010-04-14  Ben Murdoch  <benm@google.com>

        Reviewed by Kenneth Rohde Christiansen.

        The TouchStationary state of WebCore::PlatformTouchPoint is not
        handled inside the touch event handler.
        https://bugs.webkit.org/show_bug.cgi?id=37609

        After discussions at the WebKit contributors meeting, we decided that
        this is a currently unused state without a good future use case in the
        Touch API and thus decided to remove it. This patch actions that decision.

        * src/WebInputEventConversion.cpp:
        (WebKit::toPlatformTouchPointState): Remove TouchStationary.

2010-04-12  Tony Chang  <tony@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] update chromium DEPS for upstream compile
        https://bugs.webkit.org/show_bug.cgi?id=36578

        * DEPS: Pull sub deps from chromium's DEPS file

2010-04-14  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r57599.
        http://trac.webkit.org/changeset/57599
        https://bugs.webkit.org/show_bug.cgi?id=37605

        "Broke Chromium build" (Requested by dglazkov on #webkit).

        * WebKit.gyp:
        * src/WebViewImpl.h:
        * tests/PopupMenuTest.cpp: Removed.

2010-04-14  Aaron Boodman  <aa@chromium.org>

        Reviewed by David Levin.

        Support relative URLs for notifications on Chromium. They weren't working previously because WebCore was inserting
        the relative URL into a KURL instance, but when KURL is backed by GURL as it is on Chromium, relative URLs are
        unsupported. Fixed by resolving the relative URL first.

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

        Adding tests for this is difficult because we don't currently have DRT support for notifications on Mac, only Windows.

        * public/WebNotification.h: Remove deprecated icon() method.
        * src/WebNotification.cpp: Ditto.

2010-04-14  Jay Civelli  <jcivelli@chromium.org>

        Reviewed by Dimitri Glazkov.

        [chromium] Select popups would assert when destroyed.
        Also adding unit-tests for the select popup code.
        https://bugs.webkit.org/show_bug.cgi?id=37436

        * WebKit.gyp:
        * src/WebViewImpl.h:
        (WebKit::WebViewImpl::selectPopup):
        * tests/PopupMenuTest.cpp: Added.

2010-04-14  Zhenyao Mo  <zmo@google.com>

        Reviewed by Dimitri Glazkov.

        readPixels must take PACK_ALIGNMENT into account
        https://bugs.webkit.org/show_bug.cgi?id=34718

        * src/GraphicsContext3D.cpp: Refactor readPixels.
        * src/WebGraphicsContext3DDefaultImpl.cpp:
        (WebKit::WebGraphicsContext3DDefaultImpl::readBackFramebuffer): Temporarily disable pack alignment for glReadPixels.
        (WebKit::WebGraphicsContext3DDefaultImpl::readPixels): Move array allocation and alpha fix to WebGLRenderingContext; flush before read pixels.

2010-04-14  Mikhail Naganov  <mnaganov@chromium.org>

        Reviewed by Pavel Feldman.

        Re-write testProfilerTab to match the new implementation.

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

        * src/js/Tests.js:
        (.TestSuite.prototype.testProfilerTab.findDisplayedNode):
        (.TestSuite.prototype.testProfilerTab.findVisibleView):
        (.TestSuite.prototype.testProfilerTab):

2010-04-13  Timothy Hatcher  <timothy@apple.com>

        Rename SecurityOrigin::whiteListAccessFromOrigin to addOriginAccessWhitelistEntry.
        And SecurityOrigin::resetOriginAccessWhiteLists to resetOriginAccessWhitelists.

        SecurityOrigin needs a way to remove individual OriginAccessEntries
        https://bugs.webkit.org/show_bug.cgi?id=37449

        Reviewed by Dave Hyatt.

        * src/WebSecurityPolicy.cpp:
        (WebKit::WebSecurityPolicy::whiteListAccessFromOrigin):
        (WebKit::WebSecurityPolicy::resetOriginAccessWhiteLists):

2010-04-13  Mikhail Naganov  <mnaganov@chromium.org>

        Reviewed by Pavel Feldman.

        Fix search behavior in Heap profiles.

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

        * src/js/HeapProfilerPanel.js:

2010-04-13  Jeremy Moskovich  <jeremy@chromium.org>

        Reviewed by David Levin.

        Add some diagnostics to try to track down cause of crash in ArchiveFactory::isArchiveMimeType().

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

        * src/ResourceHandle.cpp: Track state across ResourceHandle invocations.
        (WebCore::ResourceHandleInternal::ResourceHandleInternal):
        (WebCore::ResourceHandleInternal::):
        (WebCore::ResourceHandleInternal::start):
        (WebCore::ResourceHandleInternal::cancel):
        (WebCore::ResourceHandleInternal::didReceiveResponse):
        (WebCore::ResourceHandleInternal::didReceiveData):
        (WebCore::ResourceHandleInternal::didFinishLoading):
        (WebCore::ResourceHandleInternal::didFail):

2010-04-13  Mikhail Naganov  <mnaganov@chromium.org>

        Unreviewed Chromium build fix: pin to a newer V8 revision (4386).

        * DEPS:

2010-04-12  Mikhail Naganov  <mnaganov@chromium.org>

        Reviewed by Yury Semikhatsky.

        Replace hand-written JavaScriptProfile* bindings with idl-based, and
        in Chromium port, bind them to the new V8's profiler API that is
        aligned with JSC.

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

        * src/js/InspectorControllerImpl.js:
        (devtools.InspectorBackendImpl):
        * src/js/ProfilerAgent.js:
        (devtools.ProfilerAgent):
        (devtools.ProfilerAgent.prototype.initializeProfiling):
        (devtools.ProfilerAgent.prototype._didGetActiveProfilerModules):
        (devtools.ProfilerAgent.prototype._didGetLogLines):
        * src/js/Tests.js:

2010-04-11  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r57468.
        http://trac.webkit.org/changeset/57468
        https://bugs.webkit.org/show_bug.cgi?id=37433

        Broke the world...  Must have applied the patch wrong
        (Requested by abarth on #webkit).

        * src/ContextMenuClientImpl.cpp:
        (WebKit::ContextMenuClientImpl::getCustomMenuFromDefaultItems):
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::finishedLoading):
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::encoding):
        (WebKit::WebFrameImpl::commitDocumentData):
        * src/WebPageSerializerImpl.cpp:
        (WebKit::WebPageSerializerImpl::preActionBeforeSerializeOpenTag):
        (WebKit::WebPageSerializerImpl::serialize):
        * src/WebSearchableFormData.cpp:
        (WebCore::GetFormEncoding):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::pageEncoding):

2010-04-11  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        Factor DocumentWriter out of FrameLoader
        https://bugs.webkit.org/show_bug.cgi?id=37175

        Update these callsites because the method moved to DocumentWriter.

        * src/ContextMenuClientImpl.cpp:
        (WebKit::ContextMenuClientImpl::getCustomMenuFromDefaultItems):
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::finishedLoading):
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::encoding):
        (WebKit::WebFrameImpl::commitDocumentData):
        * src/WebPageSerializerImpl.cpp:
        (WebKit::WebPageSerializerImpl::preActionBeforeSerializeOpenTag):
        (WebKit::WebPageSerializerImpl::serialize):
        * src/WebSearchableFormData.cpp:
        (WebCore::GetFormEncoding):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::pageEncoding):

2010-04-11  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r57460.
        http://trac.webkit.org/changeset/57460
        https://bugs.webkit.org/show_bug.cgi?id=37424

        broke chromium builders (Requested by tony^work on #webkit).

        * DEPS:
        * gyp_webkit:

2010-04-11  Tony Chang  <tony@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] update chromium DEPS for upstream compile
        https://bugs.webkit.org/show_bug.cgi?id=36578

        * DEPS:
        * gyp_webkit: Add DumpRenderTree.gyp so we generate xcode projects for DRT.

2010-04-10  Vangelis Kokkevis  <vangelis@chromium.org>

        Reviewed by Dimitri Glazkov.

        Include file change as a result of renaming LayerRenderSkia.h to LayerRenderChromium.h
        https://bugs.webkit.org/show_bug.cgi?id=37231

        * src/WebViewImpl.h:

2010-04-10  Rafael Weinstein  <rafaelw@chromium.org>

        Reviewed by Eric Seidel.

        Cleanup after chromium breakage. All interface methods are
        returned to being abstract.

        * public/WebNotificationPresenter.h:

2010-04-09  Evan Stade  <estade@chromium.org>

        Reviewed by Eric Seidel.

        [chromium] Linux: respect the scale factor during printing
        https://bugs.webkit.org/show_bug.cgi?id=37168

        Chromium doesn't support testing .pdfs from printing at the moment, so
        this change is not covered by any tests.

        * src/WebFrameImpl.cpp:
        (WebKit::ChromePrintContext::spoolPage):

2010-04-09  Aaron Boodman  <aa@chromium.org>

        Reviewed by Eric Seidel.

        Remove applicationID() from WebDocument as it is Chromium-specific.
        https://bugs.webkit.org/show_bug.cgi?id=37350

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

2010-04-09  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Darin Adler.

        Move the IDB::open ExceptionCode paramter to be last
        https://bugs.webkit.org/show_bug.cgi?id=37277

        Move the ExceptionCode paramter to the last position in 
        IndexedDatabaseRequest::open and friends.  It should definitely
        go after the callbacks to keep the parameters that come directly
        from javascript together.  And having output parameters appear
        last is done often in the code base, so it makes sense to push
        it past the Frame* param as well.

        * public/WebIndexedDatabase.h:
        * src/IndexedDatabaseProxy.cpp:
        (WebCore::IndexedDatabaseProxy::open):
        * src/IndexedDatabaseProxy.h:
        * src/WebIndexedDatabaseImpl.cpp:
        (WebKit::WebIndexedDatabaseImpl::open):
        * src/WebIndexedDatabaseImpl.h:

2010-04-09  Jochen Eisinger  <jochen@chromium.org>

        Reviewed by Darin Fisher.

        Complete move of createApplicationCacheHost from WebKitClient to WebFrameClient.
        https://bugs.webkit.org/show_bug.cgi?id=37330

        * public/WebApplicationCacheHost.h:
        * public/WebKitClient.h:
        * src/ApplicationCacheHostInternal.h:
        (WebCore::ApplicationCacheHostInternal::ApplicationCacheHostInternal):

2010-04-09  Marcus Bulach  <bulach@chromium.org>

        Reviewed by Jeremy Orlow.

        Crash on WebKit::WebGeolocationServiceBridgeImpl::stopUpdating() during frame disconnection
        Should not try to access WebViewClient if the frame has already been disconnected.
        https://bugs.webkit.org/show_bug.cgi?id=37318

        * src/WebGeolocationServiceBridgeImpl.cpp:
        (WebKit::WebGeolocationServiceBridgeImpl::stopUpdating):

2010-04-09  Jochen Eisinger  <jochen@chromium.org>

        Reviewed by Adam Barth.

        Expose SecurityOrigin::canRequest in WebSecurityOrigin.
        https://bugs.webkit.org/show_bug.cgi?id=37271

        * public/WebSecurityOrigin.h:
        * src/WebSecurityOrigin.cpp:
        (WebKit::WebSecurityOrigin::canRequest):

2010-04-09  Zhenyao Mo  <zmo@google.com>

        Reviewed by Dimitri Glazkov.

        Must resolve multisampled back buffer during copyTexImage2D and copyTexSubImage2D
        https://bugs.webkit.org/show_bug.cgi?id=37174

        Test: fast/canvas/webgl/copy-tex-image-and-sub-image-2d.html

        * src/WebGraphicsContext3DDefaultImpl.cpp: Resolve multisampled back buffer during copyTexImage2D and copyTexSubImage2D.
        (WebKit::WebGraphicsContext3DDefaultImpl::copyTexImage2D):
        (WebKit::WebGraphicsContext3DDefaultImpl::copyTexSubImage2D):

2010-04-07  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Yury Semikhatsky.

        Chromium: support themes in devtools window.

        https://bugs.webkit.org/attachment.cgi?bugid=37216

        * WebKit.gypi:
        * src/js/DevTools.js:
        (WebInspector.setToolbarColors):
        (WebInspector.resetToolbarColors):
        * src/js/Images/segmentChromium2.png: Added.
        * src/js/Images/segmentHoverChromium2.png: Added.
        * src/js/Images/segmentSelectedChromium2.png: Added.
        * src/js/Images/statusbarBackgroundChromium2.png: Added.
        * src/js/Images/statusbarMenuButtonChromium2.png: Added.

2010-04-07  Andrey Kosyakov  <caseq@chromium.org>

        Reviewed by Yury Semikhatsky.

        Removed inspector methods from ScriptExecutionContext and derived classes.
        Removed MessageDestination parameter from console-related calls (we now always
        log to the same destination(s)).
        Removed redundant FrameLoaderClient::dispatchDidLoadResourceByXMLHttpRequest()
        https://bugs.webkit.org/show_bug.cgi?id=36949

        * public/WebCommonWorkerClient.h:
        (WebKit::WebCommonWorkerClient::postConsoleMessageToWorkerObject):
        * src/FrameLoaderClientImpl.cpp:
        * src/FrameLoaderClientImpl.h:
        * src/WebWorkerBase.cpp:
        (WebKit::WebWorkerBase::postConsoleMessageToWorkerObject):
        (WebKit::WebWorkerBase::postConsoleMessageTask):
        * src/WebWorkerBase.h:
        * src/WebWorkerClientImpl.cpp:
        (WebKit::WebWorkerClientImpl::postConsoleMessageToWorkerObject):
        (WebKit::WebWorkerClientImpl::postConsoleMessageToWorkerObjectTask):
        * src/WebWorkerClientImpl.h:

2010-04-07  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] WebIDBDatabaseError::assign doesn't work correctly
        https://bugs.webkit.org/show_bug.cgi?id=37209

        * src/WebIDBDatabaseError.cpp:
        (WebKit::WebIDBDatabaseError::assign):

2010-04-07  Dawit Alemayehu  <adawit@kde.org>

        Reviewed by Simon Hausmann.

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

        Updated the WebCore::shouldTreatAsAttachement function call with the
        new more generic replacement WebCore::contentDispositionType.

        See comments 39-42 in https://bugs.webkit.org/show_bug.cgi?id=36395

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

2010-04-07  Jochen Eisinger  <jochen@chromium.org>

        Reviewed by Darin Fisher.

        Add createApplicationCacheHost to WebFrameClient so
        the ApplicationCacheHost has access to its frame.

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

        * public/WebFrameClient.h:
        (WebKit::WebFrameClient::createApplicationCacheHost):
        * src/ApplicationCacheHostInternal.h:
        (WebCore::ApplicationCacheHostInternal::ApplicationCacheHostInternal):

2010-04-06  Nicolas Weber  <thakis@chromium.org>

        Reviewed by Dimitri Glazkov.

        Use drag images on OS X as well.
        https://bugs.webkit.org/show_bug.cgi?id=37069

        * src/DragClientImpl.cpp:
        (WebKit::DragClientImpl::startDrag):

2010-04-06  Vangelis Kokkevis  <vangelis@chromium.org>

        Reviewed by Dimitri Glazkov.

        Changing references to Graphics Layer related classes from *Skia to *Chromium.
        https://bugs.webkit.org/show_bug.cgi?id=37116

        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::paint):
        (WebKit::WebViewImpl::setAcceleratedCompositing):
        (WebKit::WebViewImpl::updateRootLayerContents):
        * src/WebViewImpl.h:

2010-04-06  James Hawkins  <jhawkins@chromium.org>

        Reviewed by Adam Barth.

        [Chromium] Implement WebInputElement::maxLength.
        https://bugs.webkit.org/show_bug.cgi?id=37172

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

2010-04-06  Evan Stade  <estade@chromium.org>

        Reviewed by Dimitri Glazkov.

        [chromium] need DragImage implementation
        https://bugs.webkit.org/show_bug.cgi?id=35811

        Basic implementation using SkBitmap. Transformations are not supported
        yet. No implementation for mac.

        This was previously committed but rolled back for breaking layout
        tests.

        * public/WebViewClient.h:
        (WebKit::WebViewClient::startDragging):
        * src/DragClientImpl.cpp:
        (WebKit::DragClientImpl::startDrag): new: check for null dragImage.
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::startDragging):
        * src/WebViewImpl.h:

2010-04-06  James Hawkins  <jhawkins@chromium.org>

        Reviewed by Dimitri Glazkov.

        [Chromium] Move the getElementsByTagName from WebDocument to WebNode.
        https://bugs.webkit.org/show_bug.cgi?id=37161

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

2010-04-06  Ilya Tikhonovsky  <loislo@chromium.org>

        Unreviewed build fix for Chromium DEPS.

        * DEPS:

2010-04-06  Ilya Tikhonovsky  <loislo@chromium.org>

        Unreviewed: build fix.

        * DEPS:

2010-04-06  Mattias Nissler  <mnissler@chromium.org>

        Reviewed by Pavel Feldman.

        Handle docking requests from the developer tools and forward them to
        WebDevToolsFrontendClient.
        https://bugs.webkit.org/show_bug.cgi?id=36944

        * public/WebDevToolsFrontendClient.h:
        (WebKit::WebDevToolsFrontendClient::requestDockWindow):
        * src/WebDevToolsFrontendImpl.cpp:
        (WebKit::WebDevToolsFrontendImpl::WebDevToolsFrontendImpl):
        (WebKit::WebDevToolsFrontendImpl::jsRequestAttachWindow):
        * src/WebDevToolsFrontendImpl.h:

2010-04-06  Andrey Kosyakov  <caseq@chromium.org>

        Reviewed by Yury Semikhatsky.

        Fixed logging of unhndled worker exceptions.
        https://bugs.webkit.org/show_bug.cgi?id=37143

        * src/WebWorkerClientImpl.cpp:
        (WebKit::WebWorkerClientImpl::postExceptionToWorkerObject):

2010-04-05  Alexey Proskuryakov  <ap@apple.com>

        Reviewed by Darin Adler.

        https://bugs.webkit.org/show_bug.cgi?id=37111
        <rdar://problem/7790327> Draw replacement text when plug-in host crashes

        * src/LocalizedStrings.cpp: (WebCore::crashedPluginText): Added a stub string for plug-in
        failure.

2010-04-04  Pavel Feldman  <pfeldman@chromium.org>

        Not reviewed. Rolling out chromium changes r57028 and r57032 
        for breaking chromium layout tests.

        * public/WebViewClient.h:
        (WebKit::WebViewClient::startDragging):
        * src/DragClientImpl.cpp:
        (WebKit::DragClientImpl::startDrag):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::startDragging):
        * src/WebViewImpl.h:

2010-04-03  Darin Fisher  <darin@chromium.org>

        Add default implementations of WebNotificationPresenter methods to
        repair the downstream Chromium build.

        * public/WebNotificationPresenter.h:
        (WebKit::WebNotificationPresenter::show):
        (WebKit::WebNotificationPresenter::cancel):
        (WebKit::WebNotificationPresenter::objectDestroyed):
        (WebKit::WebNotificationPresenter::checkPermission):
        (WebKit::WebNotificationPresenter::requestPermission):

2010-04-02  Michael Nordman  <michaeln@google.com>

        Reviewed by Nate Chapin.

        Set the close policy used by the DatabaseCloseTask at this callsite to
        RemoveDatabaseFromContext. This restores its behavior to what it was prior to
        r56293.
        https://bugs.webkit.org/show_bug.cgi?id=37037

        * src/WebDatabase.cpp:
        (WebKit::WebDatabase::closeDatabaseImmediately):

2010-04-02  Evan Stade  <estade@chromium.org>

        Reviewed by Eric Seidel.

        [chromium] need DragImage implementation
        https://bugs.webkit.org/show_bug.cgi?id=35811

        Use the DragImageRef that the DragController passes to us.

        * public/WebViewClient.h:
        (WebKit::WebViewClient::startDragging):
        * src/DragClientImpl.cpp:
        (WebKit::DragClientImpl::startDrag):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::startDragging):
        * src/WebViewImpl.h:

2010-04-02  Rafael Weinstein  <rafaelw@chromium.org>

        Reviewed by Adam Barth.

        Clean up unused calls after changes to checkPermission and requestPermission argument lists.

        * public/WebNotificationPresenter.h:
        * src/NotificationPresenterImpl.cpp:
        (WebKit::NotificationPresenterImpl::checkPermission):
        (WebKit::NotificationPresenterImpl::requestPermission):

2010-04-02  Zhenyao Mo  <zmo@google.com>

        Reviewed by Eric Seidel.

        Implement and test new framebuffer object attachment behavior.
        https://bugs.webkit.org/show_bug.cgi?id=35611

        Test: fast/canvas/webgl/framebuffer-object-attachment.html

        * src/WebGraphicsContext3DDefaultImpl.cpp: Map to correct DEPTH_STENCIL format.
        (WebKit::WebGraphicsContext3DDefaultImpl::framebufferRenderbuffer):
        (WebKit::WebGraphicsContext3DDefaultImpl::getFramebufferAttachmentParameteriv):
        (WebKit::WebGraphicsContext3DDefaultImpl::renderbufferStorage):

2010-04-02  Jay Civelli  <jcivelli@chromium.org>

        Reviewed by Darin Fisher.

        The popup type (select or suggestion) is now passed to the
        WebClient::createPopupMenu() method. This is required for
        Chromium on Linux to make the select popups work correctly.
        https://bugs.webkit.org/show_bug.cgi?id=37013

        * WebKit.gyp:
        * public/WebPopupType.h: Added.
        (WebKit::):
        * public/WebViewClient.h:
        (WebKit::WebViewClient::createPopupMenu):
        * src/ChromeClientImpl.cpp:
        (WebCore::convertPopupType):
        (WebKit::ChromeClientImpl::popupOpened):

2010-04-02  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Implement InspectorFrontendClient in Chromium and remove all custom bindings for the host methods from WebDevToolsFrontendImpl. 

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

        * WebKit.gyp:
        * src/InspectorFrontendClientImpl.cpp: Added.
        (WebKit::InspectorFrontendClientImpl::InspectorFrontendClientImpl):
        (WebKit::InspectorFrontendClientImpl::~InspectorFrontendClientImpl):
        (WebKit::InspectorFrontendClientImpl::windowObjectCleared):
        (WebKit::InspectorFrontendClientImpl::frontendLoaded):
        (WebKit::InspectorFrontendClientImpl::moveWindowBy):
        (WebKit::InspectorFrontendClientImpl::localizedStringsURL):
        (WebKit::InspectorFrontendClientImpl::hiddenPanels):
        (WebKit::InspectorFrontendClientImpl::bringToFront):
        (WebKit::InspectorFrontendClientImpl::closeWindow):
        (WebKit::InspectorFrontendClientImpl::canAttachWindow):
        (WebKit::InspectorFrontendClientImpl::attachWindow):
        (WebKit::InspectorFrontendClientImpl::detachWindow):
        (WebKit::InspectorFrontendClientImpl::changeAttachedWindowHeight):
        (WebKit::InspectorFrontendClientImpl::inspectedURLChanged):
        * src/InspectorFrontendClientImpl.h: Added.
        * src/WebDevToolsFrontendImpl.cpp:
        (WebKit::WebDevToolsFrontendImpl::WebDevToolsFrontendImpl):
        (WebKit::WebDevToolsFrontendImpl::~WebDevToolsFrontendImpl):
        (WebKit::WebDevToolsFrontendImpl::frontendLoaded):
        * src/WebDevToolsFrontendImpl.h:
        * src/js/DebuggerAgent.js:
        (devtools.DebuggerAgent.prototype.doHandleBacktraceResponse_):
        * src/js/DevTools.js:
        ():

2010-04-01  Jay Civelli  <jcivelli@google.com>

        Reviewed by David Levin.

        Adds a method to WebFrame to execute JavaScript and get the value
        it evaluates to.
        https://bugs.webkit.org/show_bug.cgi?id=36907

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

2010-04-01  Kinuko Yasuda  <kinuko@chromium.org>

        Reviewed by Dmitry Titov.

        Add FileThread for async file operation support in FileReader and FileWriter
        https://bugs.webkit.org/show_bug.cgi?id=36896

        Add ENABLE_FILE_READER and ENABLE_FILE_WRITER flags.

        * features.gypi:

2010-04-01  Finnur Thorarinsson  <finnur.webkit@gmail.com>

        Reviewed by Eric Seidel.

        [chromium] FindInPage on multi-frame pages wasn't always updating
        tickmarks on scrollbars for the subframes. It was calling invalidateRect
        on the View and specifying a rect that's in window coordinates, whereas
        the invalidateRect expects frame coordinates.

        https://bugs.webkit.org/show_bug.cgi?id=36982
        
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::invalidateArea):

2010-04-01  Finnur Thorarinsson  <finnur.webkit@gmail.com>

        Reviewed by Dimitri Glazkov.

        [chromium] FindInPage should clear the focused node when a match has
        been found. This is because WebFrameImpl::setFocus will try to refocus
        editable elements if it thinks they have focus, causing the page to
        scroll.

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

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

2010-04-01  Marcus Bulach  <bulach@chromium.org>

        Reviewed by Jeremy Orlow.

        As a follow up on https://bugs.webkit.org/show_bug.cgi?id=36535, remove:
        GeolocationServiceBridgeChromium.h
        dettachBridge()
        getGeolocationService()
        https://bugs.webkit.org/show_bug.cgi?id=36895

        * WebKit.gyp:
        * public/GeolocationServiceBridgeChromium.h: Removed.
        * public/WebGeolocationService.h:
        (WebKit::WebGeolocationService::detachBridge):
        * public/WebViewClient.h:
        (WebKit::WebViewClient::geolocationService):

2010-03-31  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Nate Chapin.

        Misc IndexedDatabase cleanup
        https://bugs.webkit.org/show_bug.cgi?id=36889

        Plumb the Frame* so Chromium knows where the request originated from.

        * public/WebIndexedDatabase.h:
        * src/IndexedDatabaseProxy.cpp:
        (WebCore::IndexedDatabaseProxy::open):
        * src/IndexedDatabaseProxy.h:
        * src/WebIndexedDatabaseImpl.cpp:
        (WebKit::WebIndexedDatabaseImpl::open):
        * src/WebIndexedDatabaseImpl.h:

2010-03-31  Alpha Lam  <hclam@chromium.org>

        Not reviewed. Build fix.

        Fixing a build break caused by 56872. One of the Chromium bots doesn't
        like std::strstr(). Includes string.h and use strstr() instead.

        * src/WebGraphicsContext3DDefaultImpl.cpp:
        (WebKit::WebGraphicsContext3DDefaultImpl::validateAttributes):
        Includes string.h and use strstr().

2010-03-31  Zhenyao Mo  <zmo@google.com>

        Reviewed by Darin Fisher.

        Hook up WebGLContextAttributes to OpenGL context creation code
        https://bugs.webkit.org/show_bug.cgi?id=33416

        * src/WebGraphicsContext3DDefaultImpl.cpp: Hook up WebGLContextAttributes to OpenGL context creation code for Chrome.
        (WebKit::WebGraphicsContext3DDefaultImpl::WebGraphicsContext3DDefaultImpl):
        (WebKit::WebGraphicsContext3DDefaultImpl::~WebGraphicsContext3DDefaultImpl):
        (WebKit::WebGraphicsContext3DDefaultImpl::initialize):
        (WebKit::WebGraphicsContext3DDefaultImpl::validateAttributes):
        (WebKit::WebGraphicsContext3DDefaultImpl::reshape):
        (WebKit::WebGraphicsContext3DDefaultImpl::readBackFramebuffer):
        (WebKit::WebGraphicsContext3DDefaultImpl::bindFramebuffer):
        (WebKit::WebGraphicsContext3DDefaultImpl::readPixels): Deal with wrong returned alpha values in Mac.
        * src/WebGraphicsContext3DDefaultImpl.h: Add a function.

2010-03-31  Darin Fisher  <darin@chromium.org>

        Reviewed by David Levin.

        [chromium] including WebKit.gyp:webkit should automatically add Skia
        and NPAPI include paths

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

        * WebKit.gyp:

2010-03-31  Marcus Bulach  <bulach@chromium.org>

        Reviewed by Jeremy Orlow.

        Implements cancelGeolocationPermissionRequestForFrame.
        https://bugs.webkit.org/show_bug.cgi?id=35031

        * public/WebGeolocationService.h:
        (WebKit::WebGeolocationService::cancelPermissionRequestForFrame):
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::cancelGeolocationPermissionRequestForFrame):
        * src/ChromeClientImpl.h:

2010-03-31  Pavel Feldman  <pfeldman@chromium.org>

        Not reviewed. Rolling out r56829 since it broke chromium layout tests.

        [REGRESSION] Inspector tests started crashing since r56829
        https://bugs.webkit.org/show_bug.cgi?id=36888

        * public/WebFrameClient.h:
        * src/FrameLoaderClientImpl.cpp:
        * src/FrameLoaderClientImpl.h:

2010-03-31  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Add stubs for moveWindowBy and setAttachedWindowHeight.

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

        * src/WebDevToolsFrontendImpl.cpp:
        (WebKit::WebDevToolsFrontendImpl::WebDevToolsFrontendImpl):
        (WebKit::WebDevToolsFrontendImpl::jsSetAttachedWindowHeight):
        (WebKit::WebDevToolsFrontendImpl::jsMoveWindowBy):
        * src/WebDevToolsFrontendImpl.h:

2010-03-31  John Gregg  <johnnyg@google.com>

        Reviewed by Darin Fisher.

        [chromium] add logging of cross-frame property accesses for site isolation
        https://bugs.webkit.org/show_bug.cgi?id=35773

        * public/WebFrameClient.h:
        (WebKit::WebFrameClient::logCrossFramePropertyAccess):
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::logCrossFramePropertyAccess):
        * src/FrameLoaderClientImpl.h:

2010-03-30  Gavin Barraclough  <barraclough@apple.com>

        Rubber stamped by Sam Weinig.

        https://bugs.webkit.org/show_bug.cgi?id=36866
        Move CString to WTF

        * public/WebCString.h:
        * src/FrameLoaderClientImpl.cpp:
        * src/GraphicsContext3D.cpp:
        * src/WebCString.cpp:
        (WebKit::WebCString::assign):
        (WebKit::WebCString::WebCString):
        (WebKit::WebCString::operator=):
        (WebKit::WebCString::operator WTF::CString):
        * src/WebMediaPlayerClientImpl.cpp:
        * src/WebString.cpp:
        * src/WebURLError.cpp:

2010-03-30  Marcus Bulach  <bulach@chromium.org>

        Reviewed by Darin Fisher.

        Rename / tidy up Geolocation bridge:
        Rename GeolocationServiceBridgeChromium.cpp to WebGeolocationServiceBridgeImpl.cpp            
        Uses a temporary compatibility layer in GeolocationServiceBridgeChromium.h.

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

        * WebKit.gyp:
        * public/GeolocationServiceBridgeChromium.h:
        * public/WebGeolocationService.h: Copied from WebKit/chromium/public/GeolocationServiceBridgeChromium.h.
        (WebKit::WebGeolocationService::detachBridge):
        * public/WebGeolocationServiceBridge.h: Copied from WebKit/chromium/public/GeolocationServiceBridgeChromium.h.
        * public/WebViewClient.h:
        (WebKit::WebViewClient::geolocationService):
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::requestGeolocationPermissionForFrame):
        * src/ChromiumBridge.cpp:
        * src/GeolocationServiceBridgeChromium.cpp: Removed.
        * src/WebGeolocationServiceBridgeImpl.cpp: Copied from WebKit/chromium/src/GeolocationServiceBridgeChromium.cpp.
        (WebKit::createGeolocationServiceBridgeImpl):
        (WebKit::WebGeolocationServiceBridgeImpl::WebGeolocationServiceBridgeImpl):
        (WebKit::WebGeolocationServiceBridgeImpl::~WebGeolocationServiceBridgeImpl):
        (WebKit::WebGeolocationServiceBridgeImpl::startUpdating):
        (WebKit::WebGeolocationServiceBridgeImpl::stopUpdating):
        (WebKit::WebGeolocationServiceBridgeImpl::suspend):
        (WebKit::WebGeolocationServiceBridgeImpl::resume):
        (WebKit::WebGeolocationServiceBridgeImpl::getBridgeId):
        (WebKit::WebGeolocationServiceBridgeImpl::setIsAllowed):
        (WebKit::WebGeolocationServiceBridgeImpl::setLastPosition):
        (WebKit::WebGeolocationServiceBridgeImpl::setLastError):
        (WebKit::WebGeolocationServiceBridgeImpl::getWebViewClient):
        * src/WebGeolocationServiceBridgeImpl.h: Copied from WebKit/chromium/public/GeolocationServiceBridgeChromium.h.

2010-03-30  Jochen Eisinger  <jochen@chromium.org>

        Reviewed by Jeremy Orlow.

        Remove dysfunctional implementation of canEstablishDatabase for
        Workers. I postpone this implementation until Workers can actually
        access Web Databases.

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

        * src/DatabaseObserver.cpp:
        (WebCore::DatabaseObserver::canEstablishDatabase):
        * src/WebWorkerBase.h:

2010-03-29  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Darin Fisher.

        More IndexedDB work
        https://bugs.webkit.org/show_bug.cgi?id=36770

        Start the implementation of WebIndexedDatabase (for entrance back into WebKit).

        * WebKit.gyp:
        * public/WebIndexedDatabase.h:
        * src/WebIndexedDatabaseImpl.cpp: Added.
        (WebKit::WebIndexedDatabase::create):
        (WebKit::WebIndexedDatabaseImpl::~WebIndexedDatabaseImpl):
        (WebKit::WebIndexedDatabaseImpl::open):
        * src/WebIndexedDatabaseImpl.h: Added.

2010-03-29  Rafael Weinstein  <rafaelw@chromium.org>

        Reviewed by Adam Barth.

        Change NotificationPresenter::checkPermission() to take the source frames full KURL,
        rather than its SecurityOrigin. This will aid chromium in having more fine grained
        permissions to control notification spam.

        * public/WebNotificationPresenter.h:
        (WebKit::WebNotificationPresenter::checkPermission):
        * src/NotificationPresenterImpl.cpp:
        (WebKit::NotificationPresenterImpl::checkPermission):
        * src/NotificationPresenterImpl.h:

2010-03-29  Dawit Alemayehu  <adawit@kde.org>

        Reviewed by Simon Hausmann.

        Factored out the 'ShouldTreatAsAttachment' function to HTTPParsers.*
        and replacted local version with the factored out version.

        The code was factored out to make possible its use in other implementations
        such as QtWebKit.

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

2010-03-29  Jochen Eisinger  <jochen@chromium.org>

        Reviewed by Darin Fisher.

        Pass a WebFrame to WebFrameClient::allowDatabase instead of a WebSecurityOrigin
        https://bugs.webkit.org/show_bug.cgi?id=36743

        * public/WebFrameClient.h:
        (WebKit::WebFrameClient::allowDatabase):
        * src/DatabaseObserver.cpp:
        (WebCore::DatabaseObserver::canEstablishDatabase):

2010-03-24  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Darin Fisher.

        More IndexedDB plumbing
        https://bugs.webkit.org/show_bug.cgi?id=36546

        Plumbing work towards the goal of making IndexedDatabase::open work.

        * WebKit.gyp:
        * public/WebIDBCallbacks.h: Added.
        (WebKit::WebIDBCallbacks::~WebIDBCallbacks):
        * public/WebIDBDatabase.h: Added.
        (WebKit::WebIDBDatabase::~WebIDBDatabase):
        * public/WebIDBDatabaseError.h: Added.
        (WebKit::WebIDBDatabaseError::WebIDBDatabaseError):
        (WebKit::WebIDBDatabaseError::operator=):
        * public/WebIndexedDatabase.h:
        * public/WebKitClient.h:
        (WebKit::WebKitClient::indexedDatabase):
        * public/WebSerializedScriptValue.h:
        * src/IDBCallbacksProxy.h: Added.
        (WebCore::IDBCallbacksProxy::IDBCallbacksProxy):
        (WebCore::IDBCallbacksProxy::~IDBCallbacksProxy):
        (WebCore::IDBCallbacksProxy::onSuccess):
        (WebCore::IDBCallbacksProxy::onError):
        * src/IDBDatabaseProxy.cpp: Added.
        (WebCore::IDBDatabaseProxy::create):
        (WebCore::IDBDatabaseProxy::IDBDatabaseProxy):
        (WebCore::IDBDatabaseProxy::~IDBDatabaseProxy):
        * src/IDBDatabaseProxy.h: Added.
        * src/IndexedDatabaseProxy.cpp:
        (WebCore::IndexedDatabaseProxy::IndexedDatabaseProxy):
        (WebCore::IndexedDatabaseProxy::open):
        * src/IndexedDatabaseProxy.h:
        * src/WebIDBDatabaseError.cpp: Added.
        (WebKit::WebIDBDatabaseError::~WebIDBDatabaseError):
        (WebKit::WebIDBDatabaseError::WebIDBDatabaseError):
        (WebKit::WebIDBDatabaseError::assign):
        (WebKit::WebIDBDatabaseError::code):
        (WebKit::WebIDBDatabaseError::message):
        (WebKit::WebIDBDatabaseError::operator=):
        (WebKit::WebIDBDatabaseError::operator PassRefPtr<IDBDatabaseError>):

2010-03-29  Mikhail Naganov  <mnaganov@chromium.org>

        Reviewed by Pavel Feldman.

        Remove a possibility of confusion from Profiles panel Welcome screen
        by turning buttons into non-clickable glyphs. Also, span instructions
        alongside panel width.

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

        * src/js/HeapProfilerPanel.js:
        (WebInspector.HeapSnapshotProfileType.prototype.get welcomeMessage):

2010-03-28  Alexey Proskuryakov  <ap@apple.com>

        Build fix. Removed extraneous includes of KeyboardCodesWin.h and KeyboardCodesPosix.h -
        these no longer exist, but they weren't needed even before reshuffling KeyboardCodes headers.

        * src/WebViewImpl.cpp:

2010-03-27  Kenneth Russell  <kbr@google.com>

        Reviewed by Darin Fisher.

        Use WebKitClient to instantiate WebGraphicsContext3D
        https://bugs.webkit.org/show_bug.cgi?id=36669

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

2010-03-24  James Hawkins  <jhawkins@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Implement WebFormControlElement and WebSelectElement.  Add
        a getFormControlElements method to WebFormElement.

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

        * WebKit.gyp:
        * public/WebElement.h:
        * public/WebFormControlElement.h: Added.
        * public/WebFormElement.h:
        * public/WebInputElement.h:
        (WebKit::WebInputElement::WebInputElement):
        (WebKit::WebInputElement::operator=):
        (WebKit::WebInputElement::assign):
        * public/WebSelectElement.h: Added.
        * src/WebElement.cpp:
        (WebKit::WebElement::isFormControlElement):
        * src/WebFormControlElement.cpp: Added.
        * src/WebFormElement.cpp:
        (WebKit::WebFormElement::getFormControlElements):
        * src/WebInputElement.cpp:
        (WebKit::WebInputElement::WebInputElement):
        * src/WebSelectElement.cpp: Added.

2010-03-26  Andrey Kosyakov  <caseq@chromium.org>

        Reviewed by Pavel Feldman.

        Send worker resource content to inspector to enable display of web
        workers in inspector's resource tab.
        https://bugs.webkit.org/show_bug.cgi?id=36658

        * src/SharedWorkerRepository.cpp:
        (WebCore::SharedWorkerScriptLoader::notifyFinished):

2010-03-25  Tony Chang  <tony@chromium.org>

        Reviewed by David Levin.

        [chromium] correctly handle move drag operations
        https://bugs.webkit.org/show_bug.cgi?id=36484

        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::dragTargetDragEnter):
        (WebKit::WebViewImpl::dragTargetDragOver):
        (WebKit::WebViewImpl::dragTargetDragEnterOrOver): Combine common code into a helper method
            and properly mask against the drag effect.
        (WebKit::WebViewImpl::createUniqueIdentifierForRequest):
        * src/WebViewImpl.h:

2010-03-25  Drew Wilson  <atwilson@chromium.org>

        Reviewed by Nate Chapin.

        [v8] Error in getScriptExecutionContext() when worker context is terminating
        https://bugs.webkit.org/show_bug.cgi?id=36565

        Test: Existing worker tests suffice.

        * src/WebWorkerClientImpl.cpp:
        (WebKit::WebWorkerClientImpl::createWorkerContextProxy):
        Changed to use WorkerScriptController::controllerForContext() instead of WorkerScriptExecutionProxy::retrieve().

2010-03-25  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Add an ASSERT macro to the Chromium WebKit API
        https://bugs.webkit.org/show_bug.cgi?id=36545

        * WebKit.gyp:  Add WebCommon.cpp
        * public/WebCommon.h:  Add the Macro.
        * public/WebPrivatePtr.h:
        (WebKit::WebPrivatePtr::~WebPrivatePtr):  Verify the pointer is now 0.
        * src/WebCommon.cpp: Added.
        (WebKit::failedAssertion): Calls the WTF assert function and then crashes.

2010-03-25  Jochen Eisinger  <jochen@chromium.org>

        Reviewed by Jeremy Orlow.

        Remove ASSERT(isMainThread()) which is violated for workers and not necessary at this point.
        https://bugs.webkit.org/show_bug.cgi?id=36614

        * src/DatabaseObserver.cpp:
        (WebCore::DatabaseObserver::canEstablishDatabase):

2010-03-25  Jochen Eisinger  <jochen@chromium.org>

        Reviewed by Jeremy Orlow.

        Forward DatabaseTracker::canEstablishDatabase to chromium layer.
        https://bugs.webkit.org/show_bug.cgi?id=36595

        * public/WebFrameClient.h:
        (WebKit::WebFrameClient::allowDatabase):
        * src/DatabaseObserver.cpp:
        (WebCore::DatabaseObserver::canEstablishDatabase):
        * src/WebWorkerBase.h:
        (WebKit::WebWorkerBase::allowDatabase):

2010-03-10  John Abd-El-Malek  <jam@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Fix up WebMouseWheelEventBuilder to properly calculate the units
        https://bugs.webkit.org/show_bug.cgi?id=35989

        * src/WebInputEventConversion.cpp:

2010-03-24  Vangelis Kokkevis  <vangelis@chromium.org>

        Reviewed by Dimitri Glazkov.

        Eliminate unecessary redraws of GraphicsLayer contents when doing accelerated compositing:
        https://bugs.webkit.org/show_bug.cgi?id=36470

        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::paint):
        Remove call that forced redrawing the contents of the entire layer hierarchy.

2010-03-24  Dmitry Titov  <dimich@chromium.org>

        No review, rolling out r56453.
        http://trac.webkit.org/changeset/56453
        https://bugs.webkit.org/show_bug.cgi?id=36426

        In Chromium port, it broke invalid-image-data-standalone.html
        invalid-image-data.html multipart-wait-before-boundary.html
        stop-crash.html win-boundary-crash.html

        * src/ResourceHandle.cpp:
        (WebCore::ResourceHandleInternal::ResourceHandleInternal):
        (WebCore::ResourceHandleInternal::start):
        (WebCore::ResourceHandleInternal::cancel):
        (WebCore::ResourceHandleInternal::didReceiveResponse):
        (WebCore::ResourceHandleInternal::didReceiveData):
        (WebCore::ResourceHandleInternal::didFinishLoading):
        (WebCore::ResourceHandleInternal::didFail):

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

        Reviewed by Darin Fisher.

        [chromium]WebKit side of adding search support to Pepper.
        https://bugs.webkit.org/show_bug.cgi?id=36434

        * WebKit.gyp:
        * public/WebDocument.h:
        * public/WebNode.h:
        (WebKit::WebNode::to):
        (WebKit::WebNode::toConst):
        * public/WebPluginDocument.h: Added.
        (WebKit::WebPluginDocument::WebPluginDocument):
        (WebKit::WebPluginDocument::operator=):
        (WebKit::WebPluginDocument::assign):
        * src/WebDocument.cpp:
        (WebKit::WebDocument::isPluginDocument):
        * src/WebPluginDocument.cpp: Added.
        (WebKit::WebPluginDocument::plugin):
        (WebKit::WebPluginDocument::WebPluginDocument):
        (WebKit::WebPluginDocument::operator=):
        (WebKit::WebPluginDocument::operator PassRefPtr<PluginDocument>):

2010-03-24  Jeremy Moskovich  <jeremy@chromium.org>

        Reviewed by Jeremy Orlow.

        Add some diagnostics to try to track down cause of crash in ArchiveFactory::isArchiveMimeType().

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

        * src/ResourceHandle.cpp: Track state across ResourceHandle invocations.
        (WebCore::ResourceHandleInternal::ResourceHandleInternal):
        (WebCore::ResourceHandleInternal::):
        (WebCore::ResourceHandleInternal::start):
        (WebCore::ResourceHandleInternal::cancel):
        (WebCore::ResourceHandleInternal::didReceiveResponse):
        (WebCore::ResourceHandleInternal::didReceiveData):
        (WebCore::ResourceHandleInternal::didFinishLoading):
        (WebCore::ResourceHandleInternal::didFail):

2010-03-24  Jay Campan  <jcampan@google.com>

        Reviewed by Darin Fisher.

        Making Chromium select popups not steal activation from the browser.
        Select popups are now like autocomplete popups, shown in non-activated
        windows.
        https://bugs.webkit.org/show_bug.cgi?id=36062

        * public/WebViewClient.h:
        (WebKit::WebViewClient::createPopupMenu):
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::popupOpened):
        (WebKit::ChromeClientImpl::popupClosed):
        * src/ChromeClientImpl.h:
        * src/WebViewImpl.cpp:
        (WebKit::):
        (WebKit::WebViewImpl::mouseDown):
        (WebKit::WebViewImpl::keyEvent):
        (WebKit::WebViewImpl::selectPopupHandleKeyEvent):
        (WebKit::WebViewImpl::hideSelectPopup):
        (WebKit::WebViewImpl::popupOpened):
        (WebKit::WebViewImpl::popupClosed):
        (WebKit::WebViewImpl::setFocus):
        (WebKit::WebViewImpl::applyAutoFillSuggestions):
        (WebKit::WebViewImpl::applyAutocompleteSuggestions):
        * src/WebViewImpl.h:

2010-03-24  Alexander Pavlov  <apavlov@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: [Chromium] Audits never complete
        https://bugs.webkit.org/show_bug.cgi?id=36544

        * src/js/InspectorControllerImpl.js:
        (devtools.InspectorBackendImpl):

2010-03-24  Alexander Pavlov  <apavlov@chromium.org>

        Reviewed by Pavel Feldman.

        [Chromium] Fix VKEY_F10, VKEY_F11 translation in WebInputEvent.cpp
        https://bugs.webkit.org/show_bug.cgi?id=36524

        * src/WebInputEvent.cpp:
        (WebKit::staticKeyIdentifiers):

2010-03-24  Kent Tamura  <tkent@chromium.org>

        Reviewed by Darin Adler.

        Make Icon::createIconForFiles() optional.
        https://bugs.webkit.org/show_bug.cgi?id=35072

        - Rename iconForFiles() to chooseIconForFiles().
        - Call Icon::createIconForFiles() from chooseIconForFiles().

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

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

        Unreviewed build fix.

        Add #include <stdio.h> to fix Chromium Linux build.

        * src/WebGraphicsContext3DDefaultImpl.cpp:

2010-03-23  Nate Chapin  <japhet@chromium.org>

        Unreviewed, revert r56376.

        This revision introduced a crash in a couple of layout tests
        on Chromium Linux.

        * public/WebViewClient.h:
        (WebKit::WebViewClient::createPopupMenu):
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::popupOpened):
        * src/ChromeClientImpl.h:
        * src/WebViewImpl.cpp:
        (WebKit::):
        (WebKit::WebViewImpl::mouseDown):
        (WebKit::WebViewImpl::keyEvent):
        (WebKit::WebViewImpl::setFocus):
        (WebKit::WebViewImpl::applyAutoFillSuggestions):
        (WebKit::WebViewImpl::applyAutocompleteSuggestions):
        * src/WebViewImpl.h:

2010-03-23  Sergey Ulanov  <sergeyu@chromium.org>

        Reviewed by Dmitry Titov.

        Changes needed to implement Show/Hide Controls command for <video> in
        chrome: (1) added Controls action in WebMediaPlayerAction that toggles
        controls for media player, (2) added MediaHasVideo in
        WebContextMenuData so that controls can be made toggleable only for
        video player but not for audio.
        https://bugs.webkit.org/show_bug.cgi?id=36460

        * public/WebContextMenuData.h:
        (WebKit::WebContextMenuData::):
        * public/WebMediaPlayerAction.h:
        (WebKit::WebMediaPlayerAction::):
        * src/ContextMenuClientImpl.cpp:
        (WebKit::ContextMenuClientImpl::getCustomMenuFromDefaultItems):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::performMediaPlayerAction):

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

        Reviewed by Pavel Feldman.

        When uncaught exception happens reveal Scripts panel only if reporting uncaught exceptions is on.

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

        * src/js/DebuggerAgent.js:
        (devtools.DebuggerAgent.prototype.handleExceptionEvent_):

2010-03-23  Ilya Tikhonovsky  <loislo@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: TimelinePanel stays in the recording state after reopening WebInspector.
        https://bugs.webkit.org/show_bug.cgi?id=36503

        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::detach):

2010-03-22  Kenneth Russell  <kbr@google.com>

        Reviewed by Darin Fisher.

        Add GraphicsContext3D abstraction to WebKit API
        https://bugs.webkit.org/show_bug.cgi?id=36262

        Added WebGraphicsContext3D to the WebKit API and refactored Chromium's
        GraphicsContext3D implementation to use it. All of the OpenGL calls have
        been moved out of WebKit/chromium/src/GraphicsContext3D.cpp and into the
        WebGraphicsContext3D implementation. GraphicsContext3D is still
        responsible for the transfer of rendered output from the
        WebGraphicsContext3D to the HTMLCanvasElement.

        The GraphicsContext3DInternal class, which is a data member of
        GraphicsContext3D for the Chromium port, remains. It is possible to
        eliminate this class and thereby one level of delegation, but this is
        being deferred.

        The needed entry point for a Chrome implementation of
        WebGraphicsContext3D has been added to WebKitClient, but it is not being
        called yet by GraphicsContext3D. It will be once this patch lands and
        Chromium is rolled forward to support this entry point.

        This is a large patch, but the transformation is almost entirely
        mechanical and there is no change in functionality. Nearly all of
        GraphicsContext3D and GraphicsContext3DInternal has been moved to
        WebGraphicsContext3DDefaultImpl. The only area where the splitting of
        logic is less than mechanical is GraphicsContext3D::beginPaint() and its
        callees.

        Ran all WebGL layout tests and demos from Khronos site in Chromium
        on Mac and Windows.

        * WebKit.gyp:
        * public/WebGraphicsContext3D.h: Added.
        (WebKit::WebGraphicsContext3D::Attributes::Attributes):
        (WebKit::WebGraphicsContext3D::~WebGraphicsContext3D):
        * public/WebKitClient.h:
        (WebKit::WebKitClient::createGraphicsContext3D):
        * src/GraphicsContext3D.cpp:
        (WebCore::GraphicsContext3DInternal::GraphicsContext3DInternal):
        (WebCore::GraphicsContext3DInternal::~GraphicsContext3DInternal):
        (WebCore::GraphicsContext3DInternal::initialize):
        (WebCore::GraphicsContext3DInternal::platformGraphicsContext3D):
        (WebCore::GraphicsContext3DInternal::platformTexture):
        (WebCore::GraphicsContext3DInternal::beginPaint):
        (WebCore::GraphicsContext3DInternal::endPaint):
        (WebCore::GraphicsContext3DInternal::reshape):
        (WebCore::GraphicsContext3DInternal::bindAttribLocation):
        (WebCore::GraphicsContext3DInternal::bindTexture):
        (WebCore::GraphicsContext3DInternal::bufferData):
        (WebCore::GraphicsContext3DInternal::bufferSubData):
        (WebCore::GraphicsContext3DInternal::getActiveAttrib):
        (WebCore::GraphicsContext3DInternal::getActiveUniform):
        (WebCore::GraphicsContext3DInternal::getAttribLocation):
        (WebCore::GraphicsContext3DInternal::getContextAttributes):
        (WebCore::GraphicsContext3DInternal::getProgramInfoLog):
        (WebCore::GraphicsContext3DInternal::getShaderInfoLog):
        (WebCore::GraphicsContext3DInternal::getShaderSource):
        (WebCore::GraphicsContext3DInternal::getString):
        (WebCore::GraphicsContext3DInternal::getUniformLocation):
        (WebCore::GraphicsContext3DInternal::readPixels):
        (WebCore::GraphicsContext3DInternal::shaderSource):
        (WebCore::GraphicsContext3DInternal::texImage2D):
        (WebCore::GraphicsContext3DInternal::texSubImage2D):
        (WebCore::GraphicsContext3DInternal::uniform1fv):
        (WebCore::GraphicsContext3DInternal::uniform1iv):
        (WebCore::GraphicsContext3DInternal::uniform2fv):
        (WebCore::GraphicsContext3DInternal::uniform2iv):
        (WebCore::GraphicsContext3DInternal::uniform3fv):
        (WebCore::GraphicsContext3DInternal::uniform3iv):
        (WebCore::GraphicsContext3DInternal::uniform4fv):
        (WebCore::GraphicsContext3DInternal::uniform4iv):
        (WebCore::GraphicsContext3DInternal::uniformMatrix2fv):
        (WebCore::GraphicsContext3DInternal::uniformMatrix3fv):
        (WebCore::GraphicsContext3DInternal::uniformMatrix4fv):
        (WebCore::GraphicsContext3D::GraphicsContext3D):
        (WebCore::GraphicsContext3D::~GraphicsContext3D):
        (WebCore::GraphicsContext3D::create):
        (WebCore::GraphicsContext3D::platformGraphicsContext3D):
        (WebCore::GraphicsContext3D::platformTexture):
        (WebCore::GraphicsContext3D::texImage2D):
        (WebCore::GraphicsContext3D::texSubImage2D):
        * src/WebGraphicsContext3D.cpp: Added.
        (WebKit::WebGraphicsContext3D::createDefault):
        * src/WebGraphicsContext3DDefaultImpl.cpp: Added.
        (WebKit::WebGraphicsContext3DDefaultImpl::GLConnection::create):
        (WebKit::WebGraphicsContext3DDefaultImpl::GLConnection::~GLConnection):
        (WebKit::WebGraphicsContext3DDefaultImpl::VertexAttribPointerState::VertexAttribPointerState):
        (WebKit::WebGraphicsContext3DDefaultImpl::WebGraphicsContext3DDefaultImpl):
        (WebKit::WebGraphicsContext3DDefaultImpl::~WebGraphicsContext3DDefaultImpl):
        (WebKit::WebGraphicsContext3DDefaultImpl::initialize):
        (WebKit::WebGraphicsContext3DDefaultImpl::makeContextCurrent):
        (WebKit::WebGraphicsContext3DDefaultImpl::width):
        (WebKit::WebGraphicsContext3DDefaultImpl::height):
        (WebKit::WebGraphicsContext3DDefaultImpl::sizeInBytes):
        (WebKit::createTextureObject):
        (WebKit::WebGraphicsContext3DDefaultImpl::reshape):
        (WebKit::WebGraphicsContext3DDefaultImpl::flipVertically):
        (WebKit::WebGraphicsContext3DDefaultImpl::readBackFramebuffer):
        (WebKit::WebGraphicsContext3DDefaultImpl::activeTexture):
        (WebKit::WebGraphicsContext3DDefaultImpl::bindBuffer):
        (WebKit::WebGraphicsContext3DDefaultImpl::bindFramebuffer):
        (WebKit::WebGraphicsContext3DDefaultImpl::disableVertexAttribArray):
        (WebKit::WebGraphicsContext3DDefaultImpl::drawElements):
        (WebKit::WebGraphicsContext3DDefaultImpl::enableVertexAttribArray):
        (WebKit::WebGraphicsContext3DDefaultImpl::generateMipmap):
        (WebKit::WebGraphicsContext3DDefaultImpl::getActiveAttrib):
        (WebKit::WebGraphicsContext3DDefaultImpl::getActiveUniform):
        (WebKit::WebGraphicsContext3DDefaultImpl::getContextAttributes):
        (WebKit::WebGraphicsContext3DDefaultImpl::getError):
        (WebKit::WebGraphicsContext3DDefaultImpl::getProgramInfoLog):
        (WebKit::WebGraphicsContext3DDefaultImpl::getShaderInfoLog):
        (WebKit::WebGraphicsContext3DDefaultImpl::getShaderSource):
        (WebKit::WebGraphicsContext3DDefaultImpl::getString):
        (WebKit::WebGraphicsContext3DDefaultImpl::getVertexAttribOffset):
        (WebKit::WebGraphicsContext3DDefaultImpl::releaseShaderCompiler):
        (WebKit::WebGraphicsContext3DDefaultImpl::shaderSource):
        (WebKit::WebGraphicsContext3DDefaultImpl::vertexAttribPointer):
        (WebKit::WebGraphicsContext3DDefaultImpl::createBuffer):
        (WebKit::WebGraphicsContext3DDefaultImpl::createFramebuffer):
        (WebKit::WebGraphicsContext3DDefaultImpl::createProgram):
        (WebKit::WebGraphicsContext3DDefaultImpl::createRenderbuffer):
        (WebKit::WebGraphicsContext3DDefaultImpl::createTexture):
        (WebKit::WebGraphicsContext3DDefaultImpl::deleteBuffer):
        (WebKit::WebGraphicsContext3DDefaultImpl::deleteFramebuffer):
        (WebKit::WebGraphicsContext3DDefaultImpl::deleteProgram):
        (WebKit::WebGraphicsContext3DDefaultImpl::deleteRenderbuffer):
        (WebKit::WebGraphicsContext3DDefaultImpl::deleteShader):
        (WebKit::WebGraphicsContext3DDefaultImpl::deleteTexture):
        (WebKit::WebGraphicsContext3DDefaultImpl::synthesizeGLError):
        * src/WebGraphicsContext3DDefaultImpl.h: Added.
        (WebKit::WebGraphicsContext3DDefaultImpl::):
        (WebKit::WebGraphicsContext3DDefaultImpl::GLConnection::chooseFBConfig):
        (WebKit::WebGraphicsContext3DDefaultImpl::GLConnection::createNewContext):
        (WebKit::WebGraphicsContext3DDefaultImpl::GLConnection::createPbuffer):
        (WebKit::WebGraphicsContext3DDefaultImpl::GLConnection::destroyPbuffer):
        (WebKit::WebGraphicsContext3DDefaultImpl::GLConnection::makeCurrent):
        (WebKit::WebGraphicsContext3DDefaultImpl::GLConnection::destroyContext):
        (WebKit::WebGraphicsContext3DDefaultImpl::GLConnection::getCurrentContext):
        (WebKit::WebGraphicsContext3DDefaultImpl::GLConnection::GLConnection):

2010-03-22  Jay Campan  <jcampan@google.com>

        Reviewed by Darin Fisher.

        Making Chromium select popups not steal activation from the browser.
        Select popups are now like autocomplete popups, shown in non-activated
        windows.
        https://bugs.webkit.org/show_bug.cgi?id=36062

        * public/WebViewClient.h:
        (WebKit::WebViewClient::createPopupMenu):
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::popupOpened):
        (WebKit::ChromeClientImpl::popupClosed):
        * src/ChromeClientImpl.h:
        * src/WebViewImpl.cpp:
        (WebKit::):
        (WebKit::WebViewImpl::mouseDown):
        (WebKit::WebViewImpl::keyEvent):
        (WebKit::WebViewImpl::selectPopupHandleKeyEvent):
        (WebKit::WebViewImpl::hideSelectPopup):
        (WebKit::WebViewImpl::popupOpened):
        (WebKit::WebViewImpl::popupClosed):
        (WebKit::WebViewImpl::setFocus):
        (WebKit::WebViewImpl::applyAutoFillSuggestions):
        (WebKit::WebViewImpl::applyAutocompleteSuggestions):
        * src/WebViewImpl.h:

2010-03-22  Darin Fisher  <darin@chromium.org>

        Reviewed by Nate Chapin.

        [chromium] Renderer crashes when navigating to a reference fragment in
        a frame that has no current HistoryItem.

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

        Test: fast/loader/crash-replacing-location-before-load.html

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

2010-03-22  Kevin Decker  <kdecker@apple.com>

        Reviewed by John Sullivan.

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

        * src/LocalizedStrings.cpp:
        (WebCore::missingPluginText): Added

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

        Reviewed by Pavel Feldman.

        Fix inspected Page crash in destructor when Web Inspector is open.

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

        * src/js/InjectDispatch.js:
        (inspectedPageDestroyed): Added stub for missing method.

2010-03-22  Jochen Eisinger  <jochen@chromium.org>

        Reviewed by Jeremy Orlow.

        Added methods to WebSecurityOrigin for invoking
        SecurityOrigin::canAccess and SecurityOrigin::Create
        https://bugs.webkit.org/show_bug.cgi?id=36356

        * public/WebSecurityOrigin.h:
        * src/WebSecurityOrigin.cpp:
        (WebKit::WebSecurityOrigin::create):
        (WebKit::WebSecurityOrigin::canAccess):

2010-03-20  Dimitri Glazkov  <dglazkov@chromium.org>

        No review, rolling out r56294.
        http://trac.webkit.org/changeset/56294
        https://bugs.webkit.org/show_bug.cgi?id=36262

        Broke compile on Chromium canaries.

        * WebKit.gyp:
        * public/WebGraphicsContext3D.h: Removed.
        * public/WebKitClient.h:
        * src/GraphicsContext3D.cpp:
        (WebCore::GraphicsContext3DInternal::):
        (WebCore::GraphicsContext3DInternal::GLConnection::chooseFBConfig):
        (WebCore::GraphicsContext3DInternal::GLConnection::createNewContext):
        (WebCore::GraphicsContext3DInternal::GLConnection::createPbuffer):
        (WebCore::GraphicsContext3DInternal::GLConnection::destroyPbuffer):
        (WebCore::GraphicsContext3DInternal::GLConnection::makeCurrent):
        (WebCore::GraphicsContext3DInternal::GLConnection::destroyContext):
        (WebCore::GraphicsContext3DInternal::GLConnection::getCurrentContext):
        (WebCore::GraphicsContext3DInternal::GLConnection::GLConnection):
        (WebCore::GraphicsContext3DInternal::GLConnection::create):
        (WebCore::GraphicsContext3DInternal::GLConnection::~GLConnection):
        (WebCore::GraphicsContext3DInternal::VertexAttribPointerState::VertexAttribPointerState):
        (WebCore::GraphicsContext3DInternal::GraphicsContext3DInternal):
        (WebCore::GraphicsContext3DInternal::~GraphicsContext3DInternal):
        (WebCore::GraphicsContext3DInternal::makeContextCurrent):
        (WebCore::GraphicsContext3DInternal::platformGraphicsContext3D):
        (WebCore::GraphicsContext3DInternal::platformTexture):
        (WebCore::createTextureObject):
        (WebCore::GraphicsContext3DInternal::reshape):
        (WebCore::GraphicsContext3DInternal::flipVertically):
        (WebCore::GraphicsContext3DInternal::beginPaint):
        (WebCore::GraphicsContext3DInternal::activeTexture):
        (WebCore::GraphicsContext3DInternal::bindBuffer):
        (WebCore::GraphicsContext3DInternal::bindFramebuffer):
        (WebCore::GraphicsContext3DInternal::bindTexture):
        (WebCore::GraphicsContext3DInternal::bufferDataImpl):
        (WebCore::GraphicsContext3DInternal::disableVertexAttribArray):
        (WebCore::GraphicsContext3DInternal::enableVertexAttribArray):
        (WebCore::GraphicsContext3DInternal::getError):
        (WebCore::GraphicsContext3DInternal::getContextAttributes):
        (WebCore::GraphicsContext3DInternal::vertexAttribPointer):
        (WebCore::GraphicsContext3DInternal::viewportImpl):
        (WebCore::GraphicsContext3DInternal::synthesizeGLError):
        (WebCore::GraphicsContext3D::create):
        (WebCore::GraphicsContext3D::GraphicsContext3D):
        (WebCore::GraphicsContext3D::~GraphicsContext3D):
        (WebCore::GraphicsContext3D::platformGraphicsContext3D):
        (WebCore::GraphicsContext3D::platformTexture):
        (WebCore::GraphicsContext3D::makeContextCurrent):
        (WebCore::GraphicsContext3D::reshape):
        (WebCore::GraphicsContext3D::beginPaint):
        (WebCore::GraphicsContext3D::endPaint):
        (WebCore::GraphicsContext3D::sizeInBytes):
        (WebCore::GraphicsContext3D::createBuffer):
        (WebCore::GraphicsContext3D::createFramebuffer):
        (WebCore::GraphicsContext3D::createProgram):
        (WebCore::GraphicsContext3D::createRenderbuffer):
        (WebCore::GraphicsContext3D::createShader):
        (WebCore::GraphicsContext3D::createTexture):
        (WebCore::GraphicsContext3D::deleteBuffer):
        (WebCore::GraphicsContext3D::deleteFramebuffer):
        (WebCore::GraphicsContext3D::deleteProgram):
        (WebCore::GraphicsContext3D::deleteRenderbuffer):
        (WebCore::GraphicsContext3D::deleteShader):
        (WebCore::GraphicsContext3D::deleteTexture):
        (WebCore::GraphicsContext3D::activeTexture):
        (WebCore::GraphicsContext3D::bindAttribLocation):
        (WebCore::GraphicsContext3D::bindBuffer):
        (WebCore::GraphicsContext3D::bindFramebuffer):
        (WebCore::GraphicsContext3D::bindTexture):
        (WebCore::GraphicsContext3D::bufferData):
        (WebCore::GraphicsContext3D::bufferSubData):
        (WebCore::GraphicsContext3D::checkFramebufferStatus):
        (WebCore::GraphicsContext3D::detachShader):
        (WebCore::GraphicsContext3D::disableVertexAttribArray):
        (WebCore::GraphicsContext3D::drawArrays):
        (WebCore::GraphicsContext3D::drawElements):
        (WebCore::GraphicsContext3D::enableVertexAttribArray):
        (WebCore::GraphicsContext3D::generateMipmap):
        (WebCore::GraphicsContext3D::getActiveAttrib):
        (WebCore::GraphicsContext3D::getActiveUniform):
        (WebCore::GraphicsContext3D::getAttribLocation):
        (WebCore::GraphicsContext3D::getBooleanv):
        (WebCore::GraphicsContext3D::getBufferParameteriv):
        (WebCore::GraphicsContext3D::getContextAttributes):
        (WebCore::GraphicsContext3D::getError):
        (WebCore::GraphicsContext3D::getFloatv):
        (WebCore::GraphicsContext3D::getFramebufferAttachmentParameteriv):
        (WebCore::GraphicsContext3D::getIntegerv):
        (WebCore::GraphicsContext3D::getProgramiv):
        (WebCore::GraphicsContext3D::getProgramInfoLog):
        (WebCore::GraphicsContext3D::getRenderbufferParameteriv):
        (WebCore::GraphicsContext3D::getShaderiv):
        (WebCore::GraphicsContext3D::getShaderInfoLog):
        (WebCore::GraphicsContext3D::getShaderSource):
        (WebCore::GraphicsContext3D::getString):
        (WebCore::GraphicsContext3D::getTexParameterfv):
        (WebCore::GraphicsContext3D::getTexParameteriv):
        (WebCore::GraphicsContext3D::getUniformfv):
        (WebCore::GraphicsContext3D::getUniformiv):
        (WebCore::GraphicsContext3D::getUniformLocation):
        (WebCore::GraphicsContext3D::getVertexAttribfv):
        (WebCore::GraphicsContext3D::getVertexAttribiv):
        (WebCore::GraphicsContext3D::getVertexAttribOffset):
        (WebCore::GraphicsContext3D::isBuffer):
        (WebCore::GraphicsContext3D::isEnabled):
        (WebCore::GraphicsContext3D::isFramebuffer):
        (WebCore::GraphicsContext3D::isProgram):
        (WebCore::GraphicsContext3D::isRenderbuffer):
        (WebCore::GraphicsContext3D::isShader):
        (WebCore::GraphicsContext3D::isTexture):
        (WebCore::GraphicsContext3D::pixelStorei):
        (WebCore::GraphicsContext3D::readPixels):
        (WebCore::GraphicsContext3D::releaseShaderCompiler):
        (WebCore::GraphicsContext3D::shaderSource):
        (WebCore::GraphicsContext3D::synthesizeGLError):
        (WebCore::GraphicsContext3D::texImage2D):
        (WebCore::GraphicsContext3D::texSubImage2D):
        (WebCore::GraphicsContext3D::uniform1fv):
        (WebCore::GraphicsContext3D::uniform1iv):
        (WebCore::GraphicsContext3D::uniform2fv):
        (WebCore::GraphicsContext3D::uniform2iv):
        (WebCore::GraphicsContext3D::uniform3fv):
        (WebCore::GraphicsContext3D::uniform3iv):
        (WebCore::GraphicsContext3D::uniform4fv):
        (WebCore::GraphicsContext3D::uniform4iv):
        (WebCore::GraphicsContext3D::uniformMatrix2fv):
        (WebCore::GraphicsContext3D::uniformMatrix3fv):
        (WebCore::GraphicsContext3D::uniformMatrix4fv):
        (WebCore::GraphicsContext3D::vertexAttrib1fv):
        (WebCore::GraphicsContext3D::vertexAttrib2fv):
        (WebCore::GraphicsContext3D::vertexAttrib3fv):
        (WebCore::GraphicsContext3D::vertexAttrib4fv):
        (WebCore::GraphicsContext3D::vertexAttribPointer):
        (WebCore::GraphicsContext3D::viewport):
        * src/WebGraphicsContext3D.cpp: Removed.
        * src/WebGraphicsContext3DDefaultImpl.cpp: Removed.
        * src/WebGraphicsContext3DDefaultImpl.h: Removed.

2010-03-19  Kenneth Russell  <kbr@google.com>

        Reviewed by Darin Fisher.

        Add GraphicsContext3D abstraction to WebKit API
        https://bugs.webkit.org/show_bug.cgi?id=36262

        Added WebGraphicsContext3D to the WebKit API and refactored Chromium's
        GraphicsContext3D implementation to use it. All of the OpenGL calls have
        been moved out of WebKit/chromium/src/GraphicsContext3D.cpp and into the
        WebGraphicsContext3D implementation. GraphicsContext3D is still
        responsible for the transfer of rendered output from the
        WebGraphicsContext3D to the HTMLCanvasElement.

        The GraphicsContext3DInternal class, which is a data member of
        GraphicsContext3D for the Chromium port, remains. It is possible to
        eliminate this class and thereby one level of delegation, but this is
        being deferred.

        The needed entry point for a Chrome implementation of
        WebGraphicsContext3D has been added to WebKitClient, but it is not being
        called yet by GraphicsContext3D. It will be once this patch lands and
        Chromium is rolled forward to support this entry point.

        This is a large patch, but the transformation is almost entirely
        mechanical and there is no change in functionality. Nearly all of
        GraphicsContext3D and GraphicsContext3DInternal has been moved to
        WebGraphicsContext3DDefaultImpl. The only area where the splitting of
        logic is less than mechanical is GraphicsContext3D::beginPaint() and its
        callees.

        Ran all WebGL layout tests and demos from Khronos site in Chromium.

        * WebKit.gyp:
        * public/WebGraphicsContext3D.h: Added.
        (WebKit::WebGraphicsContext3D::Attributes::Attributes):
        (WebKit::WebGraphicsContext3D::~WebGraphicsContext3D):
        * public/WebKitClient.h:
        (WebKit::WebKitClient::createGraphicsContext3D):
        * src/GraphicsContext3D.cpp:
        (WebCore::GraphicsContext3DInternal::GraphicsContext3DInternal):
        (WebCore::GraphicsContext3DInternal::~GraphicsContext3DInternal):
        (WebCore::GraphicsContext3DInternal::initialize):
        (WebCore::GraphicsContext3DInternal::platformGraphicsContext3D):
        (WebCore::GraphicsContext3DInternal::platformTexture):
        (WebCore::GraphicsContext3DInternal::beginPaint):
        (WebCore::GraphicsContext3DInternal::endPaint):
        (WebCore::GraphicsContext3DInternal::reshape):
        (WebCore::GraphicsContext3DInternal::bindAttribLocation):
        (WebCore::GraphicsContext3DInternal::bindTexture):
        (WebCore::GraphicsContext3DInternal::bufferData):
        (WebCore::GraphicsContext3DInternal::bufferSubData):
        (WebCore::GraphicsContext3DInternal::getActiveAttrib):
        (WebCore::GraphicsContext3DInternal::getActiveUniform):
        (WebCore::GraphicsContext3DInternal::getAttribLocation):
        (WebCore::GraphicsContext3DInternal::getContextAttributes):
        (WebCore::GraphicsContext3DInternal::getProgramInfoLog):
        (WebCore::GraphicsContext3DInternal::getShaderInfoLog):
        (WebCore::GraphicsContext3DInternal::getShaderSource):
        (WebCore::GraphicsContext3DInternal::getString):
        (WebCore::GraphicsContext3DInternal::getUniformLocation):
        (WebCore::GraphicsContext3DInternal::readPixels):
        (WebCore::GraphicsContext3DInternal::shaderSource):
        (WebCore::GraphicsContext3DInternal::texImage2D):
        (WebCore::GraphicsContext3DInternal::texSubImage2D):
        (WebCore::GraphicsContext3DInternal::uniform1fv):
        (WebCore::GraphicsContext3DInternal::uniform1iv):
        (WebCore::GraphicsContext3DInternal::uniform2fv):
        (WebCore::GraphicsContext3DInternal::uniform2iv):
        (WebCore::GraphicsContext3DInternal::uniform3fv):
        (WebCore::GraphicsContext3DInternal::uniform3iv):
        (WebCore::GraphicsContext3DInternal::uniform4fv):
        (WebCore::GraphicsContext3DInternal::uniform4iv):
        (WebCore::GraphicsContext3DInternal::uniformMatrix2fv):
        (WebCore::GraphicsContext3DInternal::uniformMatrix3fv):
        (WebCore::GraphicsContext3DInternal::uniformMatrix4fv):
        (WebCore::GraphicsContext3D::GraphicsContext3D):
        (WebCore::GraphicsContext3D::~GraphicsContext3D):
        (WebCore::GraphicsContext3D::create):
        (WebCore::GraphicsContext3D::platformGraphicsContext3D):
        (WebCore::GraphicsContext3D::platformTexture):
        (WebCore::GraphicsContext3D::texImage2D):
        (WebCore::GraphicsContext3D::texSubImage2D):
        * src/WebGraphicsContext3D.cpp: Added.
        (WebKit::WebGraphicsContext3D::createDefault):
        * src/WebGraphicsContext3DDefaultImpl.cpp: Added.
        (WebKit::WebGraphicsContext3DDefaultImpl::GLConnection::create):
        (WebKit::WebGraphicsContext3DDefaultImpl::GLConnection::~GLConnection):
        (WebKit::WebGraphicsContext3DDefaultImpl::VertexAttribPointerState::VertexAttribPointerState):
        (WebKit::WebGraphicsContext3DDefaultImpl::WebGraphicsContext3DDefaultImpl):
        (WebKit::WebGraphicsContext3DDefaultImpl::~WebGraphicsContext3DDefaultImpl):
        (WebKit::WebGraphicsContext3DDefaultImpl::initialize):
        (WebKit::WebGraphicsContext3DDefaultImpl::makeContextCurrent):
        (WebKit::WebGraphicsContext3DDefaultImpl::width):
        (WebKit::WebGraphicsContext3DDefaultImpl::height):
        (WebKit::WebGraphicsContext3DDefaultImpl::sizeInBytes):
        (WebKit::createTextureObject):
        (WebKit::WebGraphicsContext3DDefaultImpl::reshape):
        (WebKit::WebGraphicsContext3DDefaultImpl::flipVertically):
        (WebKit::WebGraphicsContext3DDefaultImpl::readBackFramebuffer):
        (WebKit::WebGraphicsContext3DDefaultImpl::activeTexture):
        (WebKit::WebGraphicsContext3DDefaultImpl::bindBuffer):
        (WebKit::WebGraphicsContext3DDefaultImpl::bindFramebuffer):
        (WebKit::WebGraphicsContext3DDefaultImpl::disableVertexAttribArray):
        (WebKit::WebGraphicsContext3DDefaultImpl::drawElements):
        (WebKit::WebGraphicsContext3DDefaultImpl::enableVertexAttribArray):
        (WebKit::WebGraphicsContext3DDefaultImpl::generateMipmap):
        (WebKit::WebGraphicsContext3DDefaultImpl::getActiveAttrib):
        (WebKit::WebGraphicsContext3DDefaultImpl::getActiveUniform):
        (WebKit::WebGraphicsContext3DDefaultImpl::getContextAttributes):
        (WebKit::WebGraphicsContext3DDefaultImpl::getError):
        (WebKit::WebGraphicsContext3DDefaultImpl::getProgramInfoLog):
        (WebKit::WebGraphicsContext3DDefaultImpl::getShaderInfoLog):
        (WebKit::WebGraphicsContext3DDefaultImpl::getShaderSource):
        (WebKit::WebGraphicsContext3DDefaultImpl::getString):
        (WebKit::WebGraphicsContext3DDefaultImpl::getVertexAttribOffset):
        (WebKit::WebGraphicsContext3DDefaultImpl::releaseShaderCompiler):
        (WebKit::WebGraphicsContext3DDefaultImpl::shaderSource):
        (WebKit::WebGraphicsContext3DDefaultImpl::vertexAttribPointer):
        (WebKit::WebGraphicsContext3DDefaultImpl::createBuffer):
        (WebKit::WebGraphicsContext3DDefaultImpl::createFramebuffer):
        (WebKit::WebGraphicsContext3DDefaultImpl::createProgram):
        (WebKit::WebGraphicsContext3DDefaultImpl::createRenderbuffer):
        (WebKit::WebGraphicsContext3DDefaultImpl::createTexture):
        (WebKit::WebGraphicsContext3DDefaultImpl::deleteBuffer):
        (WebKit::WebGraphicsContext3DDefaultImpl::deleteFramebuffer):
        (WebKit::WebGraphicsContext3DDefaultImpl::deleteProgram):
        (WebKit::WebGraphicsContext3DDefaultImpl::deleteRenderbuffer):
        (WebKit::WebGraphicsContext3DDefaultImpl::deleteShader):
        (WebKit::WebGraphicsContext3DDefaultImpl::deleteTexture):
        (WebKit::WebGraphicsContext3DDefaultImpl::synthesizeGLError):
        * src/WebGraphicsContext3DDefaultImpl.h: Added.
        (WebKit::WebGraphicsContext3DDefaultImpl::):
        (WebKit::WebGraphicsContext3DDefaultImpl::GLConnection::chooseFBConfig):
        (WebKit::WebGraphicsContext3DDefaultImpl::GLConnection::createNewContext):
        (WebKit::WebGraphicsContext3DDefaultImpl::GLConnection::createPbuffer):
        (WebKit::WebGraphicsContext3DDefaultImpl::GLConnection::destroyPbuffer):
        (WebKit::WebGraphicsContext3DDefaultImpl::GLConnection::makeCurrent):
        (WebKit::WebGraphicsContext3DDefaultImpl::GLConnection::destroyContext):
        (WebKit::WebGraphicsContext3DDefaultImpl::GLConnection::getCurrentContext):
        (WebKit::WebGraphicsContext3DDefaultImpl::GLConnection::GLConnection):

2010-03-19  Dimitri Glazkov  <dglazkov@chromium.org>

        Unreviewed, build fix.

        Rename enqueueStorageEvent to enqueueEvent to match changes in
        http://trac.webkit.org/changeset/56249.

        * src/StorageAreaProxy.cpp:
        (WebCore::StorageAreaProxy::storageEvent): Renamed.

2010-03-19  Darin Fisher  <darin@chromium.org>

        Reviewed by Dimitri Glazkov.

        [chromium] querying the current history item during a back/forward
        navigation should not clobber the scroll offset, etc.
        https://bugs.webkit.org/show_bug.cgi?id=36347

        We should only allow the current history item to be modified if we are
        no longer loading or if the load is a new navigation (i.e., not a
        back/forward/reload variant).

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

2010-03-18  Vangelis Kokkevis  <vangelis@chromium.org>

        Reviewed by Adam Barth.

        Adding support for the ACCELERATED_COMPOSITING render path to Chromium.
        https://bugs.webkit.org/show_bug.cgi?id=35557
        Currently compositing of layers is performed via s/w compositor which relies on Skia. This is an initial check-in
        and it's only been tested on Windows. Compiling the code requires seting "use_accelerated_compositing=1"
        to GYP_DEFINES. The update of layer contents and compositing is fairly inefficient but this will be fixed in
        subsequent check-ins.

        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::attachRootGraphicsLayer):
        (WebKit::ChromeClientImpl::scheduleCompositingLayerSync):
        * src/ChromeClientImpl.h:
        (WebKit::ChromeClientImpl::setNeedsOneShotDrawingSynchronization):
         Added methods required by the RenderLayerCompositor

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::paintWithContext):
        (WebKit::WebFrameImpl::paint):
        * src/WebFrameImpl.h:
        Split WebFrameImpl::paint() into two methods to make it possible to call the paint
        routine with an existing GraphicsContext, which is necessary for painting the root layer into
        its own backing surface.

        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::WebViewImpl):
        (WebKit::WebViewImpl::paint):
        Modified method to handle the accelerated compositing path. Now, when doing accelerated compositing,
        paint() results in repainting the contents of the root layer and then doing a composite operation.
        (WebKit::WebViewImpl::setRootGraphicsLayer):
        (WebKit::WebViewImpl::setAcceleratedCompositing):
        (WebKit::WebViewImpl::updateRootLayerContents):
        (WebKit::WebViewImpl::setRootLayerNeedsDisplay):
        * src/WebViewImpl.h:
        (WebKit::WebViewImpl::isAcceleratedCompositing):

2010-03-18  Jian Li  <jianli@chromium.org>

        Reviewed by Darin Fisher.

        Chromium interface change to support Blob.slice.
        https://bugs.webkit.org/show_bug.cgi?id=35318

        * features.gypi:
        * public/WebHTTPBody.h:
        * public/WebKitClient.h:
        (WebKit::WebKitClient::getFileModificationTime):
        * src/ChromiumBridge.cpp:
        (WebCore::ChromiumBridge::getFileModificationTime):
        * src/WebHTTPBody.cpp:
        (WebKit::WebHTTPBody::elementAt):
        (WebKit::WebHTTPBody::appendFile):
        (WebKit::WebHTTPBody::appendFileRange):

2010-03-12  Ojan Vafai  <ojan@chromium.org>

        Reviewed by David Levin.

        smartdelete should only occur after double-click
        https://bugs.webkit.org/show_bug.cgi?id=35314

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::selectWordAroundPosition):

2010-03-18  Nate Chapin  <japhet@chromium.org>

        Unreviewed, build fix.

        Left a parentheses unclosed somehow.

        * src/WebDevToolsFrontendImpl.cpp:
        (WebKit::WebDevToolsFrontendImpl::jsShowContextMenu):

2010-03-18  Nate Chapin  <japhet@chromium.org>

        Reviewed by Dimitri Glazkov.
        
        Remove all references to V8Index.h and V8ClassIndex.
        
        https://bugs.webkit.org/show_bug.cgi?id=33477

        * src/WebBindings.cpp:
        (WebKit::getRangeImpl):
        * src/WebDevToolsAgentImpl.cpp:
        * src/WebDevToolsFrontendImpl.cpp:
        (WebKit::WebDevToolsFrontendImpl::jsShowContextMenu):

2010-03-17  Garret Kelly  <gdk@chromium.org>

        Reviewed by Darin Fisher.

        PlatformTouchEventBuilder should not be resizing the touch point
        array before appending touch points to it.
        https://bugs.webkit.org/show_bug.cgi?id=36231

        * src/WebInputEventConversion.cpp:
        (WebKit::PlatformTouchEventBuilder::PlatformTouchEventBuilder):

2010-03-17  Dmitry Titov  <dimich@chromium.org>

        Reviewed by Dimitri Glazkov.

        [chromium] Roll Chromium builder's DEPS to current revs.
        https://bugs.webkit.org/show_bug.cgi?id=36241

        * DEPS:

2010-03-17  Kenneth Russell  <kbr@google.com>

        Reviewed by Darin Fisher.

        Revert WebGL context attributes changes 33416 / r56074 and 36200 / r56093
        https://bugs.webkit.org/show_bug.cgi?id=36233

        The patch for bug 33416, which added multisampling support to the
        WebGL back buffer, uncovered some OpenGL driver bugs on the build
        bots which need further investigation to determine the appropriate
        workaround. Reverting this change, the minor build fix in 36189,
        and the skipping of the affected tests in bug 36200.

        Built and tested WebKit and Chromium and ran all WebGL layout
        tests in both.

        * src/GraphicsContext3D.cpp:
        (WebCore::GraphicsContext3DInternal::GraphicsContext3DInternal):
        (WebCore::GraphicsContext3DInternal::~GraphicsContext3DInternal):
        (WebCore::GraphicsContext3DInternal::reshape):
        (WebCore::GraphicsContext3DInternal::beginPaint):
        (WebCore::GraphicsContext3DInternal::bindFramebuffer):
        (WebCore::GraphicsContext3D::readPixels):

2010-03-16  James Hawkins  <jhawkins@chromium.org>

        Reviewed by David Levin.

        [Chromium] Size the WebVector of forms after determining how many
        forms are valid and will be returned.

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

        No new tests, as this is only triggered by Chromium's use of the
        WebFormElement API.

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::forms):

2010-03-16  Kenneth Russell  <kbr@google.com>

        Reviewed by Darin Fisher.

        Build breakage from 33416
        https://bugs.webkit.org/show_bug.cgi?id=36189

        No new tests. Built release Chromium.

        * src/GraphicsContext3D.cpp:
        (WebCore::GraphicsContext3DInternal::reshape):

2010-03-16  Zhenyao Mo  <zmo@google.com>

        Reviewed by Darin Fisher.

        Hook up WebGLContextAttributes to OpenGL context creation code
        https://bugs.webkit.org/show_bug.cgi?id=33416

        Test: fast/canvas/webgl/context-attributes-alpha-depth-stencil-antialias.html

        * src/GraphicsContext3D.cpp: Hook up WebGLContextAttributes to OpenGL context creation code for Windows.

2010-03-16  Yury Semikhatsky  <yurys@chromium.org>

        Unreviewed.

        Fix Chromium Mac build: remove unused code.

        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::createInspectorFrontendProxy):

2010-03-16  Yury Semikhatsky <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Introduce InspectorFrontendClient that provides InspectorFrontend with an interface to the embedder. InspectorClient now serves as a delegate for InspectorController and does not contain methods for managing inspector frontend window. That allows to create remote InspectorFrontendHost.

        Introduce InspectorFrontendClient that would provide InspectorFrontend with an interface to the embedder
        https://bugs.webkit.org/show_bug.cgi?id=35036

        * src/InspectorClientImpl.cpp:
        (WebKit::InspectorClientImpl::openInspectorFrontend):
        * src/InspectorClientImpl.h:
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::attach):
        (WebKit::WebDevToolsAgentImpl::didCommitProvisionalLoad):
        (WebKit::WebDevToolsAgentImpl::createInspectorFrontendProxy):
        (WebKit::WebDevToolsAgentImpl::setInspectorFrontendProxyToInspectorController):
        * src/WebDevToolsAgentImpl.h:
        * src/WebDevToolsFrontendImpl.cpp:
        (WebKit::WebDevToolsFrontendImpl::WebDevToolsFrontendImpl):
        (WebKit::WebDevToolsFrontendImpl::jsBringToFront):
        (WebKit::WebDevToolsFrontendImpl::jsInspectedURLChanged):
        * src/WebDevToolsFrontendImpl.h:
        * src/js/InjectDispatch.js:
        (close):

2010-03-16  Pavel Feldman  <pfeldman@chromium.org>

        Not reviewed: chromium tests fix.

        * src/js/InspectorControllerImpl.js:
        (devtools.InspectorBackendImpl):

2010-03-16  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Timothy Hatcher.

        Web Inspector: migrate to native styles inspector in order to inspect styles from foreighn domains.

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

        * src/js/InspectorControllerImpl.js:
        (devtools.InspectorBackendImpl):

2010-03-15  John Gregg  <johnnyg@google.com>

        Reviewed by David Levin.

        Notification object should expose absolute URL of icon
        https://bugs.webkit.org/show_bug.cgi?id=35800

        * public/WebNotification.h:
        * src/WebNotification.cpp:
        (WebKit::WebNotification::iconURL):

2010-03-15  Darin Fisher  <darin@chromium.org>

        Reviewed by Adam Barth.

        https://bugs.webkit.org/show_bug.cgi?id=36152
        [chromium] Add support for history.pushState and history.replaceState

        * public/WebFrameClient.h:
        (WebKit::WebFrameClient::didNavigateWithinPage): Move implementation of
        didChangeLocationWithinPage to here.  Only add to the redirect chain if
        we are performing a simple hash change (i.e., no state object on the
        history item).  Call the old didChangeLocationWithinPage for backwards
        compat with Chromium.  This will be removed in a subsequent patch.

        (WebKit::WebFrameClient::didChangeLocationWithinPage):
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::dispatchDidNavigateWithinPage):
        (WebKit::FrameLoaderClientImpl::dispatchDidChangeLocationWithinPage):
        Call the new version of didChangeLocationWithinPage without the
        parameter to indicate whether this is a new navigation or not.  We only
        need this method on WebFrameClient to support TestShell / DRT.

        (WebKit::FrameLoaderClientImpl::dispatchDidPushStateWithinPage):
        Call dispatchDidNavigateWithinPage since pushState is just a type of
        in-page navigation.  This is an in-page navigation that adds another
        entry to session history.

        (WebKit::FrameLoaderClientImpl::dispatchDidReplaceStateWithinPage):
        Call dispatchDidNavigateWithinPage since replaceState is just a type of
        in-page navigation.   This is an in-page navigation that replaces the
        current session history entry.

        (WebKit::FrameLoaderClientImpl::dispatchDidPopStateWithinPage): Do
        nothing since dispatchDidNavigateWithinPage is called in this case by
        the FrameLoader.

        (WebKit::FrameLoaderClientImpl::dispatchDecidePolicyForNavigationAction):
        (WebKit::FrameLoaderClientImpl::shouldGoToHistoryItem): Move the code
        for handling the dummy chrome-back-forward://go/ URLs from
        dispatchDecidePolicyForNavigationAction to shouldGoToHistoryItem, which
        prevents the URLs from leaking into session history.
        shouldGoToHistoryItem is called before any work is done by history
        traversal, so this is a better place for this hack.  Ultimately, this
        code should be eliminatd in favor of better integration with
        FrameLoader or HistoryController.

        * src/FrameLoaderClientImpl.h:

2010-03-15  Darin Fisher  <darin@chromium.org>

        Fix build bustage.  We also need to pull down "third_party/tcmalloc"

        * DEPS:

2010-03-15  Darin Fisher  <darin@chromium.org>

        Fix build bustage.  We also need to pull down "gfx"

        * DEPS:

2010-03-15  Darin Fisher  <darin@chromium.org>

        Reviewed by David Levin.

        https://bugs.webkit.org/show_bug.cgi?id=36131
        Update include paths for chromium Rect, Point, and Size types.

        Update DEPS to pull latest chromium code that reflects the
        new location of these headers.

        * DEPS:
        * public/WebPoint.h:
        * public/WebRect.h:
        * public/WebSize.h:

2010-03-15  Marcus Bulach  <bulach@chromium.org>

        Reviewed by Jeremy Orlow.

        Send the frame URL on GeolocationServiceBridgeImpl::startUpdating.
        https://bugs.webkit.org/show_bug.cgi?id=36012

        * public/GeolocationServiceBridgeChromium.h:
        * src/GeolocationServiceBridgeChromium.cpp:
        (WebKit::GeolocationServiceBridgeImpl::startUpdating):

2010-03-15  Patrik Persson  <patrik.j.persson@ericsson.com>

        Reviewed by Darin Adler.

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

        Revise iframe sandbox behavior to match the updated HTML5 spec.

        - Enables window.sessionStorage in sandboxed iframes.

        - Raises SECURITY_ERR exceptions when window.localStorage or
          window.openDatabase() is blocked by iframe sandboxing.

          Note: window.sessionStorage does not raise exceptions.

        WebKit would previously return null references in these cases.  The
        new behavior is in accordance with HTML5:

          http://dev.w3.org/html5/webstorage/   (sections 4.2 and 4.3)
          http://dev.w3.org/html5/webdatabase/  (section 4.1)
          http://www.mail-archive.com/whatwg@lists.whatwg.org/msg19786.html

        * src/StorageAreaProxy.cpp:
        (WebCore::StorageAreaProxy::storageEvent): exception handling
        * src/StorageEventDispatcherImpl.cpp:
        (WebCore::StorageEventDispatcherImpl::dispatchStorageEvent): exception handling

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

        Reviewed by Darin Adler.

        option-pageup/down should move cursor on chromium mac
        https://bugs.webkit.org/show_bug.cgi?id=36108

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

2010-03-13  Eric Roman  <eroman@chromium.org>

        Reviewed by Adam Barth.

        Add a firstPartyForCookies() property to WebDocument.
        https://bugs.webkit.org/show_bug.cgi?id=35592

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

2010-03-12  Garret Kelly  <gdk@chromium.org>

        Unreiviewed.

        Fix Chromium Mac build. Last patch did not apply properly.
        (Garret assures me this patch will actually work.)

        * src/WebInputEventConversion.cpp:
        (WebKit::toPlatformTouchEventType):
        (WebKit::toPlatformTouchPointState):

2010-03-12  Garret Kelly  <gdk@chromium.org>

        Unreviewed.

        Fix Chromium Mac build. This time, with actual fixing goodness.

        * src/WebInputEventConversion.cpp:
        (WebKit::toPlatformTouchEventType):
        (WebKit::toPlatformTouchPointState):

2010-03-12  Garret Kelly  <gdk@chromium.org>

        Unreviewed.

        Fix Chromium Mac build.

        * src/WebInputEventConversion.cpp:
        (WebKit::toPlatformTouchEventType):
        (WebKit::toPlatformTouchPointState):

2010-03-12  Garret Kelly  <gdk@chromium.org>

        Reviewed by Eric Seidel.

        Enable touch events in Chromium features gypi file.
        https://bugs.webkit.org/show_bug.cgi?id=35994

        * features.gypi:

2010-03-12  Darin Fisher  <darin@chromium.org>

        Fix Chromium build bustage.

        Wrap usage of WebPrivatePtr from WebNode.h in a #if
        WEBKIT_IMPLEMENTATION guard.

        * public/WebNode.h:

2010-03-12  Nicolas Weber  <thakis@chromium.org>

        Reviewed by David Levin.

        [Chromium] Cmd-clicking submit buttons should submit in new tab 
        https://bugs.webkit.org/show_bug.cgi?id=36023

        Take modifiers into account when clicking form buttons. E.g.
        cmd-clicking a submit button will submit in a new background tab,
        cmd-shift-clicking in a new foreground tab, shift-clicking in a new
        window. (On windows/linux, it's ctrl instead of cmd.)

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

2010-03-12  Kavita Kanetkar  <kkanetkar@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Fix memory leak in WebImageDecoder API
        https://bugs.webkit.org/show_bug.cgi?id=35946

        * src/WebImageDecoder.cpp:
        (WebKit::WebImageDecoder::setData):
        (WebKit::WebImageDecoder::getFrameAtIndex):

2010-03-11  Aaron Boodman  <aa@chromium.org>

        Kill WebDocument::applicationID() (part 1).

        Modify interface to WebCore::NotificationPresenter::checkPermission()
        and remove implementation of WebDocument::applicationID(). Breaking
        API changes will be in a subsequent change.
        https://bugs.webkit.org/show_bug.cgi?id=35846

        * public/WebNotificationPresenter.h:
        * src/NotificationPresenterImpl.cpp:
        (WebKit::NotificationPresenterImpl::checkPermission):
        * src/NotificationPresenterImpl.h:
        * src/WebDocument.cpp:
        (WebKit::WebDocument::applicationID):

2010-03-11  Stuart Morgan  <stuartmorgan@chromium.org>

        Reviewed by Darin Fisher.

        Fix the screen coordinate conversion of Chromium Mac mouse events for
        multiple-moniter setups. Also changes the global coordinate values
        to be computed from the event, rather than the instantaneous mouse
        location, and reduces code duplication for location conversion.

        Dual-sided patch with http://codereview.chromium.org/751002

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

        * src/mac/WebInputEventFactory.mm:
        (WebKit::setWebEventLocationFromEventInView):
        (WebKit::WebInputEventFactory::mouseEvent):
        (WebKit::WebInputEventFactory::mouseWheelEvent):

2010-03-11  Anders Carlsson  <andersca@apple.com>

        Reviewed by David Hyatt.

        Remove invalidateContents, it isn't used and it never makes sense to only invalidate the contents.

        * src/ChromeClientImpl.cpp:
        * src/ChromeClientImpl.h:

2010-03-10  Darin Fisher  <darin@chromium.org>

        Reviewed by Jeremy Orlow.

        Use WebPrivatePtr for WebNode
        https://bugs.webkit.org/show_bug.cgi?id=36005

        * public/WebElement.h:
        * public/WebFormElement.h:
        * public/WebInputElement.h:
        * public/WebLabelElement.h:
        * public/WebNode.h:
        (WebKit::WebNode::WebNode):
        (WebKit::WebNode::isNull):
        (WebKit::WebNode::unwrap):
        (WebKit::WebNode::constUnwrap):
        * public/WebPrivatePtr.h:
        (WebKit::WebPrivatePtr::assign):
        * src/WebDocument.cpp:
        (WebKit::WebDocument::WebDocument):
        (WebKit::WebDocument::operator=):
        (WebKit::WebDocument::operator PassRefPtr<Document>):
        * src/WebElement.cpp:
        (WebKit::WebElement::hasTagName):
        (WebKit::WebElement::WebElement):
        (WebKit::WebElement::operator=):
        (WebKit::WebElement::operator PassRefPtr<Element>):
        * src/WebFormElement.cpp:
        (WebKit::WebFormElement::WebFormElement):
        (WebKit::WebFormElement::operator=):
        (WebKit::WebFormElement::operator PassRefPtr<HTMLFormElement>):
        * src/WebInputElement.cpp:
        (WebKit::WebInputElement::WebInputElement):
        (WebKit::WebInputElement::operator=):
        (WebKit::WebInputElement::operator PassRefPtr<HTMLInputElement>):
        * src/WebLabelElement.cpp:
        (WebKit::WebLabelElement::correspondingControl):
        (WebKit::WebLabelElement::operator=):
        (WebKit::WebLabelElement::operator PassRefPtr<HTMLLabelElement>):
        * src/WebNode.cpp:
        (WebKit::WebNode::reset):
        (WebKit::WebNode::assign):
        (WebKit::WebNode::equals):
        (WebKit::WebNode::parentNode):
        (WebKit::WebNode::createMarkup):
        (WebKit::WebNode::addEventListener):
        (WebKit::WebNode::removeEventListener):
        (WebKit::WebNode::simulateClick):
        (WebKit::WebNode::WebNode):
        (WebKit::WebNode::operator=):
        (WebKit::WebNode::operator PassRefPtr<Node>):

2010-03-10  Darin Fisher  <darin@chromium.org>

        Reviewed by Jeremy Orlow.

        Add API wrapper for WebCore::SerializedScriptValue
        https://bugs.webkit.org/show_bug.cgi?id=35988

        WebSerializedScriptValue is a wrapper around SerializedScriptValue.

        WebPrivatePtr is used to simplify wrapping reference counted WebCore
        types.  This class is used to cleanup WebHistoryItem, and will be used
        to clean up other classes in the WebKit API in a follow-up patch.

        * WebKit.gyp:
        * public/WebHistoryItem.h:
        * public/WebPrivatePtr.h: Added.
        * public/WebSerializedScriptValue.h: Added.
        * src/WebHistoryItem.cpp:
        * src/WebSerializedScriptValue.cpp: Added.

2010-03-10  Sanjeev Radhakrishnan  <sanjeevr@chromium.org>

        Reviewed by Darin Fisher.

        Allow a plugin to participate in the browser's print workflow.
        https://bugs.webkit.org/show_bug.cgi?id=35550

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

2010-03-10  John Abd-El-Malek  <jam@chromium.org>

        Reviewed by Nate Chapin.

        [chromium]: Fix regression in mouse capture on Mac/Linux
        https://bugs.webkit.org/show_bug.cgi?id=35987

        * src/WebViewImpl.cpp:

2010-03-10  Evan Stade  <estade@chromium.org>

        Reviewed by David Levin.

        [chromium] add functionality to activate the focused node in a WebView
        https://bugs.webkit.org/show_bug.cgi?id=35407

        * public/WebDocument.h:
        * public/WebNode.h:
        * src/WebDocument.cpp:
        (WebKit::WebDocument::focusedNode): Added
        * src/WebNode.cpp:
        (WebKit::WebNode::simulateClick): Added

2010-03-10  John Abd-El-Malek  <jam@chromium.org>

        Reviewed by Darin Fisher.

        https://bugs.webkit.org/show_bug.cgi?id=35952
        Propagate mouse wheel events to Pepper plugins.

        * src/WebInputEventConversion.cpp:
        (WebKit::WebMouseWheelEventBuilder::WebMouseWheelEventBuilder):
        * src/WebInputEventConversion.h:
        * src/WebPluginContainerImpl.cpp:
        (WebKit::WebPluginContainerImpl::handleEvent):
        (WebKit::WebPluginContainerImpl::handleMouseEvent):
        (WebKit::WebPluginContainerImpl::handleWheelEvent):
        (WebKit::WebPluginContainerImpl::handleKeyboardEvent):
        * src/WebPluginContainerImpl.h:

2010-03-10  Garret Kelly  <gdk@chromium.org>

        Reviewed by Darin Fisher.

        Add support for converting WebTouchEvents to PlatformTouchEvents and
        routing them into the EventHandler for the frame in which they
        originate.
        https://bugs.webkit.org/show_bug.cgi?id=35874

        * src/ChromeClientImpl.h:
        (WebKit::ChromeClientImpl::needTouchEvents):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::touchEvent): Handle incoming WebTouchEvents,
        converting them to PlatformTouchEvents and sending them to the
        EventHandler.
        (WebKit::WebViewImpl::handleInputEvent): Now routes WebTouchEvents to
        the touchEvent handler.
        * src/WebViewImpl.h:

2010-03-10  Nate Chapin  <japhet@chromium.org>

        Reviewed by Dimitri Glazkov.

        Wrap and unwrap v8 objects with WrapperTypeInfo instead of V8ClassIndex::V8WrapperType.

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

        * src/WebBindings.cpp:
        (WebKit::getRangeImpl):
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::createInspectorBackendV8Wrapper):
        * src/WebDevToolsFrontendImpl.cpp:
        (WebKit::WebDevToolsFrontendImpl::jsShowContextMenu):

2010-03-10  Garret Kelly  <gdk@chromium.org>

        Reviewed by Darin Fisher.

        Fixing build warning caused by using 0 instead of NULL as the sentiel
        in a varargs call.
        https://bugs.webkit.org/show_bug.cgi?id=35898

        * src/gtk/WebInputEventFactory.cpp:

2010-03-10  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Darin Fisher.

        Add IndexedDatabase class and hook it up.
        https://bugs.webkit.org/show_bug.cgi?id=35927

        This change is mostly just adding the plumbing necessary for
        the IndexedDatabaseRequest and IndexedDatabaseSync (not written
        yet).

        * WebKit.gyp:
        * public/WebIndexedDatabase.h: Added.
        (WebKit::WebIndexedDatabase::~WebIndexedDatabase):
        * public/WebKitClient.h:
        (WebKit::WebKitClient::getIndexedDatabase):
        * src/ChromiumBridge.cpp:
        (WebCore::ChromiumBridge::getIndexedDatabase):
        * src/IndexedDatabaseProxy.cpp: Added.
        (WebCore::IndexedDatabaseProxy::create):
        (WebCore::IndexedDatabaseProxy::IndexedDatabaseProxy):
        (WebCore::IndexedDatabaseProxy::~IndexedDatabaseProxy):
        (WebCore::IndexedDatabaseProxy::open):
        * src/IndexedDatabaseProxy.h: Added.

2010-03-10  Andrey Kosyakov  <caseq@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: display list of active workers & support debugging
        with fake workers
        https://bugs.webkit.org/show_bug.cgi?id=35568

        * src/js/InspectorControllerImpl.js:
        (devtools.InspectorBackendImpl):

2010-03-10  Tony Chang  <tony@chromium.org>

        Reviewed by Darin Fisher.

        https://bugs.webkit.org/show_bug.cgi?id=35956
        Create a grd file upstream for resources that chromium uses
        that are pulled directly from the upstream repository.

        * WebKit.grd: Added.

2010-03-10  Roland Steiner  <rolandsteiner@chromium.org>

        Reviewed by David Levin.

        Bug 28293 -  [Chromium] event.datatransfer.getdata("text/uri-list") is treated the same as getdata("URL")
        https://bugs.webkit.org/show_bug.cgi?id=28293
        
        Change ChromiumDataObject such that it treats types "URL" and "text/uri-list"
        correctly for event.dataTransfer.getData/setData. Currently both are treated
        as synonyms, but for "URL", getData is supposed to only return the first valid URL
        contained within the data for "text/uri-list" (see HTML5 spec).

        Tests: editing/pasteboard/dataTransfer-setData-getData.html

        * src/WebDragData.cpp:
        (WebKit::WebDragData::url):
        (WebKit::WebDragData::setURL):

2010-03-08  John Abd-El-Malek  <jam@chromium.org>

        Reviewed by Darin Fisher.

        Need to send mouse events to plugin when it has mouse capture
        https://bugs.webkit.org/show_bug.cgi?id=35900

        * public/WebInputEvent.h:
        (WebKit::WebInputEvent::isMouseEventType):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::WebViewImpl):
        (WebKit::WebViewImpl::mouseDown):
        (WebKit::WebViewImpl::mouseUp):
        (WebKit::WebViewImpl::handleInputEvent):
        * src/WebViewImpl.h:

2010-03-09  Anton Muhin  <antonm@chromium.org>

        Reviewed by Darin Fisher.

        Accept and bailout NULL widgets in ChromiumBridge
        https://bugs.webkit.org/show_bug.cgi?id=35796

        * src/ChromiumBridge.cpp:
        (WebCore::toChromeClientImpl):

2010-03-09  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Use clean global object for devtools utility context instead of
        trying to simulate inspected context. 
    
        https://bugs.webkit.org/show_bug.cgi?id=35923

        * src/DebuggerAgentImpl.cpp:
        * src/DebuggerAgentImpl.h:
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::resetInspectorFrontendProxy):

2010-03-08  Alexey Proskuryakov  <ap@apple.com>

        Chromium build fix.

        Updated for the removal of "mightDownloadFromHandle".

        * src/ResourceHandle.cpp:
        (WebCore::ResourceHandle::ResourceHandle):
        (WebCore::ResourceHandle::create):

2010-03-08  Dimitri Glazkov  <dglazkov@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Reset multiple form submission protection on mouse events.
        https://bugs.webkit.org/show_bug.cgi?id=35128

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

2010-03-08  Michael Nordman  <michaeln@google.com>

        Reviewed by Darin Fisher.

        Quick fix for a chromium unit test failures around r55675 (repaint refactoring).
        This change restores the tests for empty rects that were deleted.

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

        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::invalidateContentsAndWindow):
        * src/WebPopupMenuImpl.cpp:
        (WebKit::WebPopupMenuImpl::invalidateContentsAndWindow):

2010-03-02  Adam Treat  <atreat@rim.com>

        Reviewed by Dave Hyatt.

        Adapt the chromium port to the refactoring of repaint methods.

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

        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::invalidateContents):
        (WebKit::ChromeClientImpl::invalidateWindow):
        (WebKit::ChromeClientImpl::invalidateContentsAndWindow):
        (WebKit::ChromeClient::invalidateContentsForSlowScroll):
        * src/ChromeClientImpl.h:

2010-03-08  Jian Li  <jianli@chromium.org>

        Reviewed by Dmitry Titov.

        Blob.slice support.
        https://bugs.webkit.org/show_bug.cgi?id=32993

        Add ENABLE_BLOB_SLICE feature define.

        * features.gypi:

2010-03-08  Eric Uhrhane  <ericu@chromium.org>

        Reviewed by David Levin.

        Remove the now-redundant Settings fields for the Database
        https://bugs.webkit.org/show_bug.cgi?id=35763

        No new tests; this code isn't called.

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

2010-03-08  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Darin Fisher.

        Pass the WebFrame into WebStorageArea::setItem so we can figure out the routing ID
        https://bugs.webkit.org/show_bug.cgi?id=35758

        This is necessary since setItem is sometimes blocked and the embedder might need
        to display some piece of UI associated with such an event.

        * public/WebStorageArea.h:
        (WebKit::WebStorageArea::setItem):
        * src/StorageAreaProxy.cpp:
        (WebCore::StorageAreaProxy::setItem):
        * src/WebStorageAreaImpl.cpp:
        (WebKit::WebStorageAreaImpl::setItem):
        * src/WebStorageAreaImpl.h:

2010-03-07  Mark Rowe  <mrowe@apple.com>

        Chromium build fix.

        * src/ChromiumBridge.cpp: Include SharedBuffer.h since WebCore::SharedBuffer is being used.

2010-03-07  Mark Rowe  <mrowe@apple.com>

        Chromium build fix.

        * src/ResourceHandle.cpp: Include SharedBuffer.h since WebCore::SharedBuffer is being used.

2010-03-06  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Timothy Hatcher.

        Chromium: Restore devtools window activate upon node search complete.

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

        * src/js/DevTools.js:

2010-03-06  Darin Fisher  <darin@chromium.org>

        Reviewed by David Levin.

        [Chromium] Embedder initiated loads should not always stop existing loads
        https://bugs.webkit.org/show_bug.cgi?id=33862

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::reload):
        (WebKit::WebFrameImpl::loadRequest):
        (WebKit::WebFrameImpl::loadHistoryItem):
        (WebKit::WebFrameImpl::loadData):

2010-03-06  Darin Fisher  <darin@chromium.org>

        Reviewed by David Levin.

        [Chromium] spurious WebViewClient::didStopLoading if changing
        location.hash while a subframe is still loading

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

        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::dispatchDidChangeLocationWithinPage):
        Call isLoadingInAPISense, which checks subframes.

2010-03-06  Hironori Bono  <hbono@chromium.org>

        Reviewed by Eric Seidel.

        [Chromium] Typing into Flash with wmode = opaque|transparent and
        non-latin language active outputs as if US keyboard layout active

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

        This change is a WebKit-side change for this issue. It dispatches
        Char events to plug-ins so plug-ins can receive non-ASCII characters
        as well as ASCII characters.

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

2010-03-06  Kavita Kanetkar  <kkanetkar@chromium.org>

        Reviewed by Darin Fisher.

        Create WebKit API for  WebCore::ImageDecoder
        https://bugs.webkit.org/show_bug.cgi?id=35415

        * WebKit.gyp:
        * public/WebImageDecoder.h: Added.
        * src/WebImageDecoder.cpp: Added.

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

        Reviewed by Darin Fisher.

        Take out code hack that flips the result of NPP_HandleEvent.  This needs to move to
        the NPAPI code so that Pepper plugins don't hit it.
        https://bugs.webkit.org/show_bug.cgi?id=35779

        * public/WebPluginContainer.h:
        * src/WebPluginContainerImpl.cpp:
        (WebKit::WebPluginContainerImpl::handleMouseEvent):
        (WebKit::WebPluginContainerImpl::handleKeyboardEvent):

2010-03-05  Ilya Tikhonovsky  <loislo@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: Do not show link helper in popovers and/or for external resources.

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

        * src/js/DebuggerAgent.js:
        (devtools.DebuggerAgent.prototype.initUI):
        (devtools.DebuggerAgent.prototype.addScriptInfo_):

2010-03-04  Garret Kelly  <gdk@chromium.org>

        Reviewed by Darin Fisher.

        Adding PlatformTouchEventBuilder and PlatformTouchPointBuilder for
        converting Chromium WebTouchEvent and WebTouchPoint types to
        corresponding WebCore types.
        https://bugs.webkit.org/show_bug.cgi?id=35760

        * src/WebInputEventConversion.cpp:
        (WebKit::toPlatformTouchEventType):
        (WebKit::toPlatformTouchPointState):
        (WebKit::PlatformTouchPointBuilder::PlatformTouchPointBuilder):
        (WebKit::PlatformTouchEventBuilder::PlatformTouchEventBuilder):
        * src/WebInputEventConversion.h:

2010-03-04  John Gregg  <johnnyg@google.com>

        Reviewed by Darin Fisher.

        [chromium] WebDocument:applicationID() crashes on <meta> tag with no http-equiv attribute
        https://bugs.webkit.org/show_bug.cgi?id=35771

        * src/WebDocument.cpp:
        (WebKit::WebDocument::applicationID):
        check for presence of http-equiv attribute before lower()ing it.

2010-03-04  Darin Fisher  <darin@chromium.org>

        Reviewed by Dmitry Titov.

        [chromium] make history.{push,replace}State enabled at runtime
        https://bugs.webkit.org/show_bug.cgi?id=35753

        * public/WebRuntimeFeatures.h:
        * src/WebRuntimeFeatures.cpp:
        (WebKit::WebRuntimeFeatures::enablePushState):
        (WebKit::WebRuntimeFeatures::isPushStateEnabled):

2010-03-04  Pavel Feldman  <pfeldman@chromium.org>

        Not reviewed: chromium tests fix.

        * src/js/Tests.js:

2010-03-03  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Timothy Hatcher.

        Web Inspector: Remove two last synchronous calls from front-end to InspectorBackend.
        
        https://bugs.webkit.org/show_bug.cgi?id=35720

        * src/js/InspectorControllerImpl.js:
        (devtools.InspectorBackendImpl):
        (devtools.InspectorBackendImpl.prototype.setPauseOnExceptionsState):

2010-03-03  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Timothy Hatcher.

        Web Inspector: Remove sync access to resourceTrackingEnabled.

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

        * src/js/DevTools.js:

2010-03-04  Darin Fisher  <darin@chromium.org>

        Reviewed by Pavel Feldman.

        Fix failing DevToolsSanityTest.TestResourceContentLength
        https://bugs.webkit.org/show_bug.cgi?id=35725

        http://trac.webkit.org/changeset/55466 missed one more spot
        where contentLength needed to be renamed resourceSize.

        * src/js/Tests.js:

2010-03-03  Garret Kelly  <gdk@chromium.org>

        Reviewed by Darin Fisher.

        Adding touch event type and point type. Tested against the try bots.
        https://bugs.webkit.org/show_bug.cgi?id=35691

        * public/WebInputEvent.h:
        (WebKit::WebInputEvent::):
        (WebKit::WebInputEvent::isTouchEventType):
        (WebKit::WebTouchEvent::WebTouchEvent):
        * public/WebTouchPoint.h: Added.
        (WebKit::WebTouchPoint::WebTouchPoint):
        (WebKit::WebTouchPoint::):

2010-03-02  Tony Chang  <tony@chromium.org>

        Reviewed by Darin Fisher.

        add a flag to WebURLResponse so we can identify multipart content
        https://bugs.webkit.org/show_bug.cgi?id=35628

        * public/WebURLResponse.h:
        * src/WebURLResponse.cpp:
        (WebKit::WebURLResponse::isMultipartPayload):
        (WebKit::WebURLResponse::setIsMultipartPayload):

2010-03-02  Adam Barth  <abarth@webkit.org>

        Reviewed by Darin Fisher.

        Google Analytics triggers "blocked plugin" UI
        https://bugs.webkit.org/show_bug.cgi?id=35565

        Plumb didNotAllowPlugins to the client.

        * public/WebFrameClient.h:
        (WebKit::WebFrameClient::didNotAllowPlugins):
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::didNotAllowPlugins):
        * src/FrameLoaderClientImpl.h:

2010-03-02  Chris Fleizach  <cfleizach@apple.com>

        Reviewed by Beth Dakin.

        aria-label isn't respected on option elements
        https://bugs.webkit.org/show_bug.cgi?id=35400

        * src/SuggestionsPopupMenuClient.h:
        (WebKit::SuggestionsPopupMenuClient::itemAccessibilityText):

2010-03-02  Mads Ager  <ager@chromium.org>

        Reviewed by Adam Barth.

        [V8] V8 should be notified of context disposals
        https://bugs.webkit.org/show_bug.cgi?id=35526

        Update V8 DEPS in order to get V8 API changes needed for context
        disposal notifications.

        * DEPS:

2010-03-02  Kenneth Russell  <kbr@google.com>

        Reviewed by Darin Fisher.

        Add EnabledAtRuntime attribute to WebGLArray constructors
        https://bugs.webkit.org/show_bug.cgi?id=35558

        * public/WebRuntimeFeatures.h:
        * src/WebRuntimeFeatures.cpp:
        (WebKit::WebRuntimeFeatures::enableWebGL):
        (WebKit::WebRuntimeFeatures::isWebGLEnabled):

2010-03-02  James Hawkins  <jhawkins@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Implement WebNode::equals and add inline operators for ==
        and !=.

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

        * public/WebNode.h:
        (WebKit::operator==):
        (WebKit::operator!=):
        * src/WebNode.cpp:
        (WebKit::WebNode::equals):

2010-03-01  Jakob Petsovits  <jpetsovits@rim.com>

        Reviewed by Adam Barth.

        Adapt to the new ZoomMode enum.
        https://bugs.webkit.org/show_bug.cgi?id=35347

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

2010-03-01  Thatcher Ulrich  <tulrich@google.com>

        Reviewed by Darin Fisher.

        Fix chromium iframe shims.  Add another test case to the
        iframes-shims test.  After r53637, the plugin widget doesn't get
        moved every paint.  This used to hide the bug that if an iframe
        gets added, the plugin's cutout rectangles don't get updated until
        a layout happens.
        https://bugs.webkit.org/show_bug.cgi?id=35184

        * src/WebPluginContainerImpl.cpp:
        (WebKit::WebPluginContainerImpl::widgetPositionsUpdated): do reportGeometry() to ensure that
            the plugin is aware of the positions of cutouts on the page (for iframe shim behavior).
        * src/WebPluginContainerImpl.h:

2010-02-27  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Timothy Hatcher.

        Chromium: remove DevTools part that has been upstreamed.

        * src/js/DevTools.js:

2010-02-26  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Timothy Hatcher.

        Web Inspector: reload inspected page on Cmd+R / Ctrl+R / F5 key event in inspector.

        * src/WebDevToolsFrontendImpl.cpp:
        (WebKit::WebDevToolsFrontendImpl::WebDevToolsFrontendImpl):
        (WebKit::WebDevToolsFrontendImpl::jsCanAttachWindow):
        * src/WebDevToolsFrontendImpl.h:
        * src/js/InspectorControllerImpl.js:
        (devtools.InspectorBackendImpl):
        (devtools.InspectorBackendImpl.prototype.toggleNodeSearch):

2010-02-26  James Hawkins  <jhawkins@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Verify that the Nodes being enumerated are HTML elements.

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

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::forms):

2010-02-26  Adam Barth  <abarth@webkit.org>

        Reviewed by Darin Fisher.

        Expose an API for ports to add schemes to the mixed content whitelist
        https://bugs.webkit.org/show_bug.cgi?id=35438

        Expose registerURLSchemeAsSecure via the WebKit API.

        * public/WebSecurityPolicy.h:
        * src/WebSecurityPolicy.cpp:
        (WebKit::WebSecurityPolicy::registerURLSchemeAsSecure):

2010-02-26  Brett Wilson  <brettw@chromium.org>

        Fix chromium build. This test's expectation became obsolete with
        recent changes to KURL which my previous change brings Chromium's
        port in compliance with.

        * tests/KURLTest.cpp:
        (ComponentCase::TEST):

2010-02-26  Yaar Schnitman  <yaar@chromium.org>

        Chromium build fix.

        * features.gypi: Added missing new variable enable_svg.

2010-02-26  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Dimitri Glazkov.

        [V8] Auto-generate and split DerivedSourcesAllInOne.cpp
        https://bugs.webkit.org/show_bug.cgi?id=33048

        * DEPS: Incremented gyp revision.

2010-02-26  Darin Fisher  <darin@chromium.org>

        Fix mac warning (that gets treated as an error in the chromium build).

        * src/ChromiumBridge.cpp:
        (WebCore::ChromiumBridge::cookiesEnabled):

2010-02-25  Darin Fisher  <darin@chromium.org>

        Reviewed by David Levin.

        Remove deprecated cookie methods.
        https://bugs.webkit.org/show_bug.cgi?id=35420

        * public/WebFrameClient.h:
        * public/WebKitClient.h:
        * src/ChromiumBridge.cpp:
        (WebCore::ChromiumBridge::setCookies):
        (WebCore::ChromiumBridge::cookies):
        (WebCore::ChromiumBridge::cookieRequestHeaderFieldValue):
        (WebCore::ChromiumBridge::rawCookies):
        (WebCore::ChromiumBridge::deleteCookie):
        (WebCore::ChromiumBridge::cookiesEnabled):

2010-02-25  James Hawkins  <jhawkins@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Implement WebLabelElement.

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

        * WebKit.gyp:
        * public/WebLabelElement.h: Added.
        * src/WebLabelElement.cpp: Added.

2010-02-25  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Dimitri Glazkov.

        Web Inspector: make script lines count calculation lazy.

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

        * src/js/Tests.js:
        (.TestSuite.prototype.testScriptsTabIsPopulatedOnInspectedPageRefresh.waitUntilScriptIsParsed):
        (.TestSuite.prototype.testScriptsTabIsPopulatedOnInspectedPageRefresh.checkScriptsPanel):
        (.TestSuite.prototype.testScriptsTabIsPopulatedOnInspectedPageRefresh):
        (.TestSuite.prototype.testNoScriptDuplicatesOnPanelSwitch.checkScriptsPanel):
        (.TestSuite.prototype.testAutoContinueOnSyntaxError.checkScriptsList):
        (.TestSuite.prototype._executeFunctionForStepTest):

2010-02-24  Darin Fisher  <darin@chromium.org>

        Reviewed by David Levin.

        Add a missing WebString.h include.
        https://bugs.webkit.org/show_bug.cgi?id=35360

        This is required since some of the methods have implementations that
        return a WebString.

        * public/WebCookieJar.h:

2010-02-24  Jay Campan  <jcampan@google.com>

        Reviewed by David Levin.

        Don't show the autofill popup when the input text is disabled or read only.

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

        * src/EditorClientImpl.cpp:
        (WebKit::EditorClientImpl::autofill):

2010-02-24  Adam Barth  <abarth@webkit.org>

        Reviewed by Darin Fisher.

        [Chromium API] Disambiguate allowJavaScript from didNotAllowScript
        https://bugs.webkit.org/show_bug.cgi?id=35205

        Plumb didNotAllowScript through Chromium's WebKit API.

        * public/WebFrameClient.h:
        (WebKit::WebFrameClient::didNotAllowScript):
        * src/DebuggerAgentImpl.cpp:
        (WebKit::DebuggerAgentImpl::createUtilityContext):
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::didNotAllowScript):
        * src/FrameLoaderClientImpl.h:
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::bindToWindowObject):

2010-02-23  James Hawkins  <jhawkins@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Implement WebDocument::getElementsByTagName.

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

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

2010-02-23  Steve Block  <steveblock@google.com>

        Reviewed by Jeremy Orlow.

        Removes redundant Settings::setGeolocationEnabled and Settings::geolocationEnabled
        https://bugs.webkit.org/show_bug.cgi?id=35242

        This removes Chromium's WebSettings::setGeolocationEnabled

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

2010-02-23  Dmitriy Belenko  <dbelenko@google.com>

        Reviewed by Darin Fisher.

        Chromium: Need to be able to get the bounds of selection
        rectangle(s)
        https://bugs.webkit.org/show_bug.cgi?id=34915

        This change will enable about 30 test cases to pass in Chromium.
        All of these test cases are related to selection rect boundaries.
        This change will enable the test cases to retrieve the selection
        rect boundary rectangle for the current selection.

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

2010-02-23  Steve Block  <steveblock@google.com>

        Reviewed by Darin Adler.

        Adds ChromeClient::cancelGeolocationPermissionRequestForFrame
        https://bugs.webkit.org/show_bug.cgi?id=34962

        This method is required so that a Geolocation object can cancel an
        asynchronous permission request. This allows the chrome client to cancel
        any UI it is showing for the permission request.

        * src/ChromeClientImpl.h:
        (WebKit::ChromeClientImpl::cancelGeolocationPermissionRequestForFrame):

2009-02-22  Adam Langley  <agl@google.com>

        Reviewed by Darin Fisher.

        fontconfig on Linux can change the render preferences on a per strike
        basis (a strike a combination of face and size). Because of this, we
        need to query fontconfig each time a new FontPlatformData is created
        for a new size.

        This patch adds support for querying this via ChromiumBridge.

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

        * WebKit.gyp:
        * public/gtk/WebFontInfo.h:
        * public/linux/WebSandboxSupport.h:
        * src/ChromiumBridge.cpp:
        (WebCore::ChromiumBridge::getRenderStyleForStrike):
        * src/gtk/WebFontInfo.cpp:
        (WebKit::WebFontInfo::renderStyleForStrike):

2010-02-22  Alexander Pavlov  <apavlov@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: there should be a way to "deactivate" or "skip" all breakpoints while debugging.
        https://bugs.webkit.org/show_bug.cgi?id=33217

        * src/js/DebuggerAgent.js:
        (devtools.DebuggerAgent):
        (devtools.DebuggerAgent.prototype.setBreakpointsActivated):
        (devtools.DebuggerAgent.prototype.handleBreakEvent_):
        (devtools.DebuggerAgent.prototype.handleExceptionEvent_):
        * src/js/InspectorControllerImpl.js:
        (devtools.InspectorBackendImpl.prototype.activateBreakpoints):
        (devtools.InspectorBackendImpl.prototype.deactivateBreakpoints):

2010-02-21  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Timothy Hatcher.

        Chromium DevTools: kepp debugger API in sync with inspector.

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

        * src/js/DebuggerAgent.js:
        * src/js/InspectorControllerImpl.js:
        (devtools.InspectorBackendImpl.prototype.setBreakpoint):

2010-02-19  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by David Levin.

        Add an ENABLE flag for sandboxed iframes to make it possible to disable it in releases
        https://bugs.webkit.org/show_bug.cgi?id=35147

        * features.gypi:

2010-02-19  James Hawkins  <jhawkins@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Call WebViewClient::didAcceptAutoFillSuggestion when the
        user selects a suggestion from the AutoFill suggestions popup.

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

        * public/WebViewClient.h:
        (WebKit::WebViewClient::didAcceptAutoFillSuggestion):
        * src/AutoFillPopupMenuClient.cpp:
        (WebKit::AutoFillPopupMenuClient::valueChanged):
        * src/AutoFillPopupMenuClient.h:

2010-02-19  James Hawkins  <jhawkins@chromium.org>

        Reviewed by Eric Seidel.

        [Chromium] Use the m_suggestionsPopupClient pointer to refer to the
        popup client, as the Autocomplete popup might not be the current
        popup.

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

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

2010-02-19  James Hawkins  <jhawkins@chromium.org>

        Reviewed by Eric Seidel.

        [Chromium] Rename EditorClientImpl::onAutofillSuggestionAccepted to
        onAutocompleteSuggestionAccepted to better match the purpose of the
        function.

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

        * src/EditorClientImpl.cpp:
        (WebKit::EditorClientImpl::onAutocompleteSuggestionAccepted):
        * src/EditorClientImpl.h:
        * src/SuggestionsPopupMenuClient.cpp:
        (WebKit::SuggestionsPopupMenuClient::valueChanged):

2010-02-18  Peter Kasting  <pkasting@google.com>

        Reviewed by Darin Fisher.

        Add an isImageBlocked bool to the WebContextMenuData struct.
        https://bugs.webkit.org/show_bug.cgi?id=35136
        
        This lets us properly enable/disable the "Copy Image" context menu entry
        (and, in the future, maybe add a "Load Image" function).

        * public/WebContextMenuData.h:
        * src/ContextMenuClientImpl.cpp:
        (WebKit::ContextMenuClientImpl::getCustomMenuFromDefaultItems):

2010-02-19  Marcus Bulach  <bulach@chromium.org>

        Reviewed by Jeremy Orlow.

        Fixes GeolocationServiceBridgeImpl::stopUpdating (it can be called multiple times).

        * src/GeolocationServiceBridgeChromium.cpp:
        (WebKit::GeolocationServiceBridgeImpl::stopUpdating):

2010-02-19  Pavel Feldman  <pfeldman@chromium.org>

        Not reviewed. Chromium build fix: reverting r54997 and r54998.

        * DEPS:

2010-02-19  Pavel Feldman  <pfeldman@chromium.org>

        Not reviewed. Chromium tests fix: update devtools code to match new
        web inspector object proxy format.

        * src/js/DebuggerAgent.js:
        (devtools.DebuggerAgent.prototype.formatCallFrame_):
        (devtools.DebuggerAgent.formatObjectProxy_):

2010-02-12  Kent Tamura  <tkent@chromium.org>

        Unreviewed. Fix Chromium build.

        * DEPS: Bump Google URL revision to 123.

2010-02-18  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Don't truncate long lines when evaluating expressions on a breakpoint.

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

        * src/js/DebuggerAgent.js:

2010-02-18  Jay Campan  <jcampan@google.com>

        Reviewed by Adam Barth.

        Exposing the title in WebDocument.
        
        https://bugs.webkit.org/show_bug.cgi?id=35058

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

2010-02-17  Dmitry Titov  <dimich@chromium.org>

        Reviewed by David Levin, Darin Fisher, Simon Hausmann.

        When a live iframe element is moved between pages, it still depends on the old page.
        https://bugs.webkit.org/show_bug.cgi?id=34382

        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::detachedFromParent3):
        (WebKit::FrameLoaderClientImpl::didTransferChildFrameToNewDocument):
        Since Chromium's WebFrameClient is destroyed once a window is closed,
        if Frame moves between Pages, the client of corresponding WebFrame
        should be replaced as well.

        * src/FrameLoaderClientImpl.h:
        * src/WebFrameImpl.h:
        (WebKit::WebFrameImpl::setClient):

2010-02-17  Evan Martin  <evan@chromium.org>

        Reviewed by Eric Seidel.

        [chromium] expose cache-bypass flag in reload() API
        https://bugs.webkit.org/show_bug.cgi?id=34969

        This flag is used to force a reload to ignore caches.
        (Aka "shift-reload".)

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

2010-02-17  Kent Tamura  <tkent@chromium.org>

        Reviewed by Eric Seidel.

        Introduces new Icon loading interface in order to support
        asynchronous loading.
        https://bugs.webkit.org/show_bug.cgi?id=32054

        Add an empty implementation of ChromeClient::iconForFiles().

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

2010-02-17  Kenneth Russell  <kbr@google.com>

        Reviewed by Oliver Hunt.

        Refactor texImage2D and texSubImage2D taking Image to use common code
        https://bugs.webkit.org/show_bug.cgi?id=34458

        Merged the Safari and Chromium code which extracts the data from
        Image objects into common entry points on GraphicsContext3D. This
        immediately fixes the following three problems:
          - Chromium not implementing texSubImage2D taking Image.
          - Safari not obeying the flipY parameter to texImage2D or
            texSubImage2D taking Image.
          - Safari not obeying the premultipyAlpha parameter to texImage2D
            or texSubImage2D taking Image.
        Added new test verifying the behavior of texImage2D and
        texSubImage2D and the flipY parameter. The premultiplyAlpha
        parameter can not be tested yet as the implementation is not yet
        spec compliant. This will be fixed in a follow-on bug.

        Ran all WebGL demos in demo repository on Safari and Chromium;
        textures are now the right way up in both browsers, and
        transparent textures in Particles demo now look correct in Safari.

        * src/GraphicsContext3D.cpp:
        (WebCore::GraphicsContext3D::texImage2D):
        (WebCore::GraphicsContext3D::texSubImage2D):

2010-02-17  Alok Priyadarshi  <alokp@chromium.org>

        Reviewed by Ariya Hidayat.

        Bug 34900: Implement accelerated compositing for chromium.
        https://bugs.webkit.org/show_bug.cgi?id=34900

        * features.gypi: Added WTF_USE_ACCELERATED_COMPOSITING flag.

2010-02-17  Jian Li  <jianli@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Remove the obsolete chromium interface for handling DownloadURL.
        https://bugs.webkit.org/show_bug.cgi?id=34982

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

2010-02-16  James Hawkins  <jhawkins@chromium.org>

        Reviewed by Eric Seidel.

        [Chromium] Remove calls to releaseRef when passing PassRefPtrs to base
        classes.  releaseRef releases the original pointer without decreasing
        the reference count, and the base class constructor increases the
        reference count, leading to a leak.

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

        * src/WebDocument.cpp:
        (WebKit::WebDocument::WebDocument):
        * src/WebElement.cpp:
        (WebKit::WebElement::WebElement):
        * src/WebFormElement.cpp:
        (WebKit::WebFormElement::WebFormElement):
        * src/WebInputElement.cpp:
        (WebKit::WebInputElement::WebInputElement):

2010-02-15  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Fix StorageNamespaceProxy::copy() for test shell
        https://bugs.webkit.org/show_bug.cgi?id=34949

        Chromium passes back NULL when you call WebStorageNamespace::proxy()
        but TestShell returns a valid object.  Both need to work via
        the WebStorageNamespace.

        * src/StorageNamespaceProxy.cpp:
        (WebCore::StorageNamespaceProxy::copy):

2010-02-14  Vangelis Kokkevis  <vangelis@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Add support for the showDebugBorders setting to Chromium.

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

        * public/WebSettings.h: Add declaration for setShowDebugBorders
        * src/WebSettingsImpl.cpp:
        (WebKit::WebSettingsImpl::setShowDebugBorders): Add method implementation
        * src/WebSettingsImpl.h: Added declaration for setShowDebugBorders

2010-02-11  Darin Fisher  <darin@chromium.org>

        Reviewed by Jeremy Orlow.

        Introduce WebCookieJar, and provide for a frame specific cookie jar.

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

        * WebKit.gyp:
        * public/WebCookieJar.h: Added.
        * public/WebFrameClient.h:
        (WebKit::WebFrameClient::cookieJar):
        * public/WebKitClient.h:
        (WebKit::WebKitClient::cookieJar):
        (WebKit::WebKitClient::setCookies):
        (WebKit::WebKitClient::cookies):
        (WebKit::WebKitClient::rawCookies):
        (WebKit::WebKitClient::deleteCookie):
        (WebKit::WebKitClient::cookiesEnabled):
        * src/ChromiumBridge.cpp:
        (WebCore::getCookieJar):
        (WebCore::ChromiumBridge::setCookies):
        (WebCore::ChromiumBridge::cookies):
        (WebCore::ChromiumBridge::rawCookies):
        (WebCore::ChromiumBridge::deleteCookie):
        (WebCore::ChromiumBridge::cookiesEnabled):

2010-02-12  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by David Levin.

        Chromium: provide theme overrides for Chromium devtools on Mac.

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

        * src/js/devTools.css:

2010-02-12  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Add a blockedByPolicy output to WebStorageArea::setItem.
        https://bugs.webkit.org/show_bug.cgi?id=34897

        * public/WebStorageArea.h:
        (WebKit::WebStorageArea::setItem):
        * src/WebStorageAreaImpl.cpp:
        (WebKit::WebStorageAreaImpl::setItem):
        * src/WebStorageAreaImpl.h:

2010-02-11  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by David Levin.

        [Chromium] Add ENABLE_RUBY to the feature defines gypi
        https://bugs.webkit.org/show_bug.cgi?id=34841

        * features.gypi:

2010-02-12  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Chromium: Web Inspector on an element in a page where JS is blocked crashes the renderer

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

        * src/DebuggerAgentImpl.cpp:
        (WebKit::DebuggerAgentImpl::createUtilityContext):

2010-02-11  Mikhail Naganov  <mnaganov@chromium.org>

        Reviewed by Pavel Feldman.

        [Chromium] Ignore subsequent requests of the same profiler log
        chunks. This eliminates emission of several instances for the same
        heap snapshot.

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

        * src/js/ProfilerAgent.js:
        (devtools.ProfilerAgent):
        (devtools.ProfilerAgent.prototype.initializeProfiling):
        (devtools.ProfilerAgent.prototype._getNextLogLines):
        (devtools.ProfilerAgent.prototype.startProfiling):
        (devtools.ProfilerAgent.prototype._didGetActiveProfilerModules):
        (devtools.ProfilerAgent.prototype._didGetLogLines):

2010-02-10  James Hawkins  <jhawkins@chromium.org>

        Reviewed by Eric Seidel.

        [Chromium] Remove code from SuggestionsPopup that was removed in a
        previous revision of AutocompletePopup and accidentally added back in
        the refactoring.

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

        * src/AutoFillPopupMenuClient.cpp:
        * src/AutoFillPopupMenuClient.h: Added property svn:eol-style.
        * src/SuggestionsPopupMenuClient.cpp:
        (WebKit::SuggestionsPopupMenuClient::popupDidHide):
        (WebKit::SuggestionsPopupMenuClient::setTextFromItem):
        (WebKit::SuggestionsPopupMenuClient::initialize):
        * src/SuggestionsPopupMenuClient.h:

2010-02-10  Nate Chapin  <japhet@chromium.org>

        Reviewed by Adam Barth.

        Update call to V8DOMWrapper::lookupDOMWrapper() to match new parameters.

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

        * src/DebuggerAgentImpl.cpp:
        (WebKit::DebuggerAgentImpl::createUtilityContext):

2010-02-10  Kenneth Russell  <kbr@google.com>

        Reviewed by Oliver Hunt.

        Remove automatic viewport resizing
        https://bugs.webkit.org/show_bug.cgi?id=34766

        Removed automatic viewport resizing per conclusions on the WebGL
        mailing list. Added test verifying new behavior and updated a
        couple of previous tests failing after this change.

        * src/GraphicsContext3D.cpp:
        (WebCore::GraphicsContext3DInternal::reshape):

2010-02-10  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Chromium Win build fix. Add third_party/nss to the dependencies list on Windows.

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

        * DEPS:

2010-02-10  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Rolling Chromium dependencies to match Chromium revision 38580.

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

        * DEPS:

2010-02-10  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Use v8::Debug::ProcessDebugMessages instead of executing an empty function

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

        * src/DebuggerAgent.h:
        * src/DebuggerAgentImpl.cpp:
        (WebKit::DebuggerAgentImpl::processDebugCommands):
        * src/DebuggerAgentImpl.h:
        * src/ToolsAgent.h:
        * src/WebDevToolsAgentImpl.cpp:
        * src/WebDevToolsAgentImpl.h:
        * src/js/DebuggerAgent.js:
        (devtools.DebuggerAgent.prototype.addBreakpoint):
        * src/js/DevToolsHostStub.js:
        (.RemoteDebuggerAgentStub.prototype.processDebugCommands):
        * src/js/InjectDispatch.js:
        (dispatch):
        * src/js/ProfilerAgent.js:
        (devtools.ProfilerAgent.prototype.startProfiling):
        (devtools.ProfilerAgent.prototype.stopProfiling):
        * src/js/Tests.js:

2010-02-10  Tony Chang  <tony@chromium.org>

        Unreviewed, build fix for Chromium Mac take 2.

        * src/AutoFillPopupMenuClient.cpp:
        (WebKit::AutoFillPopupMenuClient::removeSuggestionAtIndex):

2010-02-10  Tony Chang  <tony@chromium.org>

        Unreviewed, build fix for Chromium Mac.

        * src/AutoFillPopupMenuClient.cpp:
        (WebKit::AutoFillPopupMenuClient::removeSuggestionAtIndex):

2010-02-09  James Hawkins  <jhawkins@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Refactor AutocompletePopupMenuClient into a base class,
        SuggestionsPopupMenuClient, and two derived classes,
        AutocompletePopupMenuClient and AutoFillPopupMenuClient.  Currently
        the behavior of suggestions popups has not changed.

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

        * WebKit.gyp:
        * public/WebView.h:
        * src/AutoFillPopupMenuClient.cpp: Added.
        * src/AutoFillPopupMenuClient.h: Added.
        * src/AutocompletePopupMenuClient.cpp:
        (WebKit::AutocompletePopupMenuClient::getSuggestionsCount):
        (WebKit::AutocompletePopupMenuClient::getSuggestion):
        (WebKit::AutocompletePopupMenuClient::removeSuggestionAtIndex):
        (WebKit::AutocompletePopupMenuClient::initialize):
        (WebKit::AutocompletePopupMenuClient::setSuggestions):
        * src/AutocompletePopupMenuClient.h:
        * src/SuggestionsPopupMenuClient.cpp: Added.
        * src/SuggestionsPopupMenuClient.h: Added.
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::WebViewImpl):
        (WebKit::WebViewImpl::keyEvent):
        (WebKit::WebViewImpl::autocompleteHandleKeyEvent):
        (WebKit::WebViewImpl::applyAutofillSuggestions):
        (WebKit::WebViewImpl::applyAutoFillSuggestions):
        (WebKit::WebViewImpl::applyAutocompleteSuggestions):
        * src/WebViewImpl.h:

2010-02-09  Chris Guillory  <ctguil@google.com>

        Reviewed by Darin Fisher.

        [Chromium] Add function for accessibility object state change notifications.
        
        https://bugs.webkit.org/show_bug.cgi?id=34464

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

2010-02-09  Mikhail Naganov  <mnaganov@chromium.org>

        Reviewed by Pavel Feldman.

        Continuing debugger and profiler unforking: narrow scope of JSC-specific ifdefs.
        Also, enable JAVASCRIPT_DEBUGGER explicitly in features, it appears to be required
        for really enabling it in V8 bindings generation.

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

        * features.gypi:

2010-02-09  Jian Li  <jianli@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Add the chromium interface to support Blob.slice.
        https://bugs.webkit.org/show_bug.cgi?id=34652

        * WebKit.gyp:
        * public/WebFileInfo.h: Added.
        * public/WebHTTPBody.h:
        * src/WebHTTPBody.cpp:
        (WebKit::WebHTTPBody::elementAt):
        (WebKit::WebHTTPBody::appendFile):

2010-02-09  Yury Semikhatsky  <yurys@chromium.org>

        Unreviewed. Follow-up fix.

        Add missing devTools.css file.

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

        * src/js/devTools.css: Added.

2010-02-09  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Upstream DevTools Images and .css files.

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

        * WebKit.gypi:
        * src/js/DevTools.css: Added.
        * src/js/Images/segmentChromium.png: Added.
        * src/js/Images/segmentHoverChromium.png: Added.
        * src/js/Images/segmentHoverEndChromium.png: Added.
        * src/js/Images/segmentSelectedChromium.png: Added.
        * src/js/Images/segmentSelectedEndChromium.png: Added.
        * src/js/Images/statusbarBackgroundChromium.png: Added.
        * src/js/Images/statusbarBottomBackgroundChromium.png: Added.
        * src/js/Images/statusbarButtonsChromium.png: Added.
        * src/js/Images/statusbarMenuButtonChromium.png: Added.
        * src/js/Images/statusbarMenuButtonSelectedChromium.png: Added.

2010-02-09  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Upstream JavaScript part of DevTools WebKit API implementation(now
        with the added files).

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

        * WebKit.gypi: Added.
        * src/js/DebuggerAgent.js: Added.
        (devtools.DebuggerAgent):
        (devtools.DebuggerAgent.prototype.reset):
        (devtools.DebuggerAgent.prototype.initUI):
        (devtools.DebuggerAgent.prototype.resolveScriptSource.this.requestSeqToCallback_.cmd.getSequenceNumber):
        (devtools.DebuggerAgent.prototype.resolveScriptSource):
        (devtools.DebuggerAgent.prototype.pauseExecution):
        (devtools.DebuggerAgent.prototype.addBreakpoint):
        (devtools.DebuggerAgent.prototype.removeBreakpoint):
        (devtools.DebuggerAgent.prototype.updateBreakpoint):
        (devtools.DebuggerAgent.prototype.stepIntoStatement):
        (devtools.DebuggerAgent.prototype.stepOutOfFunction):
        (devtools.DebuggerAgent.prototype.stepOverStatement):
        (devtools.DebuggerAgent.prototype.resumeExecution):
        (devtools.DebuggerAgent.prototype.createExceptionMessage_):
        (devtools.DebuggerAgent.prototype.showPendingExceptionMessage_):
        (devtools.DebuggerAgent.prototype.clearExceptionMessage_):
        (devtools.DebuggerAgent.prototype.pauseOnExceptions):
        (devtools.DebuggerAgent.prototype.setPauseOnExceptions):
        (devtools.DebuggerAgent.prototype.requestEvaluate):
        (devtools.DebuggerAgent.prototype.resolveChildren):
        (devtools.DebuggerAgent.prototype.resolveScope.this.requestSeqToCallback_.cmd.getSequenceNumber):
        (devtools.DebuggerAgent.prototype.resolveScope):
        (devtools.DebuggerAgent.prototype.resolveFrameVariables_.scopeResponseHandler):
        (devtools.DebuggerAgent.prototype.resolveFrameVariables_):
        (devtools.DebuggerAgent.prototype.resolveCompletionsOnFrame):
        (devtools.DebuggerAgent.prototype.getScriptContextType):
        (devtools.DebuggerAgent.prototype.requestClearBreakpoint_):
        (devtools.DebuggerAgent.prototype.requestChangeBreakpoint_):
        (devtools.DebuggerAgent.prototype.requestBacktrace_):
        (devtools.DebuggerAgent.sendCommand_):
        (devtools.DebuggerAgent.prototype.stepCommand_):
        (devtools.DebuggerAgent.prototype.requestLookup_):
        (devtools.DebuggerAgent.prototype.setContextId_.this.requestSeqToCallback_.cmd.getSequenceNumber):
        (devtools.DebuggerAgent.prototype.setContextId_):
        (devtools.DebuggerAgent.prototype.handleDebuggerOutput_):
        (devtools.DebuggerAgent.prototype.handleBreakEvent_):
        (devtools.DebuggerAgent.prototype.handleExceptionEvent_):
        (devtools.DebuggerAgent.prototype.handleScriptsResponse_):
        (devtools.DebuggerAgent.prototype.isScriptFromInspectedContext_):
        (devtools.DebuggerAgent.prototype.handleSetBreakpointResponse_):
        (devtools.DebuggerAgent.prototype.handleAfterCompileEvent_):
        (devtools.DebuggerAgent.prototype.addScriptInfo_):
        (devtools.DebuggerAgent.prototype.handleClearBreakpointResponse_):
        (devtools.DebuggerAgent.prototype.handleBacktraceResponse_):
        (devtools.DebuggerAgent.prototype.doHandleBacktraceResponse_):
        (devtools.DebuggerAgent.prototype.evaluateInCallFrame):
        (devtools.DebuggerAgent.prototype.invokeCallbackForResponse_):
        (devtools.DebuggerAgent.prototype.formatCallFrame_):
        (devtools.DebuggerAgent.formatObjectProperties_):
        (devtools.DebuggerAgent.propertiesToProxies_):
        (devtools.DebuggerAgent.formatObjectProxy_):
        (devtools.DebuggerAgent.webkitToV8LineNumber_):
        (devtools.DebuggerAgent.v8ToWwebkitLineNumber_):
        (devtools.ScriptInfo):
        (devtools.ScriptInfo.prototype.getLineOffset):
        (devtools.ScriptInfo.prototype.getContextType):
        (devtools.ScriptInfo.prototype.getUrl):
        (devtools.ScriptInfo.prototype.isUnresolved):
        (devtools.ScriptInfo.prototype.getBreakpointInfo):
        (devtools.ScriptInfo.prototype.addBreakpointInfo):
        (devtools.ScriptInfo.prototype.removeBreakpointInfo):
        (devtools.BreakpointInfo):
        (devtools.BreakpointInfo.prototype.getLine):
        (devtools.BreakpointInfo.prototype.getV8Id):
        (devtools.BreakpointInfo.prototype.setV8Id):
        (devtools.BreakpointInfo.prototype.markAsRemoved):
        (devtools.BreakpointInfo.prototype.isRemoved):
        (devtools.CallFrame):
        (devtools.CallFrame.prototype.evaluate_):
        (devtools.DebugCommand):
        (devtools.DebugCommand.prototype.getSequenceNumber):
        (devtools.DebugCommand.prototype.toJSONProtocol):
        (devtools.DebuggerMessage):
        (devtools.DebuggerMessage.prototype.getType):
        (devtools.DebuggerMessage.prototype.getEvent):
        (devtools.DebuggerMessage.prototype.getCommand):
        (devtools.DebuggerMessage.prototype.getRequestSeq):
        (devtools.DebuggerMessage.prototype.isRunning):
        (devtools.DebuggerMessage.prototype.isSuccess):
        (devtools.DebuggerMessage.prototype.getMessage):
        (devtools.DebuggerMessage.prototype.getBody):
        (devtools.DebuggerMessage.prototype.lookup):
        * src/js/DevTools.js: Added.
        (devtools.dispatch):
        (devtools.ToolsAgent):
        (devtools.ToolsAgent.prototype.reset):
        (devtools.ToolsAgent.prototype.evaluateJavaScript):
        (devtools.ToolsAgent.prototype.getDebuggerAgent):
        (devtools.ToolsAgent.prototype.getProfilerAgent):
        (devtools.ToolsAgent.prototype.frameNavigate_):
        (devtools.ToolsAgent.prototype.dispatchOnClient_):
        (devtools.ToolsAgent.prototype.evaluate):
        (WebInspector.setResourcesPanelEnabled):
        (debugPrint):
        (devtools):
        (WebInspector.loaded):
        ():
        (WebInspector.ScriptView.prototype.setupSourceFrameIfNeeded):
        (WebInspector.ScriptView.prototype.didResolveScriptSource_):
        (WebInspector.UnresolvedPropertyValue):
        (WebInspector.UIString):
        (WebInspector.resourceTrackingWasEnabled):
        (WebInspector.resourceTrackingWasDisabled):
        (WebInspector.TestController.prototype.runAfterPendingDispatches):
        (WebInspector.queuesAreEmpty):
        (WebInspector.pausedScript):
        * src/js/DevToolsHostStub.js: Added.
        (.RemoteDebuggerAgentStub):
        (.RemoteDebuggerAgentStub.prototype.getContextId):
        (.RemoteProfilerAgentStub):
        (.RemoteProfilerAgentStub.prototype.getActiveProfilerModules):
        (.RemoteProfilerAgentStub.prototype.getLogLines):
        (.RemoteToolsAgentStub):
        (.RemoteToolsAgentStub.prototype.dispatchOnInjectedScript):
        (.RemoteToolsAgentStub.prototype.dispatchOnInspectorController):
        (.RemoteToolsAgentStub.prototype.executeVoidJavaScript):
        (.ProfilerStubHelper):
        (.ProfilerStubHelper.GetInstance):
        (.ProfilerStubHelper.prototype.StopProfiling):
        (.ProfilerStubHelper.prototype.StartProfiling):
        (.ProfilerStubHelper.prototype.getActiveProfilerModules):
        (.ProfilerStubHelper.prototype.getLogLines):
        (.RemoteDebuggerCommandExecutorStub):
        (.RemoteDebuggerCommandExecutorStub.prototype.DebuggerCommand):
        (.RemoteDebuggerCommandExecutorStub.prototype.DebuggerPauseScript):
        (.RemoteDebuggerCommandExecutorStub.prototype.sendResponse_):
        (.DevToolsHostStub):
        (.DevToolsHostStub.prototype.reset):
        (.DevToolsHostStub.prototype.setting):
        (.DevToolsHostStub.prototype.setSetting):
        * src/js/HeapProfilerPanel.js: Added.
        (WebInspector.ProfilesPanel.prototype.addSnapshot):
        (WebInspector.HeapSnapshotView):
        (WebInspector.HeapSnapshotView.prototype.get statusBarItems):
        (WebInspector.HeapSnapshotView.prototype.get profile):
        (WebInspector.HeapSnapshotView.prototype.set profile):
        (WebInspector.HeapSnapshotView.prototype.show):
        (WebInspector.HeapSnapshotView.prototype.hide):
        (WebInspector.HeapSnapshotView.prototype.resize):
        (WebInspector.HeapSnapshotView.prototype.refresh):
        (WebInspector.HeapSnapshotView.prototype.refreshShowAsPercents):
        (WebInspector.HeapSnapshotView.prototype._deleteSearchMatchedFlags):
        (WebInspector.HeapSnapshotView.prototype.searchCanceled):
        (WebInspector.HeapSnapshotView.prototype.performSearch):
        (WebInspector.HeapSnapshotView.prototype.jumpToFirstSearchResult.WebInspector.CPUProfileView.prototype.jumpToFirstSearchResult.jumpToLastSearchResult.WebInspector.CPUProfileView.prototype.jumpToLastSearchResult.jumpToNextSearchResult.WebInspector.CPUProfileView.prototype.jumpToNextSearchResult.jumpToPreviousSearchResult.WebInspector.CPUProfileView.prototype.jumpToPreviousSearchResult.showingFirstSearchResult.WebInspector.CPUProfileView.prototype.showingFirstSearchResult.showingLastSearchResult.WebInspector.CPUProfileView.prototype.showingLastSearchResult._jumpToSearchResult.WebInspector.CPUProfileView.prototype._jumpToSearchResult.refreshVisibleData):
        (WebInspector.HeapSnapshotView.prototype._changeBase):
        (WebInspector.HeapSnapshotView.prototype._createSnapshotDataGridList):
        (WebInspector.HeapSnapshotView.prototype._mouseDownInDataGrid):
        (WebInspector.HeapSnapshotView.prototype.get _isShowingAsPercent):
        (WebInspector.HeapSnapshotView.prototype._percentClicked):
        (WebInspector.HeapSnapshotView.prototype._resetDataGridList):
        (WebInspector.HeapSnapshotView.prototype._sortData):
        (WebInspector.HeapSnapshotView.prototype._updateBaseOptions):
        (WebInspector.HeapSnapshotView.prototype._updatePercentButton):
        (WebInspector.HeapSnapshotView.prototype._updateSummaryGraph):
        (WebInspector.HeapSnapshotView.SearchHelper.operations.LESS):
        (WebInspector.HeapSnapshotView.SearchHelper.operations.LESS_OR_EQUAL):
        (WebInspector.HeapSnapshotView.SearchHelper.operations.EQUAL):
        (WebInspector.HeapSnapshotView.SearchHelper.operations.GREATER_OR_EQUAL):
        (WebInspector.HeapSnapshotView.SearchHelper.operations.GREATER):
        (WebInspector.HeapSnapshotView.SearchHelper.parseOperationAndNumber):
        (WebInspector.HeapSummaryCalculator):
        (WebInspector.HeapSummaryCalculator.prototype.computeSummaryValues):
        (WebInspector.HeapSummaryCalculator.prototype.formatValue):
        (WebInspector.HeapSummaryCalculator.prototype.get showAsPercent):
        (WebInspector.HeapSummaryCalculator.prototype.set showAsPercent):
        (WebInspector.HeapSummaryCountCalculator):
        (WebInspector.HeapSummaryCountCalculator.prototype._highFromLow):
        (WebInspector.HeapSummaryCountCalculator.prototype._valueToString):
        (WebInspector.HeapSummarySizeCalculator):
        (WebInspector.HeapSummarySizeCalculator.prototype._highFromLow):
        (WebInspector.HeapSnapshotSidebarTreeElement):
        (WebInspector.HeapSnapshotSidebarTreeElement.prototype.get mainTitle):
        (WebInspector.HeapSnapshotSidebarTreeElement.prototype.set mainTitle):
        (WebInspector.HeapSnapshotDataGridNodeWithRetainers):
        (WebInspector.HeapSnapshotDataGridNodeWithRetainers.prototype.get _hasRetainers):
        (WebInspector.HeapSnapshotDataGridNodeWithRetainers.prototype.get _parent):
        (WebInspector.HeapSnapshotDataGridNodeWithRetainers.prototype._populate.if):
        (WebInspector.HeapSnapshotDataGridNodeWithRetainers.prototype._populate):
        (WebInspector.HeapSnapshotDataGridNodeWithRetainers.prototype.produceDiff):
        (WebInspector.HeapSnapshotDataGridNodeWithRetainers.prototype.sort):
        (WebInspector.HeapSnapshotDataGridNodeWithRetainers.prototype.signForDelta):
        (WebInspector.HeapSnapshotDataGridNodeWithRetainers.prototype.showDeltaAsPercent):
        (WebInspector.HeapSnapshotDataGridNodeWithRetainers.prototype.getTotalCount):
        (WebInspector.HeapSnapshotDataGridNodeWithRetainers.prototype.getTotalSize):
        (WebInspector.HeapSnapshotDataGridNodeWithRetainers.prototype.get countPercent):
        (WebInspector.HeapSnapshotDataGridNodeWithRetainers.prototype.get sizePercent):
        (WebInspector.HeapSnapshotDataGridNodeWithRetainers.prototype.get countDeltaPercent):
        (WebInspector.HeapSnapshotDataGridNodeWithRetainers.prototype.get sizeDeltaPercent):
        (WebInspector.HeapSnapshotDataGridNodeWithRetainers.prototype.get data):
        (WebInspector.HeapSnapshotDataGridNodeWithRetainers.prototype.createCell):
        (WebInspector.HeapSnapshotDataGridNode):
        (WebInspector.HeapSnapshotDataGridList):
        (WebInspector.HeapSnapshotDataGridList.prototype.appendChild):
        (WebInspector.HeapSnapshotDataGridList.prototype.insertChild):
        (WebInspector.HeapSnapshotDataGridList.prototype.removeChildren):
        (WebInspector.HeapSnapshotDataGridList.prototype.populateChildren):
        (WebInspector.HeapSnapshotDataGridList.propertyComparator.comparator):
        (WebInspector.HeapSnapshotDataGridList.propertyComparator):
        (WebInspector.HeapSnapshotDataGridRetainerNode):
        (WebInspector.HeapSnapshotDataGridRetainerNode.prototype.get sizePercent):
        (WebInspector.HeapSnapshotDataGridRetainerNode.prototype.get sizeDeltaPercent):
        (WebInspector.HeapSnapshotDataGridRetainerNode.prototype._calculateRetainers):
        (WebInspector.HeapSnapshotProfileType):
        (WebInspector.HeapSnapshotProfileType.prototype.get buttonTooltip):
        (WebInspector.HeapSnapshotProfileType.prototype.get buttonStyle):
        (WebInspector.HeapSnapshotProfileType.prototype.buttonClicked):
        (WebInspector.HeapSnapshotProfileType.prototype.get welcomeMessage):
        (WebInspector.HeapSnapshotProfileType.prototype.createSidebarTreeElementForProfile):
        (WebInspector.HeapSnapshotProfileType.prototype.createView):
        ():
        * src/js/InjectDispatch.js: Added.
        (InspectorControllerDispatcher.dispatch):
        (ApuAgentDispatcher.dispatchToApu):
        (dispatch):
        (devtools):
        * src/js/InspectorControllerImpl.js: Added.
        (devtools.InspectorBackendImpl):
        (devtools.InspectorBackendImpl.prototype.toggleNodeSearch):
        (devtools.InspectorBackendImpl.prototype.debuggerEnabled):
        (devtools.InspectorBackendImpl.prototype.profilerEnabled):
        (devtools.InspectorBackendImpl.prototype.addBreakpoint):
        (devtools.InspectorBackendImpl.prototype.removeBreakpoint):
        (devtools.InspectorBackendImpl.prototype.updateBreakpoint):
        (devtools.InspectorBackendImpl.prototype.pauseInDebugger):
        (devtools.InspectorBackendImpl.prototype.resumeDebugger):
        (devtools.InspectorBackendImpl.prototype.stepIntoStatementInDebugger):
        (devtools.InspectorBackendImpl.prototype.stepOutOfFunctionInDebugger):
        (devtools.InspectorBackendImpl.prototype.stepOverStatementInDebugger):
        (devtools.InspectorBackendImpl.prototype.setPauseOnExceptionsState):
        (devtools.InspectorBackendImpl.prototype.pauseOnExceptionsState):
        (devtools.InspectorBackendImpl.prototype.pauseOnExceptions):
        (devtools.InspectorBackendImpl.prototype.setPauseOnExceptions):
        (devtools.InspectorBackendImpl.prototype.startProfiling):
        (devtools.InspectorBackendImpl.prototype.stopProfiling):
        (devtools.InspectorBackendImpl.prototype.getProfileHeaders):
        (devtools.InspectorBackendImpl.prototype.addFullProfile):
        (devtools.InspectorBackendImpl.prototype.getProfile):
        (devtools.InspectorBackendImpl.prototype.takeHeapSnapshot):
        (devtools.InspectorBackendImpl.prototype.dispatchOnInjectedScript):
        (devtools.InspectorBackendImpl.prototype.installInspectorControllerDelegate_):
        (devtools.InspectorBackendImpl.prototype.callInspectorController_):
        * src/js/ProfilerAgent.js: Added.
        (devtools.ProfilerAgent):
        (devtools.ProfilerAgent.prototype.setupProfilerProcessorCallbacks):
        (devtools.ProfilerAgent.prototype.initializeProfiling):
        (devtools.ProfilerAgent.prototype.startProfiling):
        (devtools.ProfilerAgent.prototype.stopProfiling):
        (devtools.ProfilerAgent.prototype.didGetActiveProfilerModules_):
        (devtools.ProfilerAgent.prototype.didGetLogLines_):
        * src/js/ProfilerProcessor.js: Added.
        (devtools.profiler.WebKitViewBuilder):
        (devtools.profiler.WebKitViewBuilder.prototype.createViewNode):
        (devtools.profiler.WebKitViewNode):
        (set get devtools.profiler.WebKitViewNode.prototype.initFuncInfo_):
        (devtools.profiler.JsProfile):
        (devtools.profiler.JsProfile.prototype.skipThisFunction):
        (devtools.profiler.Processor):
        (devtools.profiler.Processor.prototype.printError):
        (devtools.profiler.Processor.prototype.skipDispatch):
        (devtools.profiler.Processor.prototype.setCallbacks):
        (devtools.profiler.Processor.prototype.setNewProfileCallback):
        (devtools.profiler.Processor.prototype.processProfiler_.switch.break):
        (devtools.profiler.Processor.prototype.processProfiler_):
        (devtools.profiler.Processor.prototype.processCodeCreation_):
        (devtools.profiler.Processor.prototype.processCodeMove_):
        (devtools.profiler.Processor.prototype.processCodeDelete_):
        (devtools.profiler.Processor.prototype.processFunctionCreation_):
        (devtools.profiler.Processor.prototype.processFunctionMove_):
        (devtools.profiler.Processor.prototype.processFunctionDelete_):
        (devtools.profiler.Processor.prototype.processTick_):
        (devtools.profiler.Processor.prototype.processTickV2_):
        (devtools.profiler.Processor.prototype.processHeapSampleBegin_):
        (devtools.profiler.Processor.prototype.processHeapSampleStats_):
        (devtools.profiler.Processor.prototype.processHeapSampleItem_):
        (devtools.profiler.Processor.prototype.processHeapJsConsItem_):
        (devtools.profiler.Processor.prototype.processHeapJsRetItem_.mergeRetainers):
        (devtools.profiler.Processor.prototype.processHeapJsRetItem_):
        (devtools.profiler.Processor.prototype.processHeapSampleEnd_):
        (devtools.profiler.Processor.prototype.createProfileForView):
        * src/js/Tests.js: Added.
        (.TestSuite):
        (.TestSuite.prototype.fail):
        (.TestSuite.prototype.assertEquals):
        (.TestSuite.prototype.assertTrue):
        (.TestSuite.prototype.assertContains):
        (.TestSuite.prototype.takeControl):
        (.TestSuite.prototype.releaseControl):
        (.TestSuite.prototype.reportOk_):
        (.TestSuite.prototype.reportFailure_):
        (.TestSuite.prototype.runTest):
        (.TestSuite.prototype.showPanel):
        (.TestSuite.prototype.addSniffer.receiver.methodName):
        (.TestSuite.prototype.addSniffer):
        (.TestSuite.prototype.testHostIsPresent):
        (.TestSuite.prototype.testElementsTreeRoot):
        (.TestSuite.prototype.testMainResource):
        (.TestSuite.prototype.testResourceContentLength.this.addSniffer.):
        (.TestSuite.prototype.testResourceHeaders):
        (.TestSuite.prototype.testCachedResourceMimeType.this.addSniffer.):
        (.TestSuite.prototype.testCachedResourceMimeType):
        (.TestSuite.prototype.testProfilerTab):
        (.TestSuite.prototype.testScriptsTabIsPopulatedOnInspectedPageRefresh.waitUntilScriptIsParsed):
        (.TestSuite.prototype.testScriptsTabIsPopulatedOnInspectedPageRefresh.checkScriptsPanel):
        (.TestSuite.prototype.testScriptsTabIsPopulatedOnInspectedPageRefresh):
        (.TestSuite.prototype.testNoScriptDuplicatesOnPanelSwitch.switchToElementsTab):
        (.TestSuite.prototype.testNoScriptDuplicatesOnPanelSwitch.switchToScriptsTab):
        (.TestSuite.prototype.testNoScriptDuplicatesOnPanelSwitch.checkScriptsPanel):
        (.TestSuite.prototype.testNoScriptDuplicatesOnPanelSwitch.checkNoDuplicates):
        (.TestSuite.prototype.testPauseOnException):
        (.TestSuite.prototype.testPauseWhenLoadingDevTools):
        (.TestSuite.prototype.testPauseWhenScriptIsRunning.testScriptPauseAfterDelay):
        (.TestSuite.prototype.testPauseWhenScriptIsRunning.testScriptPause):
        (.TestSuite.prototype.testPauseWhenScriptIsRunning):
        (.TestSuite.prototype.optionsToString_):
        (.TestSuite.prototype.evaluateInConsole_):
        (.TestSuite.prototype.waitForSetBreakpointResponse_):
        (.TestSuite.prototype.testEvalOnCallFrame.setBreakpointCallback):
        (.TestSuite.prototype.testEvalOnCallFrame.waitForBreakpointHit):
        (.TestSuite.prototype.testCompletionOnPause):
        (.TestSuite.prototype.testCompletionOnPause.testLocalsCompletion):
        (.TestSuite.prototype.testCompletionOnPause.testThisCompletion):
        (.TestSuite.prototype.testCompletionOnPause.testFieldCompletion):
        (.TestSuite.prototype.testCompletionOnPause.checkCompletions):
        (.TestSuite.prototype.testAutoContinueOnSyntaxError.checkScriptsList):
        (.TestSuite.prototype.testAutoContinueOnSyntaxError.waitForExceptionEvent.test):
        (.TestSuite.prototype.testAutoContinueOnSyntaxError.waitForExceptionEvent):
        (.TestSuite.prototype._checkExecutionLine):
        (.TestSuite.prototype._scriptsAreParsed):
        (.TestSuite.prototype._waitForScriptPause):
        (.TestSuite.prototype._checkSourceFrameWhenLoaded.checkExecLine):
        (.TestSuite.prototype._checkSourceFrameWhenLoaded):
        (.TestSuite.prototype._performSteps.doNextAction):
        (.TestSuite.prototype._performSteps):
        (.TestSuite.prototype._executeCodeWhenScriptsAreParsed.executeFunctionInInspectedPage):
        (.TestSuite.prototype._waitUntilScriptsAreParsed.waitForAllScripts):
        (.TestSuite.prototype._waitUntilScriptsAreParsed):
        (.TestSuite.prototype._executeFunctionForStepTest):
        (.TestSuite.prototype.testStepOver):
        (.TestSuite.prototype.testStepOut):
        (.TestSuite.prototype.testStepIn):
        (.TestSuite.prototype._evaluateXpath):
        (.TestSuite.prototype._findNode):
        (.TestSuite.prototype._findText):
        (.TestSuite.prototype._nodeIterator):
        (.TestSuite.prototype._checkScopeSectionDiv):
        (.TestSuite.prototype._expandScopeSections.updateListener):
        (.TestSuite.prototype._expandScopeSections):
        (.TestSuite.prototype.testExpandScope):
        (.TestSuite.prototype.testExpandScope.examineScopes):
        (.TestSuite.prototype._findChildProperty):
        (.TestSuite.prototype._hookGetPropertiesCallback.accessor.getProperties):
        (.TestSuite.prototype._hookGetPropertiesCallback.try):
        (.TestSuite.prototype._hookGetPropertiesCallback):
        (.TestSuite.prototype.testDebugIntrinsicProperties.expandLocalScope):
        (.TestSuite.prototype.testDebugIntrinsicProperties):
        (.TestSuite.prototype.testDebugIntrinsicProperties.expandAndCheckNextProperty):
        (.TestSuite.prototype.testDebugIntrinsicProperties.checkProperty):
        (.TestSuite.createKeyEvent):
        (.TestSuite.prototype.testConsoleLog.assertNext):
        (.TestSuite.prototype.testConsoleLog):
        (.TestSuite.prototype.testEvalGlobal.initEval):
        (.TestSuite.prototype.testEvalGlobal):
        (.TestSuite.prototype.testShowStoragePanel.this.addSniffer.):
        (.TestSuite.prototype.testShowStoragePanel.this.addSniffer):
        (.uiTests.runAllTests):
        (.uiTests.runTest):

2010-02-09  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Upstream JavaScript part of DevTools WebKit API implementation

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

        * WebKit.gypi: Added.
        * src/js/DebuggerAgent.js: Added.
        (devtools.DebuggerAgent):
        (devtools.DebuggerAgent.prototype.reset):
        (devtools.DebuggerAgent.prototype.initUI):
        (devtools.DebuggerAgent.prototype.resolveScriptSource.this.requestSeqToCallback_.cmd.getSequenceNumber):
        (devtools.DebuggerAgent.prototype.resolveScriptSource):
        (devtools.DebuggerAgent.prototype.pauseExecution):
        (devtools.DebuggerAgent.prototype.addBreakpoint):
        (devtools.DebuggerAgent.prototype.removeBreakpoint):
        (devtools.DebuggerAgent.prototype.updateBreakpoint):
        (devtools.DebuggerAgent.prototype.stepIntoStatement):
        (devtools.DebuggerAgent.prototype.stepOutOfFunction):
        (devtools.DebuggerAgent.prototype.stepOverStatement):
        (devtools.DebuggerAgent.prototype.resumeExecution):
        (devtools.DebuggerAgent.prototype.createExceptionMessage_):
        (devtools.DebuggerAgent.prototype.showPendingExceptionMessage_):
        (devtools.DebuggerAgent.prototype.clearExceptionMessage_):
        (devtools.DebuggerAgent.prototype.pauseOnExceptions):
        (devtools.DebuggerAgent.prototype.setPauseOnExceptions):
        (devtools.DebuggerAgent.prototype.requestEvaluate):
        (devtools.DebuggerAgent.prototype.resolveChildren):
        (devtools.DebuggerAgent.prototype.resolveScope.this.requestSeqToCallback_.cmd.getSequenceNumber):
        (devtools.DebuggerAgent.prototype.resolveScope):
        (devtools.DebuggerAgent.prototype.resolveFrameVariables_.scopeResponseHandler):
        (devtools.DebuggerAgent.prototype.resolveFrameVariables_):
        (devtools.DebuggerAgent.prototype.resolveCompletionsOnFrame):
        (devtools.DebuggerAgent.prototype.getScriptContextType):
        (devtools.DebuggerAgent.prototype.requestClearBreakpoint_):
        (devtools.DebuggerAgent.prototype.requestChangeBreakpoint_):
        (devtools.DebuggerAgent.prototype.requestBacktrace_):
        (devtools.DebuggerAgent.sendCommand_):
        (devtools.DebuggerAgent.prototype.stepCommand_):
        (devtools.DebuggerAgent.prototype.requestLookup_):
        (devtools.DebuggerAgent.prototype.setContextId_.this.requestSeqToCallback_.cmd.getSequenceNumber):
        (devtools.DebuggerAgent.prototype.setContextId_):
        (devtools.DebuggerAgent.prototype.handleDebuggerOutput_):
        (devtools.DebuggerAgent.prototype.handleBreakEvent_):
        (devtools.DebuggerAgent.prototype.handleExceptionEvent_):
        (devtools.DebuggerAgent.prototype.handleScriptsResponse_):
        (devtools.DebuggerAgent.prototype.isScriptFromInspectedContext_):
        (devtools.DebuggerAgent.prototype.handleSetBreakpointResponse_):
        (devtools.DebuggerAgent.prototype.handleAfterCompileEvent_):
        (devtools.DebuggerAgent.prototype.addScriptInfo_):
        (devtools.DebuggerAgent.prototype.handleClearBreakpointResponse_):
        (devtools.DebuggerAgent.prototype.handleBacktraceResponse_):
        (devtools.DebuggerAgent.prototype.doHandleBacktraceResponse_):
        (devtools.DebuggerAgent.prototype.evaluateInCallFrame):
        (devtools.DebuggerAgent.prototype.invokeCallbackForResponse_):
        (devtools.DebuggerAgent.prototype.formatCallFrame_):
        (devtools.DebuggerAgent.formatObjectProperties_):
        (devtools.DebuggerAgent.propertiesToProxies_):
        (devtools.DebuggerAgent.formatObjectProxy_):
        (devtools.DebuggerAgent.webkitToV8LineNumber_):
        (devtools.DebuggerAgent.v8ToWwebkitLineNumber_):
        (devtools.ScriptInfo):
        (devtools.ScriptInfo.prototype.getLineOffset):
        (devtools.ScriptInfo.prototype.getContextType):
        (devtools.ScriptInfo.prototype.getUrl):
        (devtools.ScriptInfo.prototype.isUnresolved):
        (devtools.ScriptInfo.prototype.getBreakpointInfo):
        (devtools.ScriptInfo.prototype.addBreakpointInfo):
        (devtools.ScriptInfo.prototype.removeBreakpointInfo):
        (devtools.BreakpointInfo):
        (devtools.BreakpointInfo.prototype.getLine):
        (devtools.BreakpointInfo.prototype.getV8Id):
        (devtools.BreakpointInfo.prototype.setV8Id):
        (devtools.BreakpointInfo.prototype.markAsRemoved):
        (devtools.BreakpointInfo.prototype.isRemoved):
        (devtools.CallFrame):
        (devtools.CallFrame.prototype.evaluate_):
        (devtools.DebugCommand):
        (devtools.DebugCommand.prototype.getSequenceNumber):
        (devtools.DebugCommand.prototype.toJSONProtocol):
        (devtools.DebuggerMessage):
        (devtools.DebuggerMessage.prototype.getType):
        (devtools.DebuggerMessage.prototype.getEvent):
        (devtools.DebuggerMessage.prototype.getCommand):
        (devtools.DebuggerMessage.prototype.getRequestSeq):
        (devtools.DebuggerMessage.prototype.isRunning):
        (devtools.DebuggerMessage.prototype.isSuccess):
        (devtools.DebuggerMessage.prototype.getMessage):
        (devtools.DebuggerMessage.prototype.getBody):
        (devtools.DebuggerMessage.prototype.lookup):
        * src/js/DevTools.js: Added.
        (devtools.dispatch):
        (devtools.ToolsAgent):
        (devtools.ToolsAgent.prototype.reset):
        (devtools.ToolsAgent.prototype.evaluateJavaScript):
        (devtools.ToolsAgent.prototype.getDebuggerAgent):
        (devtools.ToolsAgent.prototype.getProfilerAgent):
        (devtools.ToolsAgent.prototype.frameNavigate_):
        (devtools.ToolsAgent.prototype.dispatchOnClient_):
        (devtools.ToolsAgent.prototype.evaluate):
        (WebInspector.setResourcesPanelEnabled):
        (debugPrint):
        (devtools):
        (WebInspector.loaded):
        ():
        (WebInspector.ScriptView.prototype.setupSourceFrameIfNeeded):
        (WebInspector.ScriptView.prototype.didResolveScriptSource_):
        (WebInspector.UnresolvedPropertyValue):
        (WebInspector.UIString):
        (WebInspector.resourceTrackingWasEnabled):
        (WebInspector.resourceTrackingWasDisabled):
        (WebInspector.TestController.prototype.runAfterPendingDispatches):
        (WebInspector.queuesAreEmpty):
        (WebInspector.pausedScript):
        * src/js/DevToolsHostStub.js: Added.
        (.RemoteDebuggerAgentStub):
        (.RemoteDebuggerAgentStub.prototype.getContextId):
        (.RemoteProfilerAgentStub):
        (.RemoteProfilerAgentStub.prototype.getActiveProfilerModules):
        (.RemoteProfilerAgentStub.prototype.getLogLines):
        (.RemoteToolsAgentStub):
        (.RemoteToolsAgentStub.prototype.dispatchOnInjectedScript):
        (.RemoteToolsAgentStub.prototype.dispatchOnInspectorController):
        (.RemoteToolsAgentStub.prototype.executeVoidJavaScript):
        (.ProfilerStubHelper):
        (.ProfilerStubHelper.GetInstance):
        (.ProfilerStubHelper.prototype.StopProfiling):
        (.ProfilerStubHelper.prototype.StartProfiling):
        (.ProfilerStubHelper.prototype.getActiveProfilerModules):
        (.ProfilerStubHelper.prototype.getLogLines):
        (.RemoteDebuggerCommandExecutorStub):
        (.RemoteDebuggerCommandExecutorStub.prototype.DebuggerCommand):
        (.RemoteDebuggerCommandExecutorStub.prototype.DebuggerPauseScript):
        (.RemoteDebuggerCommandExecutorStub.prototype.sendResponse_):
        (.DevToolsHostStub):
        (.DevToolsHostStub.prototype.reset):
        (.DevToolsHostStub.prototype.setting):
        (.DevToolsHostStub.prototype.setSetting):
        * src/js/HeapProfilerPanel.js: Added.
        (WebInspector.ProfilesPanel.prototype.addSnapshot):
        (WebInspector.HeapSnapshotView):
        (WebInspector.HeapSnapshotView.prototype.get statusBarItems):
        (WebInspector.HeapSnapshotView.prototype.get profile):
        (WebInspector.HeapSnapshotView.prototype.set profile):
        (WebInspector.HeapSnapshotView.prototype.show):
        (WebInspector.HeapSnapshotView.prototype.hide):
        (WebInspector.HeapSnapshotView.prototype.resize):
        (WebInspector.HeapSnapshotView.prototype.refresh):
        (WebInspector.HeapSnapshotView.prototype.refreshShowAsPercents):
        (WebInspector.HeapSnapshotView.prototype._deleteSearchMatchedFlags):
        (WebInspector.HeapSnapshotView.prototype.searchCanceled):
        (WebInspector.HeapSnapshotView.prototype.performSearch):
        (WebInspector.HeapSnapshotView.prototype.jumpToFirstSearchResult.WebInspector.CPUProfileView.prototype.jumpToFirstSearchResult.jumpToLastSearchResult.WebInspector.CPUProfileView.prototype.jumpToLastSearchResult.jumpToNextSearchResult.WebInspector.CPUProfileView.prototype.jumpToNextSearchResult.jumpToPreviousSearchResult.WebInspector.CPUProfileView.prototype.jumpToPreviousSearchResult.showingFirstSearchResult.WebInspector.CPUProfileView.prototype.showingFirstSearchResult.showingLastSearchResult.WebInspector.CPUProfileView.prototype.showingLastSearchResult._jumpToSearchResult.WebInspector.CPUProfileView.prototype._jumpToSearchResult.refreshVisibleData):
        (WebInspector.HeapSnapshotView.prototype._changeBase):
        (WebInspector.HeapSnapshotView.prototype._createSnapshotDataGridList):
        (WebInspector.HeapSnapshotView.prototype._mouseDownInDataGrid):
        (WebInspector.HeapSnapshotView.prototype.get _isShowingAsPercent):
        (WebInspector.HeapSnapshotView.prototype._percentClicked):
        (WebInspector.HeapSnapshotView.prototype._resetDataGridList):
        (WebInspector.HeapSnapshotView.prototype._sortData):
        (WebInspector.HeapSnapshotView.prototype._updateBaseOptions):
        (WebInspector.HeapSnapshotView.prototype._updatePercentButton):
        (WebInspector.HeapSnapshotView.prototype._updateSummaryGraph):
        (WebInspector.HeapSnapshotView.SearchHelper.operations.LESS):
        (WebInspector.HeapSnapshotView.SearchHelper.operations.LESS_OR_EQUAL):
        (WebInspector.HeapSnapshotView.SearchHelper.operations.EQUAL):
        (WebInspector.HeapSnapshotView.SearchHelper.operations.GREATER_OR_EQUAL):
        (WebInspector.HeapSnapshotView.SearchHelper.operations.GREATER):
        (WebInspector.HeapSnapshotView.SearchHelper.parseOperationAndNumber):
        (WebInspector.HeapSummaryCalculator):
        (WebInspector.HeapSummaryCalculator.prototype.computeSummaryValues):
        (WebInspector.HeapSummaryCalculator.prototype.formatValue):
        (WebInspector.HeapSummaryCalculator.prototype.get showAsPercent):
        (WebInspector.HeapSummaryCalculator.prototype.set showAsPercent):
        (WebInspector.HeapSummaryCountCalculator):
        (WebInspector.HeapSummaryCountCalculator.prototype._highFromLow):
        (WebInspector.HeapSummaryCountCalculator.prototype._valueToString):
        (WebInspector.HeapSummarySizeCalculator):
        (WebInspector.HeapSummarySizeCalculator.prototype._highFromLow):
        (WebInspector.HeapSnapshotSidebarTreeElement):
        (WebInspector.HeapSnapshotSidebarTreeElement.prototype.get mainTitle):
        (WebInspector.HeapSnapshotSidebarTreeElement.prototype.set mainTitle):
        (WebInspector.HeapSnapshotDataGridNodeWithRetainers):
        (WebInspector.HeapSnapshotDataGridNodeWithRetainers.prototype.get _hasRetainers):
        (WebInspector.HeapSnapshotDataGridNodeWithRetainers.prototype.get _parent):
        (WebInspector.HeapSnapshotDataGridNodeWithRetainers.prototype._populate.if):
        (WebInspector.HeapSnapshotDataGridNodeWithRetainers.prototype._populate):
        (WebInspector.HeapSnapshotDataGridNodeWithRetainers.prototype.produceDiff):
        (WebInspector.HeapSnapshotDataGridNodeWithRetainers.prototype.sort):
        (WebInspector.HeapSnapshotDataGridNodeWithRetainers.prototype.signForDelta):
        (WebInspector.HeapSnapshotDataGridNodeWithRetainers.prototype.showDeltaAsPercent):
        (WebInspector.HeapSnapshotDataGridNodeWithRetainers.prototype.getTotalCount):
        (WebInspector.HeapSnapshotDataGridNodeWithRetainers.prototype.getTotalSize):
        (WebInspector.HeapSnapshotDataGridNodeWithRetainers.prototype.get countPercent):
        (WebInspector.HeapSnapshotDataGridNodeWithRetainers.prototype.get sizePercent):
        (WebInspector.HeapSnapshotDataGridNodeWithRetainers.prototype.get countDeltaPercent):
        (WebInspector.HeapSnapshotDataGridNodeWithRetainers.prototype.get sizeDeltaPercent):
        (WebInspector.HeapSnapshotDataGridNodeWithRetainers.prototype.get data):
        (WebInspector.HeapSnapshotDataGridNodeWithRetainers.prototype.createCell):
        (WebInspector.HeapSnapshotDataGridNode):
        (WebInspector.HeapSnapshotDataGridList):
        (WebInspector.HeapSnapshotDataGridList.prototype.appendChild):
        (WebInspector.HeapSnapshotDataGridList.prototype.insertChild):
        (WebInspector.HeapSnapshotDataGridList.prototype.removeChildren):
        (WebInspector.HeapSnapshotDataGridList.prototype.populateChildren):
        (WebInspector.HeapSnapshotDataGridList.propertyComparator.comparator):
        (WebInspector.HeapSnapshotDataGridList.propertyComparator):
        (WebInspector.HeapSnapshotDataGridRetainerNode):
        (WebInspector.HeapSnapshotDataGridRetainerNode.prototype.get sizePercent):
        (WebInspector.HeapSnapshotDataGridRetainerNode.prototype.get sizeDeltaPercent):
        (WebInspector.HeapSnapshotDataGridRetainerNode.prototype._calculateRetainers):
        (WebInspector.HeapSnapshotProfileType):
        (WebInspector.HeapSnapshotProfileType.prototype.get buttonTooltip):
        (WebInspector.HeapSnapshotProfileType.prototype.get buttonStyle):
        (WebInspector.HeapSnapshotProfileType.prototype.buttonClicked):
        (WebInspector.HeapSnapshotProfileType.prototype.get welcomeMessage):
        (WebInspector.HeapSnapshotProfileType.prototype.createSidebarTreeElementForProfile):
        (WebInspector.HeapSnapshotProfileType.prototype.createView):
        ():
        * src/js/InjectDispatch.js: Added.
        (InspectorControllerDispatcher.dispatch):
        (ApuAgentDispatcher.dispatchToApu):
        (dispatch):
        (devtools):
        * src/js/InspectorControllerImpl.js: Added.
        (devtools.InspectorBackendImpl):
        (devtools.InspectorBackendImpl.prototype.toggleNodeSearch):
        (devtools.InspectorBackendImpl.prototype.debuggerEnabled):
        (devtools.InspectorBackendImpl.prototype.profilerEnabled):
        (devtools.InspectorBackendImpl.prototype.addBreakpoint):
        (devtools.InspectorBackendImpl.prototype.removeBreakpoint):
        (devtools.InspectorBackendImpl.prototype.updateBreakpoint):
        (devtools.InspectorBackendImpl.prototype.pauseInDebugger):
        (devtools.InspectorBackendImpl.prototype.resumeDebugger):
        (devtools.InspectorBackendImpl.prototype.stepIntoStatementInDebugger):
        (devtools.InspectorBackendImpl.prototype.stepOutOfFunctionInDebugger):
        (devtools.InspectorBackendImpl.prototype.stepOverStatementInDebugger):
        (devtools.InspectorBackendImpl.prototype.setPauseOnExceptionsState):
        (devtools.InspectorBackendImpl.prototype.pauseOnExceptionsState):
        (devtools.InspectorBackendImpl.prototype.pauseOnExceptions):
        (devtools.InspectorBackendImpl.prototype.setPauseOnExceptions):
        (devtools.InspectorBackendImpl.prototype.startProfiling):
        (devtools.InspectorBackendImpl.prototype.stopProfiling):
        (devtools.InspectorBackendImpl.prototype.getProfileHeaders):
        (devtools.InspectorBackendImpl.prototype.addFullProfile):
        (devtools.InspectorBackendImpl.prototype.getProfile):
        (devtools.InspectorBackendImpl.prototype.takeHeapSnapshot):
        (devtools.InspectorBackendImpl.prototype.dispatchOnInjectedScript):
        (devtools.InspectorBackendImpl.prototype.installInspectorControllerDelegate_):
        (devtools.InspectorBackendImpl.prototype.callInspectorController_):
        * src/js/ProfilerAgent.js: Added.
        (devtools.ProfilerAgent):
        (devtools.ProfilerAgent.prototype.setupProfilerProcessorCallbacks):
        (devtools.ProfilerAgent.prototype.initializeProfiling):
        (devtools.ProfilerAgent.prototype.startProfiling):
        (devtools.ProfilerAgent.prototype.stopProfiling):
        (devtools.ProfilerAgent.prototype.didGetActiveProfilerModules_):
        (devtools.ProfilerAgent.prototype.didGetLogLines_):
        * src/js/ProfilerProcessor.js: Added.
        (devtools.profiler.WebKitViewBuilder):
        (devtools.profiler.WebKitViewBuilder.prototype.createViewNode):
        (devtools.profiler.WebKitViewNode):
        (set get devtools.profiler.WebKitViewNode.prototype.initFuncInfo_):
        (devtools.profiler.JsProfile):
        (devtools.profiler.JsProfile.prototype.skipThisFunction):
        (devtools.profiler.Processor):
        (devtools.profiler.Processor.prototype.printError):
        (devtools.profiler.Processor.prototype.skipDispatch):
        (devtools.profiler.Processor.prototype.setCallbacks):
        (devtools.profiler.Processor.prototype.setNewProfileCallback):
        (devtools.profiler.Processor.prototype.processProfiler_.switch.break):
        (devtools.profiler.Processor.prototype.processProfiler_):
        (devtools.profiler.Processor.prototype.processCodeCreation_):
        (devtools.profiler.Processor.prototype.processCodeMove_):
        (devtools.profiler.Processor.prototype.processCodeDelete_):
        (devtools.profiler.Processor.prototype.processFunctionCreation_):
        (devtools.profiler.Processor.prototype.processFunctionMove_):
        (devtools.profiler.Processor.prototype.processFunctionDelete_):
        (devtools.profiler.Processor.prototype.processTick_):
        (devtools.profiler.Processor.prototype.processTickV2_):
        (devtools.profiler.Processor.prototype.processHeapSampleBegin_):
        (devtools.profiler.Processor.prototype.processHeapSampleStats_):
        (devtools.profiler.Processor.prototype.processHeapSampleItem_):
        (devtools.profiler.Processor.prototype.processHeapJsConsItem_):
        (devtools.profiler.Processor.prototype.processHeapJsRetItem_.mergeRetainers):
        (devtools.profiler.Processor.prototype.processHeapJsRetItem_):
        (devtools.profiler.Processor.prototype.processHeapSampleEnd_):
        (devtools.profiler.Processor.prototype.createProfileForView):
        * src/js/Tests.js: Added.
        (.TestSuite):
        (.TestSuite.prototype.fail):
        (.TestSuite.prototype.assertEquals):
        (.TestSuite.prototype.assertTrue):
        (.TestSuite.prototype.assertContains):
        (.TestSuite.prototype.takeControl):
        (.TestSuite.prototype.releaseControl):
        (.TestSuite.prototype.reportOk_):
        (.TestSuite.prototype.reportFailure_):
        (.TestSuite.prototype.runTest):
        (.TestSuite.prototype.showPanel):
        (.TestSuite.prototype.addSniffer.receiver.methodName):
        (.TestSuite.prototype.addSniffer):
        (.TestSuite.prototype.testHostIsPresent):
        (.TestSuite.prototype.testElementsTreeRoot):
        (.TestSuite.prototype.testMainResource):
        (.TestSuite.prototype.testResourceContentLength.this.addSniffer.):
        (.TestSuite.prototype.testResourceHeaders):
        (.TestSuite.prototype.testCachedResourceMimeType.this.addSniffer.):
        (.TestSuite.prototype.testCachedResourceMimeType):
        (.TestSuite.prototype.testProfilerTab):
        (.TestSuite.prototype.testScriptsTabIsPopulatedOnInspectedPageRefresh.waitUntilScriptIsParsed):
        (.TestSuite.prototype.testScriptsTabIsPopulatedOnInspectedPageRefresh.checkScriptsPanel):
        (.TestSuite.prototype.testScriptsTabIsPopulatedOnInspectedPageRefresh):
        (.TestSuite.prototype.testNoScriptDuplicatesOnPanelSwitch.switchToElementsTab):
        (.TestSuite.prototype.testNoScriptDuplicatesOnPanelSwitch.switchToScriptsTab):
        (.TestSuite.prototype.testNoScriptDuplicatesOnPanelSwitch.checkScriptsPanel):
        (.TestSuite.prototype.testNoScriptDuplicatesOnPanelSwitch.checkNoDuplicates):
        (.TestSuite.prototype.testPauseOnException):
        (.TestSuite.prototype.testPauseWhenLoadingDevTools):
        (.TestSuite.prototype.testPauseWhenScriptIsRunning.testScriptPauseAfterDelay):
        (.TestSuite.prototype.testPauseWhenScriptIsRunning.testScriptPause):
        (.TestSuite.prototype.testPauseWhenScriptIsRunning):
        (.TestSuite.prototype.optionsToString_):
        (.TestSuite.prototype.evaluateInConsole_):
        (.TestSuite.prototype.waitForSetBreakpointResponse_):
        (.TestSuite.prototype.testEvalOnCallFrame.setBreakpointCallback):
        (.TestSuite.prototype.testEvalOnCallFrame.waitForBreakpointHit):
        (.TestSuite.prototype.testCompletionOnPause):
        (.TestSuite.prototype.testCompletionOnPause.testLocalsCompletion):
        (.TestSuite.prototype.testCompletionOnPause.testThisCompletion):
        (.TestSuite.prototype.testCompletionOnPause.testFieldCompletion):
        (.TestSuite.prototype.testCompletionOnPause.checkCompletions):
        (.TestSuite.prototype.testAutoContinueOnSyntaxError.checkScriptsList):
        (.TestSuite.prototype.testAutoContinueOnSyntaxError.waitForExceptionEvent.test):
        (.TestSuite.prototype.testAutoContinueOnSyntaxError.waitForExceptionEvent):
        (.TestSuite.prototype._checkExecutionLine):
        (.TestSuite.prototype._scriptsAreParsed):
        (.TestSuite.prototype._waitForScriptPause):
        (.TestSuite.prototype._checkSourceFrameWhenLoaded.checkExecLine):
        (.TestSuite.prototype._checkSourceFrameWhenLoaded):
        (.TestSuite.prototype._performSteps.doNextAction):
        (.TestSuite.prototype._performSteps):
        (.TestSuite.prototype._executeCodeWhenScriptsAreParsed.executeFunctionInInspectedPage):
        (.TestSuite.prototype._waitUntilScriptsAreParsed.waitForAllScripts):
        (.TestSuite.prototype._waitUntilScriptsAreParsed):
        (.TestSuite.prototype._executeFunctionForStepTest):
        (.TestSuite.prototype.testStepOver):
        (.TestSuite.prototype.testStepOut):
        (.TestSuite.prototype.testStepIn):
        (.TestSuite.prototype._evaluateXpath):
        (.TestSuite.prototype._findNode):
        (.TestSuite.prototype._findText):
        (.TestSuite.prototype._nodeIterator):
        (.TestSuite.prototype._checkScopeSectionDiv):
        (.TestSuite.prototype._expandScopeSections.updateListener):
        (.TestSuite.prototype._expandScopeSections):
        (.TestSuite.prototype.testExpandScope):
        (.TestSuite.prototype.testExpandScope.examineScopes):
        (.TestSuite.prototype._findChildProperty):
        (.TestSuite.prototype._hookGetPropertiesCallback.accessor.getProperties):
        (.TestSuite.prototype._hookGetPropertiesCallback.try):
        (.TestSuite.prototype._hookGetPropertiesCallback):
        (.TestSuite.prototype.testDebugIntrinsicProperties.expandLocalScope):
        (.TestSuite.prototype.testDebugIntrinsicProperties):
        (.TestSuite.prototype.testDebugIntrinsicProperties.expandAndCheckNextProperty):
        (.TestSuite.prototype.testDebugIntrinsicProperties.checkProperty):
        (.TestSuite.createKeyEvent):
        (.TestSuite.prototype.testConsoleLog.assertNext):
        (.TestSuite.prototype.testConsoleLog):
        (.TestSuite.prototype.testEvalGlobal.initEval):
        (.TestSuite.prototype.testEvalGlobal):
        (.TestSuite.prototype.testShowStoragePanel.this.addSniffer.):
        (.TestSuite.prototype.testShowStoragePanel.this.addSniffer):
        (.uiTests.runAllTests):
        (.uiTests.runTest):

2010-02-09  Avi Drissman  <avi@chromium.org>

        Reviewed by David Levin.

        Chromium Mac: Control-A shouldn't select all/Control-C shouldn't copy
        https://bugs.webkit.org/show_bug.cgi?id=34615

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

2010-02-08  Evan Martin  <evan@chromium.org>

        dlopen() knows how to search the library search path, so just rely on
        it.  While I'm at it, print out the dlerror() error message on failure.

        [chromium] webgl shouldn't hard code library search path
        https://bugs.webkit.org/show_bug.cgi?id=34659

        * src/GraphicsContext3D.cpp:
        (WebCore::GraphicsContext3DInternal::GLConnection::GLConnection):
        (WebCore::GraphicsContext3DInternal::GLConnection::create):

2010-02-08  Charlie Reis  <creis@chromium.org>

        Reviewed by Darin Adler.

        onbeforeunload not called at window close + frame or iframe focused
        https://bugs.webkit.org/show_bug.cgi?id=27481
        http://code.google.com/p/chromium/issues/detail?id=32615
        http://code.google.com/p/chromium/issues/detail?id=17157

        Chromium and WebKit on Windows will now fire beforeunload handlers
        even if an inner frame is focused.

        Layout tests aren't able to test this bug, since it requires closing
        the actual browser window, not calling window.close().  Instead,
        test with WebCore/manual-tests/onbeforeunload-focused-iframe.html.

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

2010-02-08  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by David Levin.

        WebKit/chromium: Custom context menu does not work in inspector.
        https://bugs.webkit.org/show_bug.cgi?id=34711

        * src/WebDevToolsFrontendImpl.cpp:
        (WebKit::WebDevToolsFrontendImpl::jsShowContextMenu):

2010-02-08  Nate Chapin  <japhet@chromium.org>

        Reviewed by Darin Fisher.

        Check that the index passed into BackForwardListClientImpl::itemAtIndex()
        is valid, and return null if it isn't.

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

        * src/BackForwardListClientImpl.cpp:
        (WebKit::BackForwardListClientImpl::itemAtIndex):

2010-02-05  Dumitru Daniliuc  <dumi@chromium.org>

        Reviewed by Jeremy Orlow.

        Adding a way to close all database handles pointing to a certain
        database as soon as possible.
        https://bugs.webkit.org/show_bug.cgi?id=34619

        * public/WebDatabase.h:
        * src/WebDatabase.cpp:
        (WebKit::WebDatabase::closeDatabaseImmediately):

2010-02-08  Dirk Schulze  <krit@webkit.org>

        Reviewed by Nikolas Zimmermann.

        Add back an AffineTransform class for use by SVG
        https://bugs.webkit.org/show_bug.cgi?id=33750

        Use AffineTransform instead of TransformationMatrix here.

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

2010-02-07  Jian Li  <jianli@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Change chromium interface to handle DownloadURL format.
        https://bugs.webkit.org/show_bug.cgi?id=34655

        * public/WebDragData.h:
        * src/WebDragData.cpp:
        (WebKit::WebDragData::downloadMetadata):
        (WebKit::WebDragData::setDownloadMetadata):

2010-02-06  Dimitri Glazkov  <dglazkov@chromium.org>

        No review, rolling out r54364.
        http://trac.webkit.org/changeset/54364
        https://bugs.webkit.org/show_bug.cgi?id=34464

        Introduced asserts in layout tests, needs more testing
        locally.

        * public/WebViewClient.h:
        * src/ChromeClientImpl.cpp:
        * src/ChromeClientImpl.h:

2010-02-05  James Hawkins  <jhawkins@chromium.org>

        Reviewed by David Levin.

        [Chromium] Rename autocomplete* to suggestions* to prepare for the
        refactoring of AutocompletePopupMenuClient.

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

        * public/WebView.h:
        * src/AutocompletePopupMenuClient.cpp:
        (WebKit::AutocompletePopupMenuClient::popupDidHide):
        * src/EditorClientImpl.cpp:
        (WebKit::EditorClientImpl::textFieldDidEndEditing):
        (WebKit::EditorClientImpl::doAutofill):
        * src/WebViewImpl.cpp:
        (WebKit::):
        (WebKit::WebViewImpl::WebViewImpl):
        (WebKit::WebViewImpl::mouseDown):
        (WebKit::WebViewImpl::autocompleteHandleKeyEvent):
        (WebKit::WebViewImpl::setFocus):
        (WebKit::WebViewImpl::applyAutofillSuggestions):
        (WebKit::WebViewImpl::hideAutofillPopup):
        (WebKit::WebViewImpl::hideSuggestionsPopup):
        (WebKit::WebViewImpl::refreshSuggestionsPopup):
        * src/WebViewImpl.h:
        (WebKit::WebViewImpl::suggestionsPopupDidHide):

2010-02-05  James Hawkins  <jhawkins@chromium.org>

        Reviewed by David Levin.

        [Chromium] Remove an unused forward declaration in WebKitClient.h.

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

        * public/WebKitClient.h:

2010-02-05  James Hawkins  <jhawkins@chromium.org>

        Reviewed by Darin Fisher.

        Implement WebInputElement::isActivatedSubmit().

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

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

2010-02-05  Nate Chapin  <japhet@chromium.org>

        Reviewed by Dimitri Glazkov.

        Update code for getting a v8::FunctionTemplate.

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

        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::createInspectorBackendV8Wrapper):

2010-02-05  Mikhail Naganov  <mnaganov@chromium.org>

        Reviewed by Pavel Feldman.

        Enable JAVASCRIPT_DEBUGGER in chromium port.

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

        * features.gypi:

2010-02-04  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Darin Fisher.

        Upstreaming gtests from chromium: UniscribeHelper and TransparencyWin
        https://bugs.webkit.org/show_bug.cgi?id=34509

        Resubmit: The previous commit (r54333) was rolled back.

        * WebKit.gyp:
        * tests/TransparencyWinTest.cpp: Added.
        (WebCore::RECTToFloatRect):
        (WebCore::drawNativeRect):
        (WebCore::getPixelAt):
        (WebCore::clearTopLayerAlphaChannel):
        (WebCore::clearTopLayerAlphaPixel):
        (WebCore::operator<<):
        (WebCore::TEST):
        * tests/UniscribeHelperTest.cpp: Added.
        (WebCore::UniscribeTest::UniscribeTest):
        (WebCore::UniscribeTest::MakeFont):
        (WebCore::UniscribeTest::SetUp):
        (WebCore::UniscribeTest::TearDown):
        (TEST_F):

2010-02-04  Drew Wilson  <atwilson@chromium.org>

        Reviewed by David Levin.

        WorkerContext.close() does not work in the chromium port
        https://bugs.webkit.org/show_bug.cgi?id=34551

        Test: Adding new downstream test.

        * src/WebWorkerBase.cpp:
        (WebKit::WebWorkerBase::workerContextClosedTask):
        Now shuts down the worker thread when WorkerContext::close() is invoked.

2010-02-04  Chris Guillory  <chris.guillory@google.com>

        Reviewed by Darin Fisher.

        [Chromium] Add function for AccessibilityObject state change notifications.
        
        https://bugs.webkit.org/show_bug.cgi?id=34464

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

2010-02-04  Jeremy Moskovich  <jeremy@chromium.org>

        Reviewed by Darin Fisher.

        Update comments to better document the possible values of the
        writing direction menu state variables.

        * public/WebContextMenuData.h:

2010-02-04  Nate Chapin  <japhet@chromium.org>

        Reviewed by Dimitri Glazkov.

        Remove references to V8Custom.

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

        * src/DebuggerAgentImpl.cpp:
        * src/WebDevToolsFrontendImpl.cpp:

2010-02-04  Yury Semikhatsky  <yurys@chromium.org>

        Unreviewed. Revert 54333 which broke Chromium build.

        * WebKit.gyp:
        * tests/TransparencyWinTest.cpp: Removed.
        * tests/UniscribeHelperTest.cpp: Removed.

2010-02-04  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Darin Fisher.

        Upstreaming gtests from chromium: UniscribeHelper and TransparencyWin.
        https://bugs.webkit.org/show_bug.cgi?id=34509

        * WebKit.gyp:
        * tests/TransparencyWinTest.cpp: Added.
        (WebCore::RECTToFloatRect):
        (WebCore::drawNativeRect):
        (WebCore::getPixelAt):
        (WebCore::clearTopLayerAlphaChannel):
        (WebCore::clearTopLayerAlphaPixel):
        (WebCore::operator<<):
        (WebCore::TEST):
        * tests/UniscribeHelperTest.cpp: Added.
        (WebCore::UniscribeTest::UniscribeTest):
        (WebCore::UniscribeTest::MakeFont):
        (WebCore::UniscribeTest::SetUp):
        (WebCore::UniscribeTest::TearDown):
        (WebCore::TEST_F):

2010-02-04  Jeremy Moskovich  <jeremy@chromium.org>

        Reviewed by David Levin.

        [Chromium] WebKit side of "Writing direction" context menu on OS X.
        https://bugs.webkit.org/show_bug.cgi?id=34524

        * public/WebContextMenuData.h:
        (WebKit::WebContextMenuData::):
        * src/ContextMenuClientImpl.cpp:
        (WebKit::ContextMenuClientImpl::getCustomMenuFromDefaultItems):

2010-02-03  Drew Wilson  <atwilson@chromium.org>

        Reviewed by Alexey Proskuryakov.

        SharedWorkerScriptLoader should not be an ActiveDOMObject
        https://bugs.webkit.org/show_bug.cgi?id=34513

        * src/SharedWorkerRepository.cpp:
        (WebCore::SharedWorkerScriptLoader::SharedWorkerScriptLoader):
        Changed SharedWorkerScriptLoader to manage its own lifecycle without using ActiveDOMObject.
        (WebCore::SharedWorkerScriptLoader::parentContext):
        (WebCore::pendingLoaders):
        Now we manually track pending loads so we can shut them down when the parent context shuts down.
        (WebCore::SharedWorkerScriptLoader::contextDetached):
        Shuts down/frees any pending worker loads.
        (WebCore::SharedWorkerScriptLoader::~SharedWorkerScriptLoader):
        Marks the SharedWorker object as not having pending activity if there was a load active (handles case where load was pending when parent document exits).
        (WebCore::SharedWorkerScriptLoader::load):
        (WebCore::SharedWorkerRepository::documentDetached):
        Now calls SharedWorkerScriptLoader::contextDetached() to shutdown any pending worker loads.

2010-02-03  Alexander Pavlov  <apavlov@chromium.org>

        Reviewed by Timothy Hatcher.

        [Chromium] Return a consistent set of platforms from WebDevToolsFrontendImpl
        https://bugs.webkit.org/show_bug.cgi?id=34523

        * src/WebDevToolsFrontendImpl.cpp:
        (WebKit::WebDevToolsFrontendImpl::jsPlatform):

2010-02-02  Joel Stanley  <joel@jms.id.au>

        Reviewed by David Levin.

        [Chromium] Add API method for setting caret blink frequency.
        https://bugs.webkit.org/show_bug.cgi?id=31704

        This enables the RenderThemeChromiumLinux::setCaretBlinkInterval method
        to be called Chromium's API.  The API is linux-only as it is currently
        the only port to implement RenderTheme::setCaretBlinkInterval.

        * WebKit.gyp:  Add WebRenderTheme.{h,cpp}
        * public/linux/WebRenderTheme.h: Added.
        * src/linux/WebRenderTheme.cpp: Added.
        (WebKit::setCaretBlinkInterval): Exposed API

2010-02-02  Shinichiro Hamaji  <hamaji@chromium.org>

        Reviewed by Dimitri Glazkov.

        [Chromium] Implement WebFrameImpl::pageNumberForElementById
        https://bugs.webkit.org/show_bug.cgi?id=34471

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

2010-02-02  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Upstream DevTools code.

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

        * WebKit.gyp:
        * src/APUAgentDelegate.h: Added.
        * src/BoundObject.cpp: Added.
        (WebKit::BoundObject::BoundObject):
        (WebKit::BoundObject::~BoundObject):
        (WebKit::BoundObject::addProtoFunction):
        (WebKit::BoundObject::build):
        * src/BoundObject.h: Added.
        * src/DebuggerAgent.h: Added.
        * src/DebuggerAgentImpl.cpp: Added.
        (WebKit::DebuggerAgentImpl::DebuggerAgentImpl):
        (WebKit::DebuggerAgentImpl::~DebuggerAgentImpl):
        (WebKit::DebuggerAgentImpl::getContextId):
        (WebKit::DebuggerAgentImpl::debuggerOutput):
        (WebKit::DebuggerAgentImpl::createUtilityContext):
        (WebKit::DebuggerAgentImpl::executeUtilityFunction):
        (WebKit::DebuggerAgentImpl::executeVoidJavaScript):
        (WebKit::DebuggerAgentImpl::page):
        * src/DebuggerAgentImpl.h: Added.
        (WebKit::DebuggerAgentImpl::setAutoContinueOnException):
        (WebKit::DebuggerAgentImpl::autoContinueOnException):
        (WebKit::DebuggerAgentImpl::webdevtoolsAgent):
        (WebKit::DebuggerAgentImpl::webView):
        * src/DebuggerAgentManager.cpp: Added.
        (WebKit::DebuggerAgentManager::debugHostDispatchHandler):
        (WebKit::DebuggerAgentManager::debugAttach):
        (WebKit::DebuggerAgentManager::debugDetach):
        (WebKit::DebuggerAgentManager::onV8DebugMessage):
        (WebKit::DebuggerAgentManager::pauseScript):
        (WebKit::DebuggerAgentManager::executeDebuggerCommand):
        (WebKit::DebuggerAgentManager::setMessageLoopDispatchHandler):
        (WebKit::DebuggerAgentManager::setHostId):
        (WebKit::DebuggerAgentManager::onWebViewClosed):
        (WebKit::DebuggerAgentManager::onNavigate):
        (WebKit::DebuggerAgentManager::sendCommandToV8):
        (WebKit::DebuggerAgentManager::sendContinueCommandToV8):
        (WebKit::DebuggerAgentManager::findAgentForCurrentV8Context):
        (WebKit::DebuggerAgentManager::debuggerAgentForHostId):
        * src/DebuggerAgentManager.h: Added.
        (WebKit::DebuggerAgentManager::UtilityContextScope::UtilityContextScope):
        (WebKit::DebuggerAgentManager::UtilityContextScope::~UtilityContextScope):
        * src/DevToolsRPC.h: Added.
        (WebKit::):
        (WebKit::DevToolsRPC::Delegate::Delegate):
        (WebKit::DevToolsRPC::Delegate::~Delegate):
        (WebKit::DevToolsRPC::DevToolsRPC):
        (WebKit::DevToolsRPC::~DevToolsRPC):
        (WebKit::DevToolsRPC::sendRpcMessage):
        * src/DevToolsRPCJS.h: Added.
        * src/ProfilerAgent.h: Added.
        * src/ProfilerAgentImpl.cpp: Added.
        (WebKit::ProfilerAgentImpl::getActiveProfilerModules):
        (WebKit::ProfilerAgentImpl::getLogLines):
        * src/ProfilerAgentImpl.h: Added.
        (WebKit::ProfilerAgentImpl::ProfilerAgentImpl):
        (WebKit::ProfilerAgentImpl::~ProfilerAgentImpl):
        * src/ToolsAgent.h: Added.
        * src/WebDevToolsAgentImpl.cpp: Added.
        (WebKit::):
        (WebKit::WebDevToolsAgentImpl::WebDevToolsAgentImpl):
        (WebKit::WebDevToolsAgentImpl::~WebDevToolsAgentImpl):
        (WebKit::WebDevToolsAgentImpl::disposeUtilityContext):
        (WebKit::WebDevToolsAgentImpl::unhideResourcesPanelIfNecessary):
        (WebKit::WebDevToolsAgentImpl::attach):
        (WebKit::WebDevToolsAgentImpl::detach):
        (WebKit::WebDevToolsAgentImpl::didNavigate):
        (WebKit::WebDevToolsAgentImpl::didCommitProvisionalLoad):
        (WebKit::WebDevToolsAgentImpl::didClearWindowObject):
        (WebKit::WebDevToolsAgentImpl::forceRepaint):
        (WebKit::WebDevToolsAgentImpl::dispatchOnInspectorController):
        (WebKit::WebDevToolsAgentImpl::dispatchOnInjectedScript):
        (WebKit::WebDevToolsAgentImpl::executeVoidJavaScript):
        (WebKit::WebDevToolsAgentImpl::dispatchMessageFromFrontend):
        (WebKit::WebDevToolsAgentImpl::inspectElementAt):
        (WebKit::WebDevToolsAgentImpl::setRuntimeFeatureEnabled):
        (WebKit::WebDevToolsAgentImpl::sendRpcMessage):
        (WebKit::WebDevToolsAgentImpl::compileUtilityScripts):
        (WebKit::WebDevToolsAgentImpl::initDevToolsAgentHost):
        (WebKit::WebDevToolsAgentImpl::createInspectorBackendV8Wrapper):
        (WebKit::WebDevToolsAgentImpl::resetInspectorFrontendProxy):
        (WebKit::WebDevToolsAgentImpl::setApuAgentEnabled):
        (WebKit::WebDevToolsAgentImpl::jsDispatchOnClient):
        (WebKit::WebDevToolsAgentImpl::jsDispatchToApu):
        (WebKit::WebDevToolsAgentImpl::jsEvaluateOnSelf):
        (WebKit::WebDevToolsAgentImpl::jsOnRuntimeFeatureStateChanged):
        (WebKit::WebDevToolsAgentImpl::inspectorController):
        (WebKit::WebDevToolsAgentImpl::identifierForInitialRequest):
        (WebKit::WebDevToolsAgentImpl::willSendRequest):
        (WebKit::WebDevToolsAgentImpl::didReceiveData):
        (WebKit::WebDevToolsAgentImpl::didReceiveResponse):
        (WebKit::WebDevToolsAgentImpl::didFinishLoading):
        (WebKit::WebDevToolsAgentImpl::didFailLoading):
        (WebKit::WebDevToolsAgentImpl::evaluateInWebInspector):
        (WebKit::WebDevToolsAgentImpl::setTimelineProfilingEnabled):
        (WebKit::WebDevToolsAgent::create):
        (WebKit::WebDevToolsAgent::executeDebuggerCommand):
        (WebKit::WebDevToolsAgent::debuggerPauseScript):
        (WebKit::WebDevToolsAgent::setMessageLoopDispatchHandler):
        (WebKit::WebDevToolsAgent::dispatchMessageFromFrontendOnIOThread):
        * src/WebDevToolsAgentImpl.h: Added.
        (WebKit::WebDevToolsAgentImpl::hostId):
        * src/WebDevToolsFrontendImpl.cpp: Added.
        (WebKit::ToV8String):
        (WebKit::WebDevToolsFrontend::create):
        (WebKit::WebDevToolsFrontendImpl::WebDevToolsFrontendImpl):
        (WebKit::WebDevToolsFrontendImpl::~WebDevToolsFrontendImpl):
        (WebKit::WebDevToolsFrontendImpl::dispatchMessageFromAgent):
        (WebKit::WebDevToolsFrontendImpl::executeScript):
        (WebKit::WebDevToolsFrontendImpl::dispatchOnWebInspector):
        (WebKit::WebDevToolsFrontendImpl::sendRpcMessage):
        (WebKit::WebDevToolsFrontendImpl::contextMenuItemSelected):
        (WebKit::WebDevToolsFrontendImpl::contextMenuCleared):
        (WebKit::WebDevToolsFrontendImpl::jsLoaded):
        (WebKit::WebDevToolsFrontendImpl::jsPlatform):
        (WebKit::WebDevToolsFrontendImpl::jsPort):
        (WebKit::WebDevToolsFrontendImpl::jsCopyText):
        (WebKit::WebDevToolsFrontendImpl::jsActivateWindow):
        (WebKit::WebDevToolsFrontendImpl::jsCloseWindow):
        (WebKit::WebDevToolsFrontendImpl::jsDockWindow):
        (WebKit::WebDevToolsFrontendImpl::jsUndockWindow):
        (WebKit::WebDevToolsFrontendImpl::jsLocalizedStringsURL):
        (WebKit::WebDevToolsFrontendImpl::jsHiddenPanels):
        (WebKit::WebDevToolsFrontendImpl::jsDebuggerCommand):
        (WebKit::WebDevToolsFrontendImpl::jsSetting):
        (WebKit::WebDevToolsFrontendImpl::jsSetSetting):
        (WebKit::WebDevToolsFrontendImpl::jsDebuggerPauseScript):
        (WebKit::WebDevToolsFrontendImpl::jsWindowUnloading):
        (WebKit::WebDevToolsFrontendImpl::jsShowContextMenu):
        * src/WebDevToolsFrontendImpl.h: Added.
        (WebKit::WebDevToolsFrontendImpl::MenuProvider::create):
        (WebKit::WebDevToolsFrontendImpl::MenuProvider::~MenuProvider):
        (WebKit::WebDevToolsFrontendImpl::MenuProvider::disconnect):
        (WebKit::WebDevToolsFrontendImpl::MenuProvider::populateContextMenu):
        (WebKit::WebDevToolsFrontendImpl::MenuProvider::contextMenuItemSelected):
        (WebKit::WebDevToolsFrontendImpl::MenuProvider::contextMenuCleared):
        (WebKit::WebDevToolsFrontendImpl::MenuProvider::MenuProvider):

2010-02-01  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Add WebSecurityOrigin::createFromString factory
        https://bugs.webkit.org/show_bug.cgi?id=34460

        * public/WebSecurityOrigin.h:
        * src/WebSecurityOrigin.cpp:
        (WebKit::WebSecurityOrigin::createFromString):

2010-02-02  Kent Tamura  <tkent@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Should not select a word on right-click.
        https://bugs.webkit.org/show_bug.cgi?id=33364

        For non-Mac platforms, do not select a word around the caret when
        a context menu is opening. This behavior is not common in non-Mac
        platforms, and it prevents pasting with a context menu.

        In order that the spell checker works without the selection, we
        introduce WebFrame::selectWordAroundCaret(). We can replace a word
        around the caret with selectWordAroundCaret() + replaceSelection().

        * public/WebFrame.h: Add pure selectWordAroundCaret() declaration.
        * src/ContextMenuClientImpl.cpp:
        (WebKit::selectMisspelledWord): Move word-selection code to
        WebFrameImpl::selectWordAroundPosition(), and clear the selection
        on non-Mac.
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::selectWordAroundPosition):
        (WebKit::WebFrameImpl::selectWordAroundCaret):
        * src/WebFrameImpl.h: Add selectWordAroundCaret() declaration.

2010-02-01  Shinichiro Hamaji  <hamaji@chromium.org>

        Unreviewed attempt to fix the broken build.

        This was introduced in http://trac.webkit.org/changeset/54182

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

2010-01-27  Matt Perry  <mpcomplete@chromium.org>

        Reviewed by Eric Seidel.

        Add support for addUserScript to chromium port.

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

2010-01-29  Philippe Normand  <pnormand@igalia.com>

        Reviewed by Eric Carlson.

        [GTK] set playbin mute property depending on volume value
        https://bugs.webkit.org/show_bug.cgi?id=31586

        New API in MediaPlayer for mute control

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

2010-01-31  Kent Tamura  <tkent@chromium.org>

        Reviewed by Jeremy Orlow.

        [Chromium] Fix a bug that a selected word is not recognized as a
        spell-check source.
        https://bugs.webkit.org/show_bug.cgi?id=33660

        * src/ContextMenuClientImpl.cpp:
        (WebKit::isASingleWord): Use wordBreakIterator(), and correctly check
        the return value of textBreakNext().

2010-01-29  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Eric Seidel.

        [Chromium] Clean up WebStorageArea
        https://bugs.webkit.org/show_bug.cgi?id=34353

        Get rid of legacy glue code and fix a typo.

        * public/WebStorageArea.h:

2010-01-29  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Dimitri Glazkov.

        A first step towards the Indexed Database API
        https://bugs.webkit.org/show_bug.cgi?id=34342

        Add runtime enable support for Indexed Database API.

        * features.gypi:
        * public/WebRuntimeFeatures.h:
        * src/WebRuntimeFeatures.cpp:
        (WebKit::WebRuntimeFeatures::enableIndexedDatabase):
        (WebKit::WebRuntimeFeatures::isIndexedDatabaseEnabled):

2010-01-29  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Add API methods for loading inspector utility scripts.

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

        * public/WebDevToolsAgentClient.h:
        (WebKit::WebDevToolsAgentClient::injectedScriptSource):
        (WebKit::WebDevToolsAgentClient::injectedScriptDispatcherSource):

2010-01-29  Darin Fisher  <darin@chromium.org>

        Reviewed by Adam Barth.

        Add FrameLoaderClient::allowImages method to allow the client to
        overrule image loading policy on a per frame basis.

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

        * public/WebFrameClient.h:
        (WebKit::WebFrameClient::allowImages):
        * public/WebSettings.h:
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::allowImages):
        * src/FrameLoaderClientImpl.h:
        * src/WebSettingsImpl.cpp:
        (WebKit::WebSettingsImpl::setImagesEnabled):
        * src/WebSettingsImpl.h:

2010-01-28  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Darin Fisher.

        StorageNamespaceProxy::copy() should be a no-op
        https://bugs.webkit.org/show_bug.cgi?id=34298

        The comment in the code should make clear why.

        * public/WebViewClient.h:
        * src/StorageNamespaceProxy.cpp:
        (WebCore::StorageNamespaceProxy::copy):

2010-01-28  Michael Nordman  <michaeln@google.com>

        Reviewed by Alexey Proskuryakov.

        ApplicationCache events should be deferred until after Document onload has fired.
        https://bugs.webkit.org/show_bug.cgi?id=29690

        * src/ApplicationCacheHost.cpp:
        (WebCore::ApplicationCacheHost::ApplicationCacheHost): Initialize m_isDeferringEvents to true.
        (WebCore::ApplicationCacheHost::notifyDOMApplicationCache): Depending, defer or raise the event.
        (WebCore::ApplicationCacheHost::stopDeferringEvents): Raise any deferred events and reset the flag.

2010-01-27  Aaron Boodman  <aa@chromium.org>

        Reviewed by Darin Adler.

        Send full URL and application id of requesting context to Chromium
        when checking notification permissions.

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

        * public/WebDocument.h:
        * src/WebDocument.cpp:
        (WebKit::WebDocument::applicationID):
        Implement applicationID() method.

        * public/WebNotificationPresenter.h:
        * src/NotificationPresenterImpl.cpp:
        (WebKit::NotificationPresenterImpl::checkPermission):
        * src/NotificationPresenterImpl.h:
        Send applicationID and full URL through to Chromium.

2010-01-27  Darin Fisher  <darin@chromium.org>

        Reviewed by Pavel Feldman.

        Expose HistoryItem::documentSequenceNumber
        https://bugs.webkit.org/show_bug.cgi?id=34243

        * public/WebHistoryItem.h:
        * src/WebHistoryItem.cpp:
        (WebKit::WebHistoryItem::documentSequenceNumber):
        (WebKit::WebHistoryItem::setDocumentSequenceNumber):

2010-01-26  Darin Fisher  <darin@chromium.org>

        Reviewed by David Levin.

        Add methods to support running a nested modal loop outside of WebKit.
        https://bugs.webkit.org/show_bug.cgi?id=34199

        * public/WebView.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebView::willEnterModalLoop): Create PageGroupLoadDeferrer
        (WebKit::WebView::didExitModalLoop): Destroy PageGroupLoadDeferrer

2010-01-27  Darin Fisher  <darin@chromium.org>

        Reviewed by Dimitri Glazkov.

        Adding missing WebMutationEvent.cpp file to fix build bustage. 
        https://bugs.webkit.org/show_bug.cgi?id=33882

        * public/WebMutationEvent.h: Remove unnecessary constructor.
        * src/WebEvent.cpp: Remove unnecessary include of WebMutationEvent.h.
        * src/WebMutationEvent.cpp: Added.

2010-01-27  Jay Campan  <jcampan@google.com>

        Reviewed by Darin Fisher.

        Adding EventListeners to the chromium API.

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

        * WebKit.gyp:
        * public/WebEvent.h: Added.
        * public/WebEventListener.h: Added.
        * public/WebMutationEvent.h: Added.
        * public/WebNode.h:
        * public/WebString.h:
        (WebKit::operator==):
        (WebKit::operator!=):
        * src/EventListenerWrapper.cpp: Added.
        * src/EventListenerWrapper.h: Added.
        * src/WebEvent.cpp: Added.
        * src/WebEventListener.cpp: Added.
        * src/WebEventListenerPrivate.cpp: Added.
        * src/WebEventListenerPrivate.h: Added.
        * src/WebNode.cpp:
        (WebKit::WebNode::addEventListener):
        (WebKit::WebNode::removeEventListener):
        * src/WebString.cpp:
        (WebKit::WebString::equals):

2010-01-26  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Darin Fisher.

        Add KeyboardTest to WebKit API tests
        https://bugs.webkit.org/show_bug.cgi?id=34178

        * WebKit.gyp:
        * tests/KeyboardTest.cpp: Added.

2010-01-22  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Darin Adler.

        Make storage events match the spec.
        https://bugs.webkit.org/show_bug.cgi?id=30546

        Update the storageEvent algorithm to match the change in WebCore.

        * src/StorageAreaProxy.cpp:
        (WebCore::StorageAreaProxy::storageEvent):

2010-01-22  Elliot Glaysher  <erg@chromium.org>

        Reviewed by David Levin.

        Chromium: theme selection colors to match gtk theme
        Add functions to RenderThemeChromiumLinux to change the selection color
        according to the current GTK+ theme.

        Since the change is to the Chromium WebKit API layer, testing is done
        in Chromium's test shell (see Chromium side of this patch:
        http://codereview.chromium.org/554004)

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

        * public/WebView.h: Adds interface to change the selection colors
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::setSelectionColors): Implements new interface.
        * src/WebViewImpl.h:

2010-01-22  Steve VanDeBogart  <vandebo@chromium.org>

        Reviewed by David Levin.

        Middle clicking the main scroll bars should not trigger a paste event
        in Linux chromium.
        https://bugs.webkit.org/show_bug.cgi?id=33062

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

2010-01-22  Albert J. Wong  <ajwong@chromium.org>

        Not reviewed.  backout.

        Backout r53705.
        Causes ui_tests to timeout, and browser_tests to fail with
        TestConnectToBadPort and WindowOpenInvalidExtension.

        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::dispatchDidChangeLocationWithinPage):
        (WebKit::FrameLoaderClientImpl::postProgressStartedNotification):
        (WebKit::FrameLoaderClientImpl::postProgressFinishedNotification):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::WebViewImpl):
        * src/WebViewImpl.h:

2010-01-22  Peter Kasting  <pkasting@google.com>

        Not reviewed, backout.

        Back out r52673, which caused several regressions.
        https://bugs.webkit.org/show_bug.cgi?id=32533

        * src/AutocompletePopupMenuClient.cpp:
        (WebKit::AutocompletePopupMenuClient::initialize):
        (WebKit::AutocompletePopupMenuClient::popupDidHide):
        (WebKit::AutocompletePopupMenuClient::setTextFromItem):
        * src/AutocompletePopupMenuClient.h:

2010-01-21  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Darin Fisher.

        The Chromium WebKit API needs to expose storage event related data
        https://bugs.webkit.org/show_bug.cgi?id=33985

        setItem and removeItem on WebStorageArea need to expose what the previous
        value was for the key being modified.  Clear needs to return whether it
        actually cleared anything.

        * public/WebStorageArea.h:
        (WebKit::WebStorageArea::setItem):
        (WebKit::WebStorageArea::removeItem):
        (WebKit::WebStorageArea::clear):
        * src/StorageAreaProxy.cpp:
        (WebCore::StorageAreaProxy::StorageAreaProxy):
        (WebCore::StorageAreaProxy::setItem):
        (WebCore::StorageAreaProxy::removeItem):
        (WebCore::StorageAreaProxy::clear):
        (WebCore::StorageAreaProxy::storageEvent):
        * src/StorageAreaProxy.h:
        * src/StorageNamespaceProxy.cpp:
        (WebCore::StorageNamespace::localStorageNamespace):
        (WebCore::StorageNamespace::sessionStorageNamespace):
        (WebCore::StorageNamespaceProxy::StorageNamespaceProxy):
        (WebCore::StorageNamespaceProxy::copy):
        (WebCore::StorageNamespaceProxy::storageArea):
        * src/StorageNamespaceProxy.h:
        * src/WebStorageAreaImpl.cpp:
        (WebKit::WebStorageAreaImpl::setItem):
        (WebKit::WebStorageAreaImpl::removeItem):
        (WebKit::WebStorageAreaImpl::clear):
        * src/WebStorageAreaImpl.h:

2010-01-21  Darin Fisher  <darin@chromium.org>

        Reviewed by David Levin.

        [Chromium] spurious WebViewClient::didStopLoading if changing
        location.hash while a subframe is still loading

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

        This is a refinement of http://trac.webkit.org/changeset/51548

        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::dispatchDidChangeLocationWithinPage):
        (WebKit::FrameLoaderClientImpl::postProgressStartedNotification):
        (WebKit::FrameLoaderClientImpl::postProgressFinishedNotification):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::WebViewImpl):
        (WebKit::WebViewImpl::didStartLoading):
        (WebKit::WebViewImpl::didStopLoading):
        * src/WebViewImpl.h:

2010-01-21  Adam Barth  <abarth@webkit.org>

        Unreviewed.  Added a blank line requested by the great an powerful
        fishd.

        * public/WebFrameClient.h:

2010-01-21  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        [chromium] Add allowPlugins callback to allow per-site enabling of plugins
        https://bugs.webkit.org/show_bug.cgi?id=33974

        Forward the new allowPlugins callback to WebKitClient so that it can
        make the policy decision.

        * public/WebFrameClient.h:
        (WebKit::WebFrameClient::allowPlugins):
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::allowJavaScript):
        (WebKit::FrameLoaderClientImpl::allowPlugins):
        * src/FrameLoaderClientImpl.h:

2010-01-21  James Robinson  <jamesr@chromium.org>

        Reviewed by Darin Fisher.

        Bumps the refcount when WebNode::toElement/toConstElement are called.
        https://bugs.webkit.org/show_bug.cgi?id=33977
        
        Ensures that when a wrapper around a WebNode is create via the
        toElement() or toConstElement() calls that the refcount on the WebNode
        is increased, by forcing a call to WebNode::assign().  This is needed
        so that the following code:
        {
          WebNode n = someNode();
          WebElement e = n.toElement<WebElement>();
        }
        does not decrease the overall refcount on the Node that someNode()
        returns.

        This caused crashes in the 'Save page as..' feature.

        * public/WebNode.h:
        (WebKit::WebNode::toElement):
        (WebKit::WebNode::toConstElement):

2010-01-21  Michael Nordman  <michaeln@google.com>

        Reviewed by Darin Fisher.

        Adds WebKit::WebDataSource::applicationCacheHost() to the API.
        https://bugs.webkit.org/show_bug.cgi?id=33880

        * WebKit.gyp:
        * public/WebDataSource.h:
        * src/ApplicationCacheHost.cpp:
        * src/ApplicationCacheHostInternal.h: Copied from WebKit/chromium/src/ApplicationCacheHost.cpp.
        (WebCore::ApplicationCacheHostInternal::notifyEventListener):
        (WebCore::ApplicationCacheHostInternal::toWebApplicationCacheHost):
        * src/WebDataSourceImpl.cpp:
        (WebKit::WebDataSourceImpl::applicationCacheHost):
        * src/WebDataSourceImpl.h:

2010-01-21  Eric Uhrhane  <ericu@chromium.org>

        Reviewed by Dmitry Titov.

        Add changes missing from r53595, without which Chromium has no database.

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

        No new tests - fixes database layout tests in Chromium.

        * src/WebRuntimeFeatures.cpp:
        (WebKit::WebRuntimeFeatures::enableDatabase):
        (WebKit::WebRuntimeFeatures::isDatabaseEnabled):

2010-01-21  Kenneth Russell  <kbr@google.com>

        Reviewed by Oliver Hunt.

        [Chromium] Implement texSubImage2D taking WebGLArray
        https://bugs.webkit.org/show_bug.cgi?id=33932

        * src/GraphicsContext3D.cpp:
        (WebCore::GraphicsContext3D::texSubImage2D):

2010-01-20  Vitaly Repeshko  <vitalyr@chromium.org>

        Reviewed by Pavel Feldman.

        [V8] Support SerializedScriptValue.
        https://bugs.webkit.org/show_bug.cgi?id=32920
        http://crbug.com/30620

        Updated uses of SerializedScriptValue:
        * src/PlatformMessagePortChannel.cpp:
        (WebCore::PlatformMessagePortChannel::postMessageToRemote):
        (WebCore::PlatformMessagePortChannel::tryGetMessageFromRemote):
        * src/WebWorkerBase.cpp:
        (WebKit::WebWorkerBase::postMessageToWorkerObject):
        * src/WebWorkerClientImpl.cpp:
        (WebKit::WebWorkerClientImpl::postMessageToWorkerContext):
        (WebKit::WebWorkerClientImpl::postMessageToWorkerObjectTask):
        * src/WebWorkerImpl.cpp:
        (WebKit::WebWorkerImpl::postMessageToWorkerContextTask):

2010-01-20  Shinichiro Hamaji  <hamaji@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] computePageRectsForFrame seems to be unnecessary
        https://bugs.webkit.org/show_bug.cgi?id=33881

        * src/WebFrameImpl.cpp: Stop including FrameChromium.h

2010-01-19  Jon Honeycutt  <jhoneycutt@apple.com>

        Chromium build fix.

        * public/WebAccessibilityRole.h:
        (WebKit::):
        Correct enum names.

        * src/LocalizedStrings.cpp:
        (WebCore::AXMenuListPopupActionVerb):
        Stubbed.
        (WebCore::AXMenuListActionVerb):
        Stubbed.

2010-01-19  Jon Honeycutt  <jhoneycutt@apple.com>

        Chromium build fix.

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

        * src/AssertMatchingEnums.cpp:

2010-01-18  Jonathan Dixon  <joth@chromium.org>

        Reviewed by Adam Barth.

        Add support for enabling navigator.geolocation at runtime in the V8 bindings.
        Adds the [EnabledAtRuntime] modifier to the navigator IDL.
        https://bugs.webkit.org/show_bug.cgi?id=33467

        * public/WebRuntimeFeatures.h:
        * src/WebRuntimeFeatures.cpp:
        (WebKit::WebRuntimeFeatures::enableGeolocation):
        (WebKit::WebRuntimeFeatures::isGeolocationEnabled):

2010-01-17  Kent Tamura  <tkent@chromium.org>

        Reviewed by Shinichiro Hamaji.

        [Chromium] Remove an old runFileChooser() method.
        https://bugs.webkit.org/show_bug.cgi?id=33778
        
        Chromium code switched to new runFileChooser() introduced by
        r53269. The old one is not needed anymore.

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

2010-01-15  Eric Seidel  <eric@webkit.org>

        No review, rolling out r53344.
        http://trac.webkit.org/changeset/53344
        https://bugs.webkit.org/show_bug.cgi?id=32920

        Broke the Chromium Mac builder.

        * src/PlatformMessagePortChannel.cpp:
        (WebCore::PlatformMessagePortChannel::postMessageToRemote):
        (WebCore::PlatformMessagePortChannel::tryGetMessageFromRemote):
        * src/WebWorkerBase.cpp:
        (WebKit::WebWorkerBase::postMessageToWorkerObject):
        * src/WebWorkerClientImpl.cpp:
        (WebKit::WebWorkerClientImpl::postMessageToWorkerContext):
        (WebKit::WebWorkerClientImpl::postMessageToWorkerObjectTask):
        * src/WebWorkerImpl.cpp:
        (WebKit::WebWorkerImpl::postMessageToWorkerContextTask):

2010-01-15  Vitaly Repeshko  <vitalyr@chromium.org>

        Reviewed by David Levin.

        [V8] Support SerializedScriptValue.
        https://bugs.webkit.org/show_bug.cgi?id=32920
        http://crbug.com/30620

        Updated uses of SerializedScriptValue:
        * src/PlatformMessagePortChannel.cpp:
        (WebCore::PlatformMessagePortChannel::postMessageToRemote):
        (WebCore::PlatformMessagePortChannel::tryGetMessageFromRemote):
        * src/WebWorkerBase.cpp:
        (WebKit::WebWorkerBase::postMessageToWorkerObject):
        * src/WebWorkerClientImpl.cpp:
        (WebKit::WebWorkerClientImpl::postMessageToWorkerContext):
        (WebKit::WebWorkerClientImpl::postMessageToWorkerObjectTask):
        * src/WebWorkerImpl.cpp:
        (WebKit::WebWorkerImpl::postMessageToWorkerContextTask):

2010-01-14  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Oliver Hunt.

        [Chromium] Forgot to adopt a ref counted object in StorageNamespaceProxy
        https://bugs.webkit.org/show_bug.cgi?id=33704

        * src/StorageNamespaceProxy.cpp:
        (WebCore::StorageNamespace::localStorageNamespace):
        (WebCore::StorageNamespace::sessionStorageNamespace):

2010-01-14  Marcus Bulach  <bulach@chromium.org>

        Reviewed by Dimitri Glazkov.

        Adds WebKit::WebSecurityOrigin::createFromDatabaseIdentifier.
        https://bugs.webkit.org/show_bug.cgi?id=33648

        * public/WebSecurityOrigin.h:
        * src/WebSecurityOrigin.cpp:
        (WebKit::WebSecurityOrigin::createFromDatabaseIdentifier):

2010-01-14  Brian Weinstein  <bweinstein@apple.com>

        Reviewed by Adam Roben.

        Drag and Drop source/destination code needs cleanup.
        <https://bugs.webkit.org/show_bug.cgi?id=33691>.
        
        Update to new way of calling sourceOperation.

        * src/DragClientImpl.cpp:
        (WebKit::DragClientImpl::startDrag):

2010-01-14  Nate Chapin  <japhet@chromium.org>

        Reviewed by Dimitri Glazkov.

        Remove references to V8DOMWrapper::convertToNative*().

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

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

2010-01-14  Kent Tamura  <tkent@chromium.org>

        Reviewed by Darin Fisher.

        Introduce WebFileChooserParams to convey parameters for
        WebViewClient::runFileChooser(), and add new parameters to it.
        https://bugs.webkit.org/show_bug.cgi?id=32473

        The new parameters are
         - selected file names
         - "accept" attribute value

        * WebKit.gyp: Add WebFileChooserParams.h
        * public/WebFileChooserParams.h: Added.
        * public/WebViewClient.h:
        (WebKit::WebViewClient::runFileChooser):
          Add runFileChooser() with WebFileChooserParams, and mark the old one deprecated.
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::runOpenPanel):
          Call the new runFileChooser() first, then call the old
          runFileChooser() if the new one failed.

2010-01-13  Kenneth Russell  <kbr@google.com>

        Reviewed by Oliver Hunt.

        Need to implement WebGLContextAttributes
        https://bugs.webkit.org/show_bug.cgi?id=31169

        Added the WebGLContextAttributes class and custom JavaScript
        bindings to accept a native object as the second argument to
        getContext("experimental-webgl") per the WebGL specification.
        Added GraphicsContext3D::Attributes struct to isolate DOM and
        graphics layers. Added getContextAttributes() to
        WebGLRenderingContext. Added test case ensuring that context
        attributes can be passed down and returned. Tested in Safari and
        Chromium. The attributes will be hooked up to the creation of the
        OpenGL context in bug 33416.

        * src/GraphicsContext3D.cpp:
        (WebCore::GraphicsContext3DInternal::GraphicsContext3DInternal):
        (WebCore::GraphicsContext3DInternal::getContextAttributes):
        (WebCore::GraphicsContext3D::create):
        (WebCore::GraphicsContext3D::GraphicsContext3D):
        (WebCore::GraphicsContext3D::getContextAttributes):

2010-01-13  Jon Honeycutt  <jhoneycutt@apple.com>

        MSAA: selected, selectable, extended selectable, and multiple
        selectable states are not reported

        https://bugs.webkit.org/show_bug.cgi?id=33574
        <rdar://problem/7536826>

        Reviewed by Darin Adler.

        * public/WebAccessibilityObject.h:
        Update for WebCore::AccessibilityObject function rename.

        * src/WebAccessibilityObject.cpp:
        (WebKit::WebAccessibilityObject::isMultiSelectable):
        Ditto.

2010-01-13  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Move getSessionStorageNamespace from WebKitClient to WebViewClient
        https://bugs.webkit.org/show_bug.cgi?id=33492

        * public/WebKitClient.h:
        * public/WebViewClient.h:
        (WebKit::WebViewClient::createSessionStorageNamespace):
        * src/StorageNamespaceProxy.cpp:
        (WebCore::StorageNamespace::sessionStorageNamespace):

2010-01-13  Jeremy Orlow  <jorlow@chromium.org>

        No reviewer.  More or less a build fix.  My 53180 broke some 
        stuff on the Chromium port so I'm reverting.

        * public/WebKitClient.h:
        * public/WebViewClient.h:
        * src/StorageNamespaceProxy.cpp:
        (WebCore::StorageNamespace::sessionStorageNamespace):

2010-01-11  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Move getSessionStorageNamespace from WebKitClient to WebViewClient
        https://bugs.webkit.org/show_bug.cgi?id=33492

        * public/WebKitClient.h:
        * public/WebViewClient.h:
        (WebKit::WebViewClient::getSessionStorageNamespace):
        * src/StorageNamespaceProxy.cpp:
        (WebCore::StorageNamespace::sessionStorageNamespace):

2010-01-11  Darin Fisher  <darin@chromium.org>

        Reviewed by Dimitri Glazkov.

        [Chromium] Re-work webkit_unit_tests so that WebKit is initialized only once
        https://bugs.webkit.org/show_bug.cgi?id=33504

        * WebKit.gyp:
        * tests/KURLTest.cpp:
        (ComponentCase::TEST):
        * tests/RunAllTests.cpp: Added.
        (main):
        * tests/WebKitTest.h: Removed.

2010-01-09  Adam Barth  <abarth@webkit.org>

        Reviewed by Darin Adler.

        ScriptController::isEnabled needs to be renamed
        https://bugs.webkit.org/show_bug.cgi?id=32063

        Rename ScriptController::isEnabled to
        ScriptController::canExecuteScripts.

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::bindToWindowObject):

2010-01-08  Daniel Bates  <dbates@webkit.org>

        Reviewed by Adam Barth.

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

        Cleans up style errors exposed by the patch for bug #33198.

        No functionality was changed. So, no new tests.

        * src/GraphicsContext3D.cpp:

2010-01-08  Darin Fisher  <darin@chromium.org>

        Reviewed by Dimitri Glazkov.

        [Chromium] Upstream webkit unit tests from the chromium repository
        https://bugs.webkit.org/show_bug.cgi?id=33351

        This adds one such test (for KURL) and sets up the test framework.

        Switch WebKit to build a static library on all platforms.  Add a
        webkit_unit_tests executable target that runs the unit tests and also
        ensures that we don't have any missing symbols (a function that WebKit
        as a shared library used to serve).

        Changes chromium_src_dir to ../../WebKit/chromium to match how
        WebCore.gyp defines that variable.

        * WebKit.gyp:
        * public/WebKitClient.h:
        (WebKit::WebKitClient::getPluginList): Remove bogus trailing semi-colon.
        (WebKit::WebKitClient::decrementStatsCounter): Remove bogus trailing semi-colon.
        (WebKit::WebKitClient::incrementStatsCounter): Remove bogus trailing semi-colon.
        (WebKit::WebKitClient::traceEventBegin): Remove bogus trailing semi-colon.
        (WebKit::WebKitClient::traceEventEnd): Remove bogus trailing semi-colon.
        (WebKit::WebKitClient::histogramCounts): Remove bogus trailing semi-colon.
        * tests: Added.
        * tests/KURLTest.cpp: Added.
        * tests/WebKitTest.h: Added.

2010-01-07  Mike Belshe  <mbelshe@chromium.org>

        Reviewed by Darin Adler.

        Fix Spdy casing to match style guide.

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

        * public/WebURLResponse.h:
        * src/WebURLResponse.cpp:
        (WebKit::WebURLResponse::wasFetchedViaSPDY):
        (WebKit::WebURLResponse::setWasFetchedViaSPDY):

2010-01-07  Daniel Bates  <dbates@rim.com>

        Reviewed by Eric Seidel.

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

        Added ENABLE_XHTMLMP flag. Disabled by default.

        * features.gypi:

2010-01-07  Adam Barth  <abarth@webkit.org>

        No review, rolling out r52847.
        http://trac.webkit.org/changeset/52847
        https://bugs.webkit.org/show_bug.cgi?id=33232

        Might have caused a perf regression.

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

2010-01-06  Mike Belshe  <mike@belshe.com>

        Add a flag to the ResourceResponse for tracking if a request was
        fetched via SPDY.  This is plumbed through so that we can inform
        a webpage via JavaScript if it was fecthed via the experimental
        SPDY protocol.

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

        * public/WebURLResponse.h:
        * src/WebURLResponse.cpp:
        (WebKit::WebURLResponse::wasFetchedViaSpdy):
        (WebKit::WebURLResponse::setWasFetchedViaSpdy):

2010-01-06  Darin Fisher  <darin@chromium.org>

        Fix release build bustage.

        * src/WebKit.cpp: Need to include Logging.h

2010-01-05  Darin Fisher  <darin@chromium.org>

        Reviewed by Adam Barth.

        [Chromium] Expose more APIs to eliminate WebCore usage in Chromium.
        https://bugs.webkit.org/show_bug.cgi?id=33249

        * WebKit.gyp:
        * public/WebFrame.h:
        * public/WebGlyphCache.h: Added.
        * public/WebKit.h:
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrame::instanceCount):
        (WebKit::WebFrameImpl::WebFrameImpl):
        (WebKit::WebFrameImpl::~WebFrameImpl):
        * src/WebFrameImpl.h:
        * src/WebGlyphCache.cpp: Added.
        (WebKit::WebGlyphCache::pageCount):
        * src/WebKit.cpp:
        (WebKit::enableLogChannel):

2010-01-05  Adam Barth  <abarth@webkit.org>

        Reviewed by Dimitri Glazkov.

        [v8] Move V8DOMWindowShell to ScriptController
        https://bugs.webkit.org/show_bug.cgi?id=33232

        Update FrameLoaderClientImpl.cpp to call clearForClose on
        ScriptController instead of on V8Proxy.

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

2010-01-05  Rachel Petterson  <rlp@google.com>

        Reviewed by Adam Barth.

        Matches the texImage2D and texSubImage2D functions to their
        declarations. Elminates uncessary versions of those functions.
        https://bugs.webkit.org/show_bug.cgi?id=31562
        Also bug: https://bugs.webkit.org/show_bug.cgi?id=31493

        * src/GraphicsContext3D.cpp:
        (WebCore::GraphicsContext3D::texImage2D):
        (WebCore::GraphicsContext3D::texSubImage2D):

2010-01-04  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin Fisher.

        Reorganize, document and rename OS() platform macros.
        https://bugs.webkit.org/show_bug.cgi?id=33198

        Adapt to name changes.

        * src/ChromiumBridge.cpp:
        * src/EditorClientImpl.cpp:
        (WebKit::EditorClientImpl::isSelectTrailingWhitespaceEnabled):
        (WebKit::):
        (WebKit::EditorClientImpl::handleEditingKeyboardEvent):
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::createPlugin):
        * src/GraphicsContext3D.cpp:
        (WebCore::GraphicsContext3DInternal::GraphicsContext3DInternal):
        (WebCore::GraphicsContext3DInternal::~GraphicsContext3DInternal):
        (WebCore::GraphicsContext3DInternal::makeContextCurrent):
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::selectionAsText):
        (WebKit::WebFrameImpl::printPage):
        * src/WebPluginContainerImpl.cpp:
        (WebKit::WebPluginContainerImpl::handleMouseEvent):
        (WebKit::WebPluginContainerImpl::handleKeyboardEvent):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::mouseDown):
        (WebKit::WebViewImpl::mouseContextMenu):
        (WebKit::WebViewImpl::mouseUp):
        (WebKit::WebViewImpl::keyEvent):
        (WebKit::WebViewImpl::sendContextMenuEvent):
        (WebKit::WebViewImpl::setScrollbarColors):
        (WebKit::WebViewImpl::navigationPolicyFromMouseEvent):

2010-01-04  Darin Fisher  <darin@chromium.org>

        Reviewed by Eric Seidel.

        [Chromium] Expose more DOM methods to support LayoutTests
        https://bugs.webkit.org/show_bug.cgi?id=33185

        * public/WebDocument.h: Adds documentElement method.
        * public/WebElement.h: Adds innerText method.
        * public/WebFrame.h: Adds renderTreeAsText and counterValueForElementById
        methods, and fixes a few whitespace issues.
        * src/WebDocument.cpp:
        (WebKit::WebDocument::documentElement):
        * src/WebElement.cpp:
        (WebKit::WebElement::innerText):
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::clearName):
        (WebKit::WebFrameImpl::renderTreeAsText):
        (WebKit::WebFrameImpl::counterValueForElementById):
        * src/WebFrameImpl.h:

2010-01-04  Darin Fisher  <darin@chromium.org>

        Fix Chromium build bustage.

        * src/WebAnimationControllerImpl.h:

2010-01-04  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Darin Fisher.

        Adding WebAnimationController to chromium's WebKit API.

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

        * WebKit.gyp:
        * public/WebAnimationController.h: Added.
        (WebKit::WebAnimationController::~WebAnimationController):
        * public/WebFrame.h:
        * src/WebAnimationControllerImpl.cpp: Added.
        (WebKit::WebAnimationControllerImpl::WebAnimationControllerImpl):
        (WebKit::WebAnimationControllerImpl::pauseAnimationAtTime):
        (WebKit::WebAnimationControllerImpl::pauseTransitionAtTime):
        (WebKit::WebAnimationControllerImpl::numberOfActiveAnimations):
        * src/WebAnimationControllerImpl.h: Added.
        (WebKit::WebAnimationControllerImpl::~WebAnimationControllerImpl):
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::animationController):
        (WebKit::WebFrameImpl::WebFrameImpl):
        * src/WebFrameImpl.h:

2010-01-04  Jay Campan  <jcampan@google.com>

        Reviewed by Darin Fisher

        Adding  more DOM API methods. They are needed for the upcoming
        translate feature.

        * public/WebElement.h:
        * public/WebNode.h:
        * src/WebElement.cpp:
        (WebKit::WebElement::tagName):
        (WebKit::WebElement::setAttribute):
        * src/WebNode.cpp:
        (WebKit::WebNode::setNodeValue):

2010-01-03  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        [Chromium] Implement CookieJarChromium::cookiesEnabled
        https://bugs.webkit.org/show_bug.cgi?id=33123

        Call out to the webKitClient() to see if cookies are enabled.  Also
        remove some straggling references to policyURL!

        * public/WebKitClient.h:
        (WebKit::WebKitClient::setCookies):
        (WebKit::WebKitClient::cookies):
        (WebKit::WebKitClient::rawCookies):
        (WebKit::WebKitClient::cookiesEnabled):
        * src/ChromiumBridge.cpp:
        (WebCore::ChromiumBridge::cookiesEnabled):

2010-01-03  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        [Chromium] Remove evaluateInNewContext (it's useless)
        https://bugs.webkit.org/show_bug.cgi?id=33068

        This function has no clients and makes life complicated.  Isolated
        worlds won out over NewContext and there's not really any going back
        now.

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

2009-12-30  Darin Fisher  <darin@chromium.org>

        Reviewed by David Levin.

        [Chromium] Delete ResourceRequest::securityInfo
        https://bugs.webkit.org/show_bug.cgi?id=26847

        * src/WebWorkerBase.cpp:
        (WebKit::WebWorkerBase::initializeLoader):

2009-12-30  Albert J. Wong  <ajwong@chromium.org>

        Not reviewed.  Trivial Chromium build fix.

        Add static_cast<unsigned>() to fix signed/unsigned comparison warning.

        * src/AutocompletePopupMenuClient.cpp:
        (WebKit::AutocompletePopupMenuClient::selectionChanged):

2009-12-30  Zelidrag Hornung  <zelidrag@chromium.org>

        Reviewed by Dimitri Glazkov.

        Autocomplete in Chromium now offers suggestions within the input element as a user
        a) types text that produces some autocomplete suggestions, and
        b) scrolls through suggested values in the menu
        The suggested value is rendered but not exposed through JS unti the
        user makes the final selection.

        No new tests since this new functionality (autocomplete suggestions)
        is intentionally hidden from everything else than renderer.

        * src/AutocompletePopupMenuClient.cpp:
        (WebKit::AutocompletePopupMenuClient::initialize):
        (WebKit::AutocompletePopupMenuClient::setInitialAutocompleteValue):
        (WebKit::AutocompletePopupMenuClient::selectionChanged):
        (WebKit::AutocompletePopupMenuClient::popupDidHide):
        (WebKit::AutocompletePopupMenuClient::setTextFromItem):
        (WebKit::AutocompletePopupMenuClient::resetLastFieldValue):
        * src/AutocompletePopupMenuClient.h:

2009-12-28  Kinuko Yasuda  <kinuko@chromium.org>

        Reviewed by Maciej Stachowiak.

        Fixed isKeypadEvent behavior for chromium/Mac to correctly report
        keyLocation as DOM_KEY_LOCATION_NUMPAD for numeric pad key events.
        https://bugs.webkit.org/show_bug.cgi?id=28247

        Test: fast/events/keydown-numpad-keys.html

        * src/mac/WebInputEventFactory.mm:
        (WebKit::isKeypadEvent):

2009-12-22  Kenneth Russell  <kbr@google.com>

        Reviewed by Eric Seidel.

        [Chromium] Garbage in transparent regions of images uploaded as textures
        https://bugs.webkit.org/show_bug.cgi?id=32888

        Test: fast/canvas/webgl/bug-32888.html (works in Safari / DumpRenderTree)

        * src/GraphicsContext3D.cpp:
        (WebCore::GraphicsContext3D::texImage2D):

2009-12-22  Adam Langley  <agl@google.com>

        Build fix: not reviewed.

        r52504 (https://bugs.webkit.org/show_bug.cgi?id=32845) broke the
        Chromium build on Windows and Mac due to a misplaced #endif. The
        buildbot didn't find the problem because it runs on Linux.

        Have verified this patch with the author of the above.

        * src/GraphicsContext3D.cpp:

2009-12-22  Kenneth Russell  <kbr@google.com>

        Reviewed by Eric Seidel.

        [Chromium] WebGL crashes intermittently on Linux
        https://bugs.webkit.org/show_bug.cgi?id=32845
        
        The dlclose'ing of libGL.so.1 and dlopen'ing of it each time a
        GraphicsContext3D was created was occasionally causing it to be
        re-mapped at a different base address. Since GLEW is not
        re-initialized every time, primarily for performance reasons, its
        cached function pointers were pointing to garbage. Stopped closing
        and re-opening libGL.so.1 each time; now it is loaded lazily, when
        the first 3D context is created. Also reused the X display
        connection since the GLX routines' correctness might hinge upon it
        not resulting in a change of GL implementation.

        * src/GraphicsContext3D.cpp:
        (WebCore::GraphicsContext3DInternal::GLConnection::chooseFBConfig):
        (WebCore::GraphicsContext3DInternal::GLConnection::createNewContext):
        (WebCore::GraphicsContext3DInternal::GLConnection::createPbuffer):
        (WebCore::GraphicsContext3DInternal::GLConnection::destroyPbuffer):
        (WebCore::GraphicsContext3DInternal::GLConnection::makeCurrent):
        (WebCore::GraphicsContext3DInternal::GLConnection::destroyContext):
        (WebCore::GraphicsContext3DInternal::GLConnection::getCurrentContext):
        (WebCore::GraphicsContext3DInternal::GLConnection::GLConnection):
        (WebCore::GraphicsContext3DInternal::GLConnection::tryLoad):
        (WebCore::GraphicsContext3DInternal::GLConnection::create):
        (WebCore::GraphicsContext3DInternal::GLConnection::~GLConnection):
        (WebCore::GraphicsContext3DInternal::GraphicsContext3DInternal):
        (WebCore::GraphicsContext3DInternal::~GraphicsContext3DInternal):
        (WebCore::GraphicsContext3DInternal::makeContextCurrent):

2009-12-22  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Darin Fisher.

        autoComplete and getElementById methods for WebKit API

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

        * public/WebDocument.h:
        * public/WebInputElement.h:
        * src/WebDocument.cpp:
        (WebKit::WebDocument::getElementById):
        * src/WebInputElement.cpp:
        (WebKit::WebInputElement::autoComplete):

2009-12-18  Kenneth Russell  <kbr@google.com>

        Reviewed by Darin Fisher.

        [Chromium] Eliminate redundant data copy in GraphicsContext3D readback
        https://bugs.webkit.org/show_bug.cgi?id=32763

        Eliminated useless creation of a CGBitmapContext and from there a
        CGImage. Now create CGImage directly from data. Also changed
        readPixels parameters and CGImage alpha info to try to avoid byte
        swapping, and disabled interpolation when drawing the GL content.
        Some test cases run twice as fast with these changes, though more
        work is needed to achieve desired performance.

        No test case; performance optimization only. Ran WebGL demos from
        Khronos site to verify changes.

        * src/GraphicsContext3D.cpp:
        (WebCore::GraphicsContext3DInternal::GraphicsContext3DInternal):
        (WebCore::GraphicsContext3DInternal::~GraphicsContext3DInternal):
        (WebCore::GraphicsContext3DInternal::reshape):
        (WebCore::GraphicsContext3DInternal::beginPaint):

2009-12-18  Peter Kasting  <pkasting@google.com>

        Reviewed by Adam Barth.

        Chromium build fix
        https://bugs.webkit.org/show_bug.cgi?id=32756

        * public/WebAccessibilityRole.h:
        (WebKit::):
        * src/AssertMatchingEnums.cpp:

2009-12-18  Adam Roben  <aroben@apple.com>

        Chromium build fix

        * src/ChromiumBridge.cpp:
        * src/WebPluginContainerImpl.cpp:
        * src/WebViewImpl.cpp:
        Added #includes.

2009-12-17  Eric Seidel  <eric@webkit.org>

        No review, rolling out r52291.
        http://trac.webkit.org/changeset/52291
        https://bugs.webkit.org/show_bug.cgi?id=32618

        Darin Fisher points out that this will likely break
        the SSL security indicator in Chromium.  Rolling out for now.

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

2009-12-17  Alexander Pavlov  <apavlov@chromium.org>

        Reviewed by Eric Seidel.

        Disable memory cache client calls so that a new identifier isn't created
        for the same resource on reload.

        With the calls enabled, duplicate entries for cached resources are created
        in the Web Inspector. Safari for Windows disables the calls near the point of the
        Frame instance creation, and we just follow this for Chromium.
        https://bugs.webkit.org/show_bug.cgi?id=32618

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

2009-12-17  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Darin Fisher.

        Added WebPageSerializer to WebKit API and enriched the WebNode hierarchy to support
        downstream unit-testing of serialization.

        WebPageSerializer was adapted from Chromium's dom_serializer, originally authored by Johnny Ding.

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

        * WebKit.gyp:
        * public/WebDocument.h: Added.
        (WebKit::WebDocument::WebDocument):
        (WebKit::WebDocument::operator=):
        (WebKit::WebDocument::assign):
        * public/WebElement.h:
        * public/WebFormElement.h:
        (WebKit::WebFormElement::operator=):
        * public/WebFrame.h:
        * public/WebNode.h:
        (WebKit::WebNode::):
        (WebKit::WebNode::toConstElement):
        * public/WebNodeCollection.h: Added.
        (WebKit::WebNodeCollection::~WebNodeCollection):
        (WebKit::WebNodeCollection::WebNodeCollection):
        (WebKit::WebNodeCollection::operator=):
        * public/WebNodeList.h: Added.
        (WebKit::WebNodeList::~WebNodeList):
        (WebKit::WebNodeList::WebNodeList):
        (WebKit::WebNodeList::operator=):
        * public/WebPageSerializer.h: Added.
        * public/WebPageSerializerClient.h: Added.
        (WebKit::WebPageSerializerClient::):
        (WebKit::WebPageSerializerClient::WebPageSerializerClient):
        (WebKit::WebPageSerializerClient::~WebPageSerializerClient):
        * public/WebString.h:
        * public/WebView.h:
        * src/AssertMatchingEnums.cpp:
        * src/DOMUtilitiesPrivate.cpp:
        (WebKit::elementHasLegalLinkAttribute):
        * src/DOMUtilitiesPrivate.h:
        * src/WebDocument.cpp: Added.
        (WebKit::WebDocument::WebDocument):
        (WebKit::WebDocument::operator=):
        (WebKit::WebDocument::operator WTF::PassRefPtr<Document>):
        (WebKit::WebDocument::frame):
        (WebKit::WebDocument::isHTMLDocument):
        (WebKit::WebDocument::baseURL):
        (WebKit::WebDocument::body):
        (WebKit::WebDocument::head):
        (WebKit::WebDocument::all):
        (WebKit::WebDocument::completeURL):
        * src/WebElement.cpp:
        (WebKit::WebElement::hasTagName):
        (WebKit::WebElement::hasAttribute):
        (WebKit::WebElement::getAttribute):
        * src/WebEntities.cpp: Added.
        (WebKit::populateMap):
        (WebKit::):
        (WebKit::WebEntities::WebEntities):
        (WebKit::WebEntities::entityNameByCode):
        (WebKit::WebEntities::convertEntitiesInString):
        * src/WebEntities.h: Added.
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrame::fromFrameOwnerElement):
        (WebKit::WebFrameImpl::encoding):
        (WebKit::WebFrameImpl::document):
        (WebKit::WebFrameImpl::fromFrameOwnerElement):
        * src/WebFrameImpl.h:
        * src/WebNode.cpp:
        (WebKit::WebNode::nodeType):
        (WebKit::WebNode::nodeValue):
        (WebKit::WebNode::document):
        (WebKit::WebNode::firstChild):
        (WebKit::WebNode::lastChild):
        (WebKit::WebNode::previousSibling):
        (WebKit::WebNode::nextSibling):
        (WebKit::WebNode::hasChildNodes):
        (WebKit::WebNode::childNodes):
        (WebKit::WebNode::createMarkup):
        (WebKit::WebNode::isTextNode):
        (WebKit::WebNode::isElementNode):
        * src/WebNodeCollection.cpp: Added.
        (WebKit::WebNodeCollection::reset):
        (WebKit::WebNodeCollection::assign):
        (WebKit::WebNodeCollection::WebNodeCollection):
        (WebKit::WebNodeCollection::length):
        (WebKit::WebNodeCollection::nextItem):
        (WebKit::WebNodeCollection::firstItem):
        * src/WebNodeList.cpp: Added.
        (WebKit::WebNodeList::reset):
        (WebKit::WebNodeList::assign):
        (WebKit::WebNodeList::WebNodeList):
        (WebKit::WebNodeList::length):
        (WebKit::WebNodeList::item):
        * src/WebPageSerializer.cpp: Added.
        (WebKit::WebPageSerializer::serialize):
        (WebKit::WebPageSerializer::generateMetaCharsetDeclaration):
        (WebKit::WebPageSerializer::generateMarkOfTheWebDeclaration):
        (WebKit::WebPageSerializer::generateBaseTagDeclaration):
        * src/WebPageSerializerImpl.cpp: Added.
        (WebKit::WebPageSerializerImpl::SerializeDomParam::SerializeDomParam):
        (WebKit::WebPageSerializerImpl::preActionBeforeSerializeOpenTag):
        (WebKit::WebPageSerializerImpl::postActionAfterSerializeOpenTag):
        (WebKit::WebPageSerializerImpl::preActionBeforeSerializeEndTag):
        (WebKit::WebPageSerializerImpl::postActionAfterSerializeEndTag):
        (WebKit::WebPageSerializerImpl::saveHTMLContentToBuffer):
        (WebKit::WebPageSerializerImpl::openTagToString):
        (WebKit::WebPageSerializerImpl::endTagToString):
        (WebKit::WebPageSerializerImpl::buildContentForNode):
        (WebKit::WebPageSerializerImpl::WebPageSerializerImpl):
        (WebKit::WebPageSerializerImpl::collectTargetFrames):
        (WebKit::WebPageSerializerImpl::serialize):
        * src/WebPageSerializerImpl.h: Added.
        * src/WebString.cpp:
        (WebKit::WebString::WebString):
        (WebKit::WebString::operator=):
        * src/WebViewImpl.cpp:

2009-12-17  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by David Levin.

        Provide explicit implementation of 'non-template' WebVector<T>::operator=

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

        * public/WebVector.h:

2009-12-16  Fumitoshi Ukai  <ukai@chromium.org>

        Unreviewed, build fix.

        [Chromium] Add EditableTextRole to catch up with
        http://trac.webkit.org/changeset/52233

        * public/WebAccessibilityRole.h:
        (WebKit::): Added WebAccessibilityRoleEditableText
        * src/AssertMatchingEnums.cpp: Added matching compile assert.

2009-12-15  Kenneth Russell  <kbr@google.com>

        Reviewed by Darin Fisher.

        Don't allow default framebuffer to be mutated
        https://bugs.webkit.org/show_bug.cgi?id=32391

        * src/GraphicsContext3D.cpp:
        (WebCore::GraphicsContext3DInternal::GraphicsContext3DInternal):
        (WebCore::GraphicsContext3DInternal::reshape):
        (WebCore::GraphicsContext3DInternal::beginPaint):
        (WebCore::GraphicsContext3DInternal::bindFramebuffer):
        (WebCore::GraphicsContext3D::bindFramebuffer):

2009-12-15  Dimitri Glazkov  <dglazkov@chromium.org>

        Unreviewed, build fix.

        [Chromium] Add TreeGridRole to catch up with
        http://trac.webkit.org/changeset/52159.

        * public/WebAccessibilityRole.h:
        (WebKit::): Added WebAccessibilityRoleTreeGrid.
        * src/AssertMatchingEnums.cpp: Added matching compile assert.

2009-12-15  Jian Li  <jianli@chromium.org>

        Reviewed by Dmitry Titov.

        Bug 31090 - [Chromium] Add DownloadURL format to Chromium clipboard.
        https://bugs.webkit.org/show_bug.cgi?id=31090

        The proposal to whatwg can be found here:
        http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2009-August/022118.html

        * public/WebDragData.h:
        * src/WebDragData.cpp:
        (WebKit::WebDragData::downloadURL):
        (WebKit::WebDragData::setDownloadURL):

2009-12-14  Evan Stade  <estade@chromium.org>

        Reviewed by Darin Fisher.

        https://bugs.webkit.org/show_bug.cgi?id=32347
        Chromium: Context menu launched by menu key has funky behavior

        Make the context menu's position depend on the selection only when an
        editable field has focus. Also, don't send multiple context menu events
        for a single keypress.

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

2009-12-13  Sam Weinig  <sam@webkit.org>

        Reviewed by Dan Bernstein.

        Fix for https://bugs.webkit.org/show_bug.cgi?id=32499
        Add client based Geolocation provider

        Add first cut of a client based Geolocation provider. This is guarded by
        ENABLE(CLIENT_BASED_GEOLOCATION) and is off by default for now. This adds a
        GeolocationControllerClient interface that no-one currently implements,
        but will in a subsequent patch.

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

2009-12-13  Charles Reis  <creis@chromium.org>

        Reviewed by Adam Barth.

        Refactor some security code out of V8 bindings
        https://bugs.webkit.org/show_bug.cgi?id=32326

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

2009-12-11  Nate Chapin  <japhet@chromium.org>

        Reviewed by Darin Fisher.

        Expose shouldHideReferrer() in WebSecurityPolicy.

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

        * public/WebSecurityPolicy.h: Add shouldHideReferrer().
        * src/WebSecurityPolicy.cpp:
        (WebKit:: WebSecurityPolicy::shouldHideReferrer): Added.

2009-12-11  Avi Drissman  <avi@chromium.org>

        Reviewed by Darin Fisher.

        Tickmarks in the scrollbar are not cleared for non-main frames
        https://bugs.webkit.org/show_bug.cgi?id=32385

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::stopFinding):

2009-12-11  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Remove obsolete message handling methods from WebDevTools* interfaces

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

        * public/WebDevToolsAgent.h:
        * public/WebDevToolsAgentClient.h:
        * public/WebDevToolsFrontend.h:
        * public/WebDevToolsFrontendClient.h:

2009-12-10  Mike Belshe  <mike@belshe.com>

        Unreviewed, build fix for chromium.

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

2009-12-10  Kenneth Russell  <kbr@google.com>

        Reviewed by Oliver Hunt.

        Changed WebGLRenderingContext to synthesize GL errors rather than
        raising JavaScript exceptions. Removed internal getError() calls
        after each graphics call. The GraphicsContext3D maintains the
        synthetic exceptions because only it has complete information
        about certain conditions requiring them to be raised.

        Based on idea from Ilmari Heikkinen, added create3DDebugContext()
        to webgl-test.js and changed the WebGL layout tests expecting
        error conditions to use it. Updated expected.txt files, which now
        implicitly test the OpenGL error as it is part of the exception's
        message.

        Added new targeted test covering aspects of synthetic errors as
        well as regression tests for bugs uncovered during its development.

        Test: fast/canvas/webgl/error-reporting.html

        * src/GraphicsContext3D.cpp:
        (WebCore::GraphicsContext3DInternal::reshape):
        (WebCore::GraphicsContext3DInternal::getError):
        (WebCore::GraphicsContext3DInternal::synthesizeGLError):
        (WebCore::GraphicsContext3D::getActiveAttrib):
        (WebCore::GraphicsContext3D::getActiveUniform):
        (WebCore::GraphicsContext3D::getError):
        (WebCore::GraphicsContext3D::synthesizeGLError):

2009-12-10  Mike Belshe  <mike@belshe.com>

        Reviewed by Darin Fisher.

        Fix FrameLoader to use the new ResourceTypes properly.

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

        * public/WebURLRequest.h:
        (WebKit::WebURLRequest::):
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::setTargetTypeFromLoader):
        (WebKit::FrameLoaderClientImpl::dispatchWillSendRequest):

2009-12-10  Ilya Tikhonovsky <loislo@google.com>

        Reviewed by Pavel Feldman.

        Chromium: Expose devtools agent API for inspector layout tests.

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

        * public/WebDevToolsAgent.h:
        (WebKit::WebDevToolsAgent::setTimelineProfilingEnabled):
        (WebKit::WebDevToolsAgent::evaluateInWebInspector):

2009-12-09  Yury Semikhatsky  <yurys@chromium.org>

        Unreviewed, build fix.

        Change forward declaration of WebContextMenuData from class to
        struct to match its definition. The bug was introduced by
        http://trac.webkit.org/changeset/51874

        * src/ContextMenuClientImpl.h:

2009-12-09  Darin Fisher  <darin@chromium.org>

        Reviewed by Eric Seidel.

        https://bugs.webkit.org/show_bug.cgi?id=32324
        [Chromium] Suppress WebFrameClient callbacks from a detached frame.

        This change means that we no longer need the ClientHandle class.
        FrameLoaderClient::detachedFromParent3() is called on each frame
        in the frame tree from within frameDetached().

        Test: http/tests/loading/gmail-assert-on-load.html

        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::detachedFromParent3):
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::create):
        (WebKit::WebFrameImpl::WebFrameImpl):
        (WebKit::WebFrameImpl::createChildFrame):
        * src/WebFrameImpl.h:
        (WebKit::WebFrameImpl::client):
        (WebKit::WebFrameImpl::dropClient):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::close):

2009-12-08  Stuart Morgan  <stuartmorgan@chromium.org>

        Reviewed by Darin Fisher.

        Include clickCount when doing MouseEvent -> WebMouseEvent conversion
        in Chromium API.

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

        * src/WebInputEventConversion.cpp:
        (WebKit::WebMouseEventBuilder::WebMouseEventBuilder):

2009-12-09  Yury Semikhatsky  <yurys@chromium.org>

        Unreviewed, build fix.

        Add return statement to default implementation of hostIdentifier method
        introduced in http://trac.webkit.org/changeset/51897

        * public/WebDevToolsAgentClient.h:
        (WebKit::WebDevToolsAgentClient::hostIdentifier):

2009-12-09  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Add declaration of static methods that allow to dispatch
        DevTools messages on the IO thread and accept WebDevToolsMessageData
        argument.

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

        * public/WebDevToolsAgent.h:
        * public/WebDevToolsAgentClient.h:

2009-12-09  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Introduce a class for devtools message data

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

        * WebKit.gyp:
        * public/WebDevToolsAgent.h:
        * public/WebDevToolsAgentClient.h:
        (WebKit::WebDevToolsAgentClient::sendMessageToFrontend):
        (WebKit::WebDevToolsAgentClient::forceRepaint):
        (WebKit::WebDevToolsAgentClient::hostIdentifier):
        (WebKit::WebDevToolsAgentClient::runtimeFeatureStateChanged):
        * public/WebDevToolsFrontend.h:
        * public/WebDevToolsFrontendClient.h:
        (WebKit::WebDevToolsFrontendClient::sendMessageToAgent):
        * public/WebDevToolsMessageData.h: Added.

2009-12-08  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Darin Fisher.

        Chromium: support custom WebCore context menu items in Chromium port.

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

        * public/WebContextMenuData.h:
        * public/WebPopupMenuInfo.h:
        (WebKit::WebPopupMenuInfo::Item::):
        * public/WebView.h:
        * src/ContextMenuClientImpl.cpp:
        (WebKit::ContextMenuClientImpl::getCustomMenuFromDefaultItems):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::executeCustomContextMenuAction):
        * src/WebViewImpl.h:

2009-12-08  Albert J. Wong  <ajwong@chromium.org>

        Not reviewed: Chromium build fix.

        r51859 changed the case for some of the ResourceRequest::TargetType
        enums.

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

2009-12-07  Zhe Su  <suzhe@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] accesskey is not supported on Chromium Mac.
        https://bugs.webkit.org/show_bug.cgi?id=32213

        This change fixes (partially) the accesskey issue by decoupling the
        code for handling accesskeys and system keys. Because on Mac,
        the modifiers of accesskeys are ctrl+alt, which are not marked as
        system keys.
        In order to fully fix this issue, some changes in Chromium code is
        also required.

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

2009-12-07  Evan Martin  <evan@chromium.org>

        Reviewed by Eric Seidel.

        Chromium: theme scrollbars to match GTK theme.
        Add API to set the colors.

        Since the change is to the Chromium WebKit API layer, testing will
        be in Chromium's test shell.
        http://bugs.webkit.org/show_bug.cgi?id=32048

        Patch from Markus Gutschke <markus@chromium.org>.

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

2009-12-07  Finnur Thorarinsson  <finnur.webkit@gmail.com>

        Reviewed by Darin Fisher.

        A patch for Chromium to restrict the scope of the Gmail focus fix,
        where we set the Selection to 0,0 for content-editable fields and
        also make sure we set the selection end-state for find to select the
        text found (when not focusing a link we found).
        WebKit bug: https://bugs.webkit.org/show_bug.cgi?id=32248

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::setFindEndstateFocusAndSelection):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::setFocus):

2009-12-07  Dmitry Titov  <dimich@chromium.org>

        Rubber-stamped by Darin Adler.

        Remove ENABLE_SHARED_SCRIPT flags
        https://bugs.webkit.org/show_bug.cgi?id=32245
        This patch was obtained by "git revert" command and then un-reverting of ChangeLog files.

        * features.gypi:

2009-12-07  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Darin Fisher.

        fixes to build-webkit --chromium
        https://bugs.webkit.org/show_bug.cgi?id=32179

        * DEPS:
        * WebKit.gyp:
        * gyp_webkit:

2009-12-07  Mikhail Naganov  <mnaganov@chromium.org>

        Reviewed by Pavel Feldman.

        [Chromium] Add declarations for DevTools message dispatching on IO thread
        (see http://codereview.chromium.org/460018)

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

        * public/WebDevToolsAgent.h:
        * public/WebDevToolsAgentClient.h:

2009-12-04  James Hawkins  <jhawkins@chromium.org>

        Reviewed by Darin Fisher.

        https://bugs.webkit.org/show_bug.cgi?id=32095
        Implement WebRegularExpression, a WebKit API for accessing
        WebCore::RegularExpression.

        * WebKit.gyp:
        * public/WebRegularExpression.h: Added.
        * public/WebTextCaseSensitivity.h: Added.
        (WebKit::):
        * src/AssertMatchingEnums.cpp:
        * src/WebRegularExpression.cpp: Added.
        (WebKit::WebRegularExpression::WebRegularExpression):
        (WebKit::WebRegularExpression::~WebRegularExpression):
        (WebKit::WebRegularExpression::match):

2009-12-04  Peter Kasting  <pkasting@google.com>

        Reviewed by Darin Fisher.

        [Chromium] Simplify zoom-related APIs and add a zoom level getter,
        part two: Remove deprecated APIs.
        https://bugs.webkit.org/show_bug.cgi?id=31893

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

2009-12-03  Jonathan Dixon  <joth@chromium.org>

        Reviewed by Dimitri Glazkov.

        Bug 32066 - Add enable geolocation flag to WebCore::Settings for Chromium
        https://bugs.webkit.org/show_bug.cgi?id=32066

        Add the plumbing to map WebSettings through to WebCore::Settings

        * features.gypi:
        * public/WebSettings.h: Add setGeolocationEnabled API to interface
        * src/WebSettingsImpl.cpp:
        (WebKit::WebSettingsImpl::setGeolocationEnabled): Calls through to WebCore::Settings::setGeolocationEnabled
        * src/WebSettingsImpl.h: Add setGeolocationEnabled interface function

2009-12-03  Brady Eidson  <beidson@apple.com>

        Reviewed by Sam Weinig.

        <rdar://problem/7214236> and http://webkit.org/b/32052 - Implement HTML5 state object history API

        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::dispatchDidPushStateWithinPage):
        (WebKit::FrameLoaderClientImpl::dispatchDidReplaceStateWithinPage):
        (WebKit::FrameLoaderClientImpl::dispatchDidPopStateWithinPage):
        * src/FrameLoaderClientImpl.h:

2009-12-03  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Timothy Hatcher.

        Chromium: Add support for settings containing ":"

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

        * src/InspectorClientImpl.cpp:
        (WebKit::InspectorClientImpl::loadSettings):

2009-12-03  Pavel Feldman  <pfeldman@dhcp-172-28-174-220.spb.corp.google.com>

        Reviewed by Timothy Hatcher.

        Web Inspector: Simplify the settings support in inspector controller.

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

        * src/InspectorClientImpl.cpp:
        (WebKit::InspectorClientImpl::hiddenPanels):
        (WebKit::InspectorClientImpl::populateSetting):
        (WebKit::InspectorClientImpl::storeSetting):
        (WebKit::InspectorClientImpl::loadSettings):
        (WebKit::InspectorClientImpl::saveSettings):
        * src/InspectorClientImpl.h:

2009-12-03  Ben Murdoch  <benm@google.com>

        Reviewed by Brady Eidson.

        [Android] The FrameLoaderClient is unaware of BackForwardList changes.
        https://bugs.webkit.org/show_bug.cgi?id=31914

        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::dispatchDidAddBackForwardItem): Add an empty implementation. Method added to FrameLoaderClient by Android (see bug).
        (WebKit::FrameLoaderClientImpl::dispatchDidRemoveBackForwardItem): ditto.
        (WebKit::FrameLoaderClientImpl::dispatchDidChangeBackForwardIndex): dito.
        * src/FrameLoaderClientImpl.h:

2009-12-02  Yusuke Sato  <yusukes@chromium.org>

        Reviewed by Eric Seidel.

        Sanitize web fonts using the OTS library 
        https://bugs.webkit.org/show_bug.cgi?id=31106

        * DEPS: Added dependency to the OpenType sanitizer library.
        * features.gypi: Added ENABLE_OPENTYPE_SANITIZER=1.

2009-12-02  Evan Stade  <estade@chromium.org>

        Reviewed by Darin Fisher.

        https://bugs.webkit.org/show_bug.cgi?id=32029
        Mousewheel event delta has reversed sign on Linux Chrome.

        No new tests (layout tests don't cover event conversion code).
        Manual test: http://www.switchonthecode.com/tutorials/javascript-tutorial-the-scroll-wheel

        * src/gtk/WebInputEventFactory.cpp:
        (WebKit::WebInputEventFactory::mouseWheelEvent):

2009-12-02  Anton Muhin  <antonm@chromium.org>

        Reviewed by Adam Barth.

        Allow to skip thread checks when accessing DOMDataStore for processes
        which run V8 in single thread mode.
        https://bugs.webkit.org/show_bug.cgi?id=31877

        * src/WebScriptController.cpp:
        (WebKit::WebScriptController::enableV8SingleThreadMode):

2009-12-01  Peter Kasting  <pkasting@google.com>

        Reviewed by Darin Fisher.

        [Chromium] Simplify zoom-related APIs and add a zoom level getter,
        part one: Add new APIs.  (Old APIs will be removed in a second pass.)
        https://bugs.webkit.org/show_bug.cgi?id=31893

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

2009-12-01  Xiyuan Xia  <xiyuan@chromium.org>

        Reviewed by Darin Fisher.

        Only fire start/stop events when main frame is not loading.

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

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

2009-11-27  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Add separate method for pause command to WebDevToolsAgent
        and WebDevToolsFrontendClient interfaces so that pause command
        can be processed on the IO thread.

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

        * public/WebDevToolsAgent.h:
        * public/WebDevToolsFrontendClient.h:
        (WebKit::WebDevToolsFrontendClient::sendDebuggerCommandToAgent):
        (WebKit::WebDevToolsFrontendClient::sendDebuggerPauseScript):
        (WebKit::WebDevToolsFrontendClient::activateWindow):
        (WebKit::WebDevToolsFrontendClient::closeWindow):
        (WebKit::WebDevToolsFrontendClient::dockWindow):
        (WebKit::WebDevToolsFrontendClient::undockWindow):

2009-11-27  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        WebCore part of the fix that allows to view plugin
        resources loaded by plugins. Methods that for resource
        loading notifications are exposed through WebDevToolsAgent
        interface to the glue code to allow Chromium's plugin
        implementation to notify InspectorController about resource
        loading in plugins.

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

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

2009-11-26  Yury Semikhatsky  <yurys@chromium.org>

        Not reviewed. Build fix: revert r51421.

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

2009-11-25  Dimitri Glazkov  <dglazkov@chromium.org>

        Reviewed by David Levin.

        [Chromium] Implement canSetValueAttribute in the API.
        https://bugs.webkit.org/show_bug.cgi?id=31894

        * public/WebAccessibilityObject.h: Added decl.
        * src/WebAccessibilityCacheImpl.h: Cleaned up mis-include.
        * src/WebAccessibilityObject.cpp:
        (WebKit::WebAccessibilityObject::canSetValueAttribute): Added impl.

2009-11-25  Dimitri Glazkov  <dglazkov@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Plumb setNeedsSiteSpecificQuirks throught WebKit API.
        https://bugs.webkit.org/show_bug.cgi?id=31878

        * public/WebSettings.h: Added decl.
        * src/WebSettingsImpl.cpp:
        (WebKit::WebSettingsImpl::setNeedsSiteSpecificQuirks): Added impl.
        * src/WebSettingsImpl.h:

2009-11-24  Dmitry Titov  <dimich@chromium.org>

        Reviewed by Eric Seidel.

        Add ENABLE_SHARED_SCRIPT feature define and flag for build-webkit
        https://bugs.webkit.org/show_bug.cgi?id=31444

        * features.gypi:

2009-11-24  Evan Stade  <estade@chromium.org>

        Reviewed by David Levin.

        Linux Chromium sends too many click events
        https://bugs.webkit.org/show_bug.cgi?id=31841

        Manually count number of clicks for double/triple click events. This
        makes us match Firefox on http://www.quirksmode.org/js/events_mouse.html
        Chromium side of this patch is here:
        http://codereview.chromium.org/431031/show

        * src/gtk/WebInputEventFactory.cpp:
        (WebKit::WebInputEventFactory::mouseEvent):

2009-11-24  Darin Fisher  <darin@chromium.org>

        Reviewed by Adam Barth.

        [Chromium] Renderer hang when using www.expedia.com
        https://bugs.webkit.org/show_bug.cgi?id=31822

        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::dispatchWillSendRequest):
        Assign ReturnCacheDataDontLoad cache policy at the last moment
        to match Safari.  This way the cache policy does not get stored
        in DocumentLoader's originalRequest preventing it from being
        inherited by subresource requests.
        * src/ResourceHandle.cpp:
        (WebCore::ResourceHandle::willLoadFromCache): Remove assignment
        of ReturnCacheDataDontLoad cache policy so that it doesn't end
        up applying to the DocumentLoader's originalRequest.

2009-11-23  Kenneth Russell  <kbr@google.com>

        Reviewed by Oliver Hunt.

        Change get... calls to latest spec
        https://bugs.webkit.org/show_bug.cgi?id=30091

        Removed old versions of get calls on WebGLRenderingContext and
        added new ones per spec returning "any". New code simplifies
        GraphicsContext3D and fixes previously unimplemented routines.
        Added custom JS and V8 bindings. Added exhaustive test case
        exercising all new code paths. Updated preexisting test cases for
        new APIs. Fixed preexisting bugs in WebKit's and Chrome's WebGL
        implementations.

        Ran WebGL layout tests in WebKit (clean) and Chrome (couple of
        preexisting known failures) and manual WebGL tests in both
        browsers.

        Test: fast/canvas/webgl/gl-object-get-calls.html

        * src/GraphicsContext3D.cpp:
        (WebCore::GraphicsContext3D::createFramebuffer):
        (WebCore::GraphicsContext3D::createRenderbuffer):
        (WebCore::GraphicsContext3D::deleteFramebuffer):
        (WebCore::GraphicsContext3D::deleteRenderbuffer):
        (WebCore::GraphicsContext3D::checkFramebufferStatus):
        (WebCore::GraphicsContext3D::getBooleanv):
        (WebCore::GraphicsContext3D::getBufferParameteriv):
        (WebCore::GraphicsContext3D::getFloatv):
        (WebCore::GraphicsContext3D::getFramebufferAttachmentParameteriv):
        (WebCore::GraphicsContext3D::getIntegerv):
        (WebCore::GraphicsContext3D::getProgramiv):
        (WebCore::GraphicsContext3D::getRenderbufferParameteriv):
        (WebCore::GraphicsContext3D::getShaderiv):
        (WebCore::GraphicsContext3D::getTexParameterfv):
        (WebCore::GraphicsContext3D::getTexParameteriv):
        (WebCore::GraphicsContext3D::getUniformfv):
        (WebCore::GraphicsContext3D::getUniformiv):
        (WebCore::GraphicsContext3D::getVertexAttribfv):
        (WebCore::GraphicsContext3D::getVertexAttribiv):
        (WebCore::GraphicsContext3D::isFramebuffer):
        (WebCore::GraphicsContext3D::isRenderbuffer):

2009-11-24  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Darin Fisher.

        Chromium: Expose method for reporting user stats
        to the host. Also includes drive-by default implementation.

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

        * public/WebKitClient.h:

2009-11-24  Adam Barth  <abarth@webkit.org>

        Reviewed by Dimitri Glazkov.

        [Chromium] Fix DOM storage layout tests
        https://bugs.webkit.org/show_bug.cgi?id=31833

        The issue is, essentially, that this code assumes that
        SecurityOrigin::createString can re-create a SecurityOrigin given
        the string produced from SecurityOrigin::toString.  This is a bogus
        assumption in a number of corner cases (e.g., document.domain,
        @sandbox).  A recent patch (http://trac.webkit.org/changeset/51294)
        make this assumption further invalid in the case of of file:// URLs.

        The correct fix is for this code to use WebSecurityOrigin objects
        (and not strings) to represent SecurityOrigin objects.  However, the
        expert on this code is on vacation, and I don't want to do major
        surgery here without his involvement.  This patch is a temporary fix
        to get these tests passing again.  We'll do the right fix once
        jorlow gets back from vacation.

        Tests: Covered by a number of existing DOM storage tests.

        * src/WebStorageNamespaceImpl.cpp:
        (WebKit::WebStorageNamespaceImpl::createStorageArea):

2009-11-23  Jian Li  <jianli@chromium.org>

        Reviewed by NOBODY (Chromium build fix).

        * src/GraphicsContext3D.cpp:
        (WebCore::GraphicsContext3D::createShader):

2009-11-20  Jian Li  <jianli@chromium.org>

        Not reviewed. Fix chromium build.

        * public/WebAccessibilityRole.h:
        (WebKit::):
        * src/AssertMatchingEnums.cpp:

2009-11-19  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Darin Fisher.

        Make chromium/webkit/glue/FormFieldValues use the WebKit API

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

        * public/WebElement.h:
        * public/WebFormElement.h:
        * public/WebInputElement.h:
        (WebKit::WebInputElement::):
        * public/WebNode.h:
        * src/AssertMatchingEnums.cpp:
        * src/DOMUtilitiesPrivate.cpp:
        (WebKit::nameOfInputElement):
        * src/DOMUtilitiesPrivate.h:
        * src/EditorClientImpl.cpp:
        (WebKit::EditorClientImpl::autofill):
        (WebKit::EditorClientImpl::doAutofill):
        * src/WebFormElement.cpp:
        (WebKit::WebFormElement::name):
        (WebKit::WebFormElement::method):
        (WebKit::WebFormElement::getNamedElements):
        (WebKit::WebFormElement::getInputElements):
        * src/WebInputElement.cpp:
        (WebKit::WebInputElement::isEnabledFormControl):
        (WebKit::WebInputElement::inputType):
        (WebKit::WebInputElement::formControlType):
        (WebKit::WebInputElement::value):
        (WebKit::WebInputElement::dispatchFormControlChangeEvent):
        (WebKit::WebInputElement::setSelectionRange):
        (WebKit::WebInputElement::name):
        (WebKit::WebInputElement::nameForAutofill):
        * src/WebNode.cpp:
        (WebKit::WebNode::frame):

2009-11-18  Michelangelo De Simone  <micdesim@gmail.com>

        Reviewed by Darin Adler.

        Fix for <https://bugs.webkit.org/show_bug.cgi?id=27959>.
        Support for validationMessage attribute, as per HTML5 specs.

        * src/LocalizedStrings.cpp:
        (WebCore::validationMessageValueMissingText):
        (WebCore::validationMessageTypeMismatchText):
        (WebCore::validationMessagePatternMismatchText):
        (WebCore::validationMessageTooLongText):
        (WebCore::validationMessageRangeUnderflowText):
        (WebCore::validationMessageRangeOverflowText):
        (WebCore::validationMessageStepMismatchText):

2009-11-18  Nate Chapin  <japhet@chromium.org>

        Reviewed by Darin Fisher.

        Remove Chromium port's dependency on some dummy pthreads header
        files that live in the Chromium repository.

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

        * DEPS: Remove reference to chromium svn's webkit/build/ directory.

2009-11-18  Evan Stade  <estade@chromium.org>

        Reviewed by Darin Fisher.

        Menu button shows wrong content in Chromium
        https://bugs.webkit.org/show_bug.cgi?id=31448

        Make context menu button (VK_APPS) show context menu for node that has
        keyboard focus. This affects both the content and the positioning.

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

2009-11-17  Darin Fisher  <darin@chromium.org>

        Reviewed by Dmitry Titov.

        Minor cleanup in WebKit API
        https://bugs.webkit.org/show_bug.cgi?id=31616

        * public/WebFormElement.h: Add missing WEBKIT_API prefix.
        * public/WebNode.h: Add missing WEBKIT_API prefix.
        * src/WebFormElement.cpp:
        (WebKit::WebFormElement::action): Make action getter const.
        * src/WebNode.cpp:
        (WebKit::WebNode::frame): Utilize WebFrameImpl::fromFrame.

2009-11-17  Nicolas Weber  <thakis@chromium.org>

        Reviewed by Darin Fisher, Dmitry Titov.

        Revert r50887, it regressed handling of cmd-left when a text box is focused.
        https://bugs.webkit.org/show_bug.cgi?id=31566

        * src/mac/WebInputEventFactory.mm:
        (WebKit::WebInputEventFactory::keyboardEvent):

2009-11-16  Kenneth Russell  <kbr@google.com>

        Reviewed by Oliver Hunt.

        Update API of WebGLArray and friends
        https://bugs.webkit.org/show_bug.cgi?id=31175

        * src/GraphicsContext3D.cpp:
        (WebCore::GraphicsContext3D::bufferData):
        (WebCore::GraphicsContext3D::bufferSubData):

2009-11-15  Dimitri Glazkov  <dglazkov@chromium.org>

        Unreviewed, build fix.

        Correct an error in the previous commit

        * public/WebAccessibilityRole.h: It should be WebAccessibilityRoleDirectory,
          not WebAccessibilityDirectoryRole.

2009-11-15  Dimitri Glazkov  <dglazkov@chromium.org>

        Unreviewed, build fix.

        Bring WebAccessibilityRole up to sync after
        http://trac.webkit.org/changeset/51007.

        * public/WebAccessibilityRole.h: Added WebAccessibilityRoleDirectory.
        * src/AssertMatchingEnums.cpp: Added a match between DirectoryRole and
          WebAccessibilityRoleDirectory.

2009-11-13  Dimitri Glazkov  <dglazkov@chromium.org>

        Unreviewed, build fix.

        [Chromium] Rename windowObjectCleared to dispatchDidClearWindowObjectInWorld
        to catch up http://trac.webkit.org/changeset/50973.

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

2009-11-13  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Dimitri Glazkov.

        Chromium WebKit Port to compile as dynamic lib

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

        * WebKit.gyp:

2009-11-13  Aaron Boodman  <aa@chromium.org>

        Reviewed by Eric Seidel.

        Adds a way to get the document element's scrollHeight,
        which is sort of the moral equivalent to
        RenderBox::minPrefWidth().

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

        * public/WebFrame.h: Declare documentElementScrollHeight()
        * src/WebFrameImpl.h: Ditto
        * src/WebFrameImpl.cpp: Implement documentElementScrollHeight()
        (WebKit::WebFrameImpl::documentElementScrollHeight): Return the
        scroll height of the document element, or zero if there's no
        documentElement.

2009-11-12  Dumitru Daniliuc  <dumi@chromium.org>

        Reviewed by Dimitri Glazkov.

        Adding Chromium's DatabaseTracker implementation.

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

        * WebKit.gyp:
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::exceededDatabaseQuota):
        * src/DatabaseObserver.cpp: Added.
        (WebCore::DatabaseObserver::databaseOpened):
        (WebCore::DatabaseObserver::databaseModified):
        (WebCore::DatabaseObserver::databaseClosed):
        * src/WebDatabase.cpp:
        (WebKit::WebDatabase::name):
        (WebKit::WebDatabase::displayName):
        (WebKit::WebDatabase::estimatedSize):
        (WebKit::WebDatabase::securityOrigin):
        (WebKit::WebDatabase::updateDatabaseSize):
        * src/WebSecurityOrigin.cpp:
        (WebKit::WebSecurityOrigin::toString):
        (WebKit::WebSecurityOrigin::databaseIdentifier):

2009-11-13  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Dimitri Glazkov.

        Rolling Chromium dependencies to match Chromium revision 31834. 
        
        https://bugs.webkit.org/show_bug.cgi?id=31445

        * DEPS:

2009-11-12  Dumitru Daniliuc  <dumi@chromium.org>

        Reviewed by Dimitri Glazkov.

        Renaming some parameters passed to DB-related methods to better
        indicate their purpose.

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

        * public/WebKitClient.h:
        * src/ChromiumBridge.cpp:
        (WebCore::ChromiumBridge::databaseOpenFile):
        (WebCore::ChromiumBridge::databaseDeleteFile):
        (WebCore::ChromiumBridge::databaseGetFileAttributes):
        (WebCore::ChromiumBridge::databaseGetFileSize):

2009-11-12  Adam Barth  <abarth>

        Reviewed by Dimitri Glazkov.

        [Chromium] reload-subframe-object.html fails
        https://bugs.webkit.org/show_bug.cgi?id=31398

        More closely match FrameLoaderClient.mm.  Turns out we don't want to
        use MIMETypeRegistry::getMIMETypeForPath because we can't distinguish
        between application/octet-stream and lack of knowledge of the MIME
        type.

        Covered by reload-subframe-object.html.

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

2009-11-12  Nate Chapin  <japhet@chromium.org>

        Unreviewed, Chromium build fix.

        Add new accessibility enum values to Chromium enums from
        http://trac.webkit.org/changeset/50865 and
        http://trac.webkit.org/changeset/50883.

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

        * public/WebAccessibilityRole.h:
        (WebKit::):
        * src/AssertMatchingEnums.cpp:

2009-11-12  Nicolas Weber  <thakis@chromium.org>

        Reviewed by Dimitri Glazkov.

        Send |keypress()| events for keys with cmd down, like safari.
        Test: Hit cmd-shift-a on unixpapa.com/js/testkey.html , should show a
        keypress() event.

        * src/mac/WebInputEventFactory.mm:
        (WebKit::WebInputEventFactory::keyboardEvent):

2009-11-11  Jeremy Orlow  <jorlow@chromium.org>

        Not reviewed.  Build fix.  Will be cleaned up in subsequent patch once we know exaclty what's going on.

        * src/WebBindings.cpp:

2009-11-11  Drew Wilson  <atwilson@chromium.org>

        Reviewed by Dimitri Glazkov.

        SharedWorkerRepository.connect() does not call WebSharedWorkerRepository
        https://bugs.webkit.org/show_bug.cgi?id=31371

        Test: Unit tests can be enabled downstream when this lands.

        * src/SharedWorkerRepository.cpp:
        (WebCore::SharedWorkerRepository::connect):
        Added missing call to WebSharedWorkerRepository.addSharedWorker().

2009-11-11  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Dimitri Glazkov.

        Tiny path fixes in Chromium API includes.

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

        * public/linux/WebSandboxSupport.h: Fixed path.
        * src/WebBindings.cpp: Fixed path.

2009-11-11  Nate Chapin  <japhet@chromium.org>

        Reviewed by Dimitri Glazkov.

        http://trac.webkit.org/changeset/50811 removed some methods from
        platform/network/SocketStreamHandleClient.h, so remove them
        here too.

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

        * public/WebSocketStreamHandleClient.h:
        * src/SocketStreamHandle.cpp:
        (WebCore::SocketStreamHandleInternal::send):

2009-11-11  Nate Chapin  <japhet@chromium.org>

        Reviewed by Eric Seidel.

        Remove some additional references to dragSourceMovedTo() not
        needed after http://trac.webkit.org/changeset/50786.

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

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

2009-11-11  Nate Chapin  <japhet@chromium.org>

        Reviewed by Dimitri Glazkov.

        Remove WebViewImpl::dragSourceMovedTo(), as it is no longer
        needed after http://trac.webkit.org/changeset/50786.

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

        * src/WebViewImpl.cpp:

2009-11-10  Nate Chapin  <japhet@chromium.org>

        Unreviewed, Chromium build fix for http://trac.webkit.org/changeset/50760.

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::paint):

2009-11-10  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Dimitri Glazkov.

        Modified WebKit.gyp to build the webkit api.

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

        * README: Added.
        * WebKit.gyp: Added.
        * webkit.gyp: Removed.

2009-11-10  Nate Chapin  <japhet@chromium.org>

        Reviewed by Eric Seidel.

        Update references to Canvas 3D classes to use the WebGL prefix
        introduced in http://trac.webkit.org/changeset/50725.

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

        * src/GraphicsContext3D.cpp:
        (WebCore::GraphicsContext3DInternal::beginPaint):
        (WebCore::GraphicsContext3DInternal::bindBuffer):
        (WebCore::GraphicsContext3DInternal::bindTexture):
        (WebCore::GraphicsContext3D::beginPaint):
        (WebCore::GraphicsContext3D::bindAttribLocation):
        (WebCore::GraphicsContext3D::bindBuffer):
        (WebCore::GraphicsContext3D::bindTexture):
        (WebCore::GraphicsContext3D::bufferData):
        (WebCore::GraphicsContext3D::bufferSubData):
        (WebCore::GraphicsContext3D::detachShader):
        (WebCore::GraphicsContext3D::getActiveAttrib):
        (WebCore::GraphicsContext3D::getActiveUniform):
        (WebCore::GraphicsContext3D::getAttribLocation):
        (WebCore::GraphicsContext3D::getBooleanv):
        (WebCore::GraphicsContext3D::getBufferParameteriv):
        (WebCore::GraphicsContext3D::getFloatv):
        (WebCore::GraphicsContext3D::getFramebufferAttachmentParameteriv):
        (WebCore::GraphicsContext3D::getIntegerv):
        (WebCore::GraphicsContext3D::getProgrami):
        (WebCore::GraphicsContext3D::getProgramiv):
        (WebCore::GraphicsContext3D::getProgramInfoLog):
        (WebCore::GraphicsContext3D::getRenderbufferParameteriv):
        (WebCore::GraphicsContext3D::getShaderi):
        (WebCore::GraphicsContext3D::getShaderiv):
        (WebCore::GraphicsContext3D::getShaderInfoLog):
        (WebCore::GraphicsContext3D::getShaderSource):
        (WebCore::GraphicsContext3D::getTexParameterfv):
        (WebCore::GraphicsContext3D::getTexParameteriv):
        (WebCore::GraphicsContext3D::getUniformf):
        (WebCore::GraphicsContext3D::getUniformfv):
        (WebCore::GraphicsContext3D::getUniformi):
        (WebCore::GraphicsContext3D::getUniformiv):
        (WebCore::GraphicsContext3D::getUniformLocation):
        (WebCore::GraphicsContext3D::getVertexAttribfv):
        (WebCore::GraphicsContext3D::getVertexAttribiv):
        (WebCore::GraphicsContext3D::isBuffer):
        (WebCore::GraphicsContext3D::isFramebuffer):
        (WebCore::GraphicsContext3D::isProgram):
        (WebCore::GraphicsContext3D::isRenderbuffer):
        (WebCore::GraphicsContext3D::isShader):
        (WebCore::GraphicsContext3D::isTexture):
        (WebCore::GraphicsContext3D::readPixels):
        (WebCore::GraphicsContext3D::shaderSource):
        (WebCore::GraphicsContext3D::texImage2D):
        (WebCore::GraphicsContext3D::texSubImage2D):

2009-11-10  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Dimitri Glazkov.

        Up-streaming Chromium API src files: WebWorker and friends.

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

        * src/WebWorkerBase.cpp: Added.
        (WebKit::WorkerWebFrameClient::didCreateDataSource):
        (WebKit::WorkerWebFrameClient::sharedInstance):
        (WebKit::WorkerWebFrameClient::WorkerWebFrameClient):
        (WebKit::initializeWebKitStaticValues):
        (WebKit::WebWorkerBase::WebWorkerBase):
        (WebKit::WebWorkerBase::~WebWorkerBase):
        (WebKit::WebWorkerBase::stopWorkerThread):
        (WebKit::WebWorkerBase::initializeLoader):
        (WebKit::WebWorkerBase::dispatchTaskToMainThread):
        (WebKit::WebWorkerBase::invokeTaskMethod):
        (WebKit::WebWorkerBase::postMessageToWorkerObject):
        (WebKit::WebWorkerBase::postMessageTask):
        (WebKit::WebWorkerBase::postExceptionToWorkerObject):
        (WebKit::WebWorkerBase::postExceptionTask):
        (WebKit::WebWorkerBase::postConsoleMessageToWorkerObject):
        (WebKit::WebWorkerBase::postConsoleMessageTask):
        (WebKit::WebWorkerBase::confirmMessageFromWorkerObject):
        (WebKit::WebWorkerBase::confirmMessageTask):
        (WebKit::WebWorkerBase::reportPendingActivity):
        (WebKit::WebWorkerBase::reportPendingActivityTask):
        (WebKit::WebWorkerBase::workerContextClosed):
        (WebKit::WebWorkerBase::workerContextClosedTask):
        (WebKit::WebWorkerBase::workerContextDestroyed):
        (WebKit::WebWorkerBase::workerContextDestroyedTask):
        (WebKit::WebWorkerBase::postTaskToLoader):
        (WebKit::WebWorkerBase::postTaskForModeToWorkerContext):
        * src/WebWorkerBase.h: Added.
        (WebKit::WebWorkerBase::setWorkerThread):
        (WebKit::WebWorkerBase::workerThread):
        * src/WebWorkerClientImpl.cpp: Added.
        (WebKit::WebWorkerClientImpl::createWorkerContextProxy):
        (WebKit::WebWorkerClientImpl::WebWorkerClientImpl):
        (WebKit::WebWorkerClientImpl::~WebWorkerClientImpl):
        (WebKit::WebWorkerClientImpl::setWebWorker):
        (WebKit::WebWorkerClientImpl::startWorkerContext):
        (WebKit::WebWorkerClientImpl::terminateWorkerContext):
        (WebKit::WebWorkerClientImpl::postMessageToWorkerContext):
        (WebKit::WebWorkerClientImpl::hasPendingActivity):
        (WebKit::WebWorkerClientImpl::workerObjectDestroyed):
        (WebKit::WebWorkerClientImpl::postMessageToWorkerObject):
        (WebKit::WebWorkerClientImpl::postExceptionToWorkerObject):
        (WebKit::WebWorkerClientImpl::postConsoleMessageToWorkerObject):
        (WebKit::WebWorkerClientImpl::confirmMessageFromWorkerObject):
        (WebKit::WebWorkerClientImpl::reportPendingActivity):
        (WebKit::WebWorkerClientImpl::workerContextDestroyed):
        (WebKit::WebWorkerClientImpl::workerContextClosed):
        (WebKit::WebWorkerClientImpl::startWorkerContextTask):
        (WebKit::WebWorkerClientImpl::terminateWorkerContextTask):
        (WebKit::WebWorkerClientImpl::postMessageToWorkerContextTask):
        (WebKit::WebWorkerClientImpl::workerObjectDestroyedTask):
        (WebKit::WebWorkerClientImpl::postMessageToWorkerObjectTask):
        (WebKit::WebWorkerClientImpl::postExceptionToWorkerObjectTask):
        (WebKit::WebWorkerClientImpl::postConsoleMessageToWorkerObjectTask):
        (WebKit::WebWorkerClientImpl::confirmMessageFromWorkerObjectTask):
        (WebKit::WebWorkerClientImpl::reportPendingActivityTask):
        * src/WebWorkerClientImpl.h: Added.
        (WebKit::WebWorkerClientImpl::createWorker):
        (WebKit::WebWorkerClientImpl::notificationPresenter):
        * src/WebWorkerImpl.cpp: Added.
        (WebKit::WebWorker::create):
        (WebKit::WebWorkerImpl::WebWorkerImpl):
        (WebKit::WebWorkerImpl::~WebWorkerImpl):
        (WebKit::WebWorkerImpl::commonClient):
        (WebKit::WebWorkerImpl::postMessageToWorkerContextTask):
        (WebKit::WebWorkerImpl::startWorkerContext):
        (WebKit::WebWorkerImpl::terminateWorkerContext):
        (WebKit::WebWorkerImpl::postMessageToWorkerContext):
        (WebKit::WebWorkerImpl::workerObjectDestroyed):
        (WebKit::WebWorkerImpl::clientDestroyed):
        * src/WebWorkerImpl.h: Added.
        (WebKit::WebWorkerImpl::client):

2009-11-10  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Dimitri Glazkov.

        Up-streaming Chromium API src files: Platform specific files.

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

        * src/gtk/WebFontInfo.cpp: Added.
        (WebKit::WebFontInfo::familyForChars):
        * src/gtk/WebInputEventFactory.cpp: Added.
        (WebKit::gdkEventTimeToWebEventTime):
        (WebKit::gdkStateToWebEventModifiers):
        (WebKit::gdkEventToWindowsKeyCode):
        (WebKit::getControlCharacter):
        (WebKit::WebInputEventFactory::keyboardEvent):
        (WebKit::WebInputEventFactory::mouseEvent):
        (WebKit::WebInputEventFactory::mouseWheelEvent):
        * src/gtk/WebScreenInfoFactory.cpp: Added.
        (WebKit::WebScreenInfoFactory::screenInfo):
        * src/linux/WebFontRendering.cpp: Added.
        (WebKit::WebFontRendering::setHinting):
        (WebKit::WebFontRendering::setAntiAlias):
        (WebKit::WebFontRendering::setSubpixelGlyphs):
        (WebKit::WebFontRendering::setLCDOrder):
        (WebKit::WebFontRendering::setLCDOrientation):
        * src/mac/WebInputEventFactory.mm: Added.
        (WebKit::isKeyUpEvent):
        (WebKit::isKeypadEvent):
        (WebKit::windowsKeyCodeForKeyEvent):
        (WebKit::textFromEvent):
        (WebKit::unmodifiedTextFromEvent):
        (WebKit::keyIdentifierForKeyEvent):
        (WebKit::modifiersFromEvent):
        (WebKit::WebInputEventFactory::keyboardEvent):
        (WebKit::WebInputEventFactory::mouseEvent):
        (WebKit::WebInputEventFactory::mouseWheelEvent):
        * src/mac/WebScreenInfoFactory.mm: Added.
        (WebKit::screenForWindow):
        (WebKit::toUserSpace):
        (WebKit::WebScreenInfoFactory::screenInfo):
        * src/win/WebInputEventFactory.cpp: Added.
        (WebKit::isKeyPad):
        (WebKit::WebInputEventFactory::keyboardEvent):
        (WebKit::GetRelativeCursorPos):
        (WebKit::WebInputEventFactory::resetLastClickState):
        (WebKit::WebInputEventFactory::mouseEvent):
        (WebKit::WebInputEventFactory::mouseWheelEvent):
        * src/win/WebScreenInfoFactory.cpp: Added.
        (WebKit::toWebRect):
        (WebKit::WebScreenInfoFactory::screenInfo):
        * src/x11/WebScreenInfoFactory.cpp: Added.
        (WebKit::WebScreenInfoFactory::screenInfo):

2009-11-10  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Eric Seidel.

        Up-streaming Chromium API src files: WrapperResourceRequest and Response

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

        * src/WrappedResourceRequest.h: Added.
        (WebKit::WrappedResourceRequest::~WrappedResourceRequest):
        (WebKit::WrappedResourceRequest::WrappedResourceRequest):
        (WebKit::WrappedResourceRequest::bind):
        (WebKit::WrappedResourceRequest::Handle::dispose):
        * src/WrappedResourceResponse.h: Added.
        (WebKit::WrappedResourceResponse::~WrappedResourceResponse):
        (WebKit::WrappedResourceResponse::WrappedResourceResponse):
        (WebKit::WrappedResourceResponse::bind):
        (WebKit::WrappedResourceResponse::Handle::dispose):

2009-11-10  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Dimitri Glazkov.

        Up-streaming Chromium API src files: StorageStreamHandlers...StorageNamespaceProxy

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

        * src/SocketStreamHandle.cpp: Added.
        (WebCore::SocketStreamHandleInternal::create):
        (WebCore::SocketStreamHandleInternal::SocketStreamHandleInternal):
        (WebCore::SocketStreamHandleInternal::~SocketStreamHandleInternal):
        (WebCore::SocketStreamHandleInternal::connect):
        (WebCore::SocketStreamHandleInternal::send):
        (WebCore::SocketStreamHandleInternal::close):
        (WebCore::SocketStreamHandleInternal::willOpenStream):
        (WebCore::SocketStreamHandleInternal::didOpenStream):
        (WebCore::SocketStreamHandleInternal::didSendData):
        (WebCore::SocketStreamHandleInternal::didReceiveData):
        (WebCore::SocketStreamHandleInternal::didClose):
        (WebCore::SocketStreamHandleInternal::didFail):
        (WebCore::SocketStreamHandle::SocketStreamHandle):
        (WebCore::SocketStreamHandle::~SocketStreamHandle):
        (WebCore::SocketStreamHandle::platformSend):
        (WebCore::SocketStreamHandle::platformClose):
        (WebCore::SocketStreamHandle::didReceiveAuthenticationChallenge):
        (WebCore::SocketStreamHandle::receivedCredential):
        (WebCore::SocketStreamHandle::receivedRequestToContinueWithoutCredential):
        (WebCore::SocketStreamHandle::receivedCancellation):
        * src/StorageAreaProxy.cpp: Added.
        (WebCore::StorageAreaProxy::StorageAreaProxy):
        (WebCore::StorageAreaProxy::~StorageAreaProxy):
        (WebCore::StorageAreaProxy::length):
        (WebCore::StorageAreaProxy::key):
        (WebCore::StorageAreaProxy::getItem):
        (WebCore::StorageAreaProxy::setItem):
        (WebCore::StorageAreaProxy::removeItem):
        (WebCore::StorageAreaProxy::clear):
        (WebCore::StorageAreaProxy::contains):
        * src/StorageAreaProxy.h: Added.
        * src/StorageEventDispatcherChromium.cpp: Added.
        (WebCore::StorageEventDispatcher::dispatch):
        * src/StorageEventDispatcherImpl.cpp: Added.
        (WebCore::StorageEventDispatcherImpl::StorageEventDispatcherImpl):
        (WebCore::StorageEventDispatcherImpl::dispatchStorageEvent):
        * src/StorageEventDispatcherImpl.h: Added.
        * src/StorageNamespaceProxy.cpp: Added.
        (WebCore::StorageNamespace::localStorageNamespace):
        (WebCore::StorageNamespace::sessionStorageNamespace):
        (WebCore::StorageNamespaceProxy::StorageNamespaceProxy):
        (WebCore::StorageNamespaceProxy::~StorageNamespaceProxy):
        (WebCore::StorageNamespaceProxy::copy):
        (WebCore::StorageNamespaceProxy::storageArea):
        (WebCore::StorageNamespaceProxy::close):
        (WebCore::StorageNamespaceProxy::unlock):
        * src/StorageNamespaceProxy.h: Added.

2009-11-10  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Dimitri Glazkov.

        Up-streaming Chromium API src files: NotificationPresenterImpl...SharedWorkerRepository

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

        * src/NotificationPresenterImpl.cpp: Added.
        (WebKit::VoidCallbackClient::VoidCallbackClient):
        (WebKit::VoidCallbackClient::permissionRequestComplete):
        (WebKit::NotificationPresenterImpl::initialize):
        (WebKit::NotificationPresenterImpl::isInitialized):
        (WebKit::NotificationPresenterImpl::show):
        (WebKit::NotificationPresenterImpl::cancel):
        (WebKit::NotificationPresenterImpl::notificationObjectDestroyed):
        (WebKit::NotificationPresenterImpl::checkPermission):
        (WebKit::NotificationPresenterImpl::requestPermission):
        * src/NotificationPresenterImpl.h: Added.
        (WebKit::NotificationPresenterImpl::NotificationPresenterImpl):
        * src/PlatformMessagePortChannel.cpp: Added.
        (WebCore::MessagePortChannel::create):
        (WebCore::MessagePortChannel::createChannel):
        (WebCore::MessagePortChannel::MessagePortChannel):
        (WebCore::MessagePortChannel::~MessagePortChannel):
        (WebCore::MessagePortChannel::entangleIfOpen):
        (WebCore::MessagePortChannel::disentangle):
        (WebCore::MessagePortChannel::postMessageToRemote):
        (WebCore::MessagePortChannel::tryGetMessageFromRemote):
        (WebCore::MessagePortChannel::close):
        (WebCore::MessagePortChannel::isConnectedTo):
        (WebCore::MessagePortChannel::hasPendingActivity):
        (WebCore::MessagePortChannel::locallyEntangledPort):
        (WebCore::PlatformMessagePortChannel::create):
        (WebCore::PlatformMessagePortChannel::PlatformMessagePortChannel):
        (WebCore::PlatformMessagePortChannel::~PlatformMessagePortChannel):
        (WebCore::PlatformMessagePortChannel::createChannel):
        (WebCore::PlatformMessagePortChannel::messageAvailable):
        (WebCore::PlatformMessagePortChannel::entangleIfOpen):
        (WebCore::PlatformMessagePortChannel::disentangle):
        (WebCore::PlatformMessagePortChannel::postMessageToRemote):
        (WebCore::PlatformMessagePortChannel::tryGetMessageFromRemote):
        (WebCore::PlatformMessagePortChannel::close):
        (WebCore::PlatformMessagePortChannel::isConnectedTo):
        (WebCore::PlatformMessagePortChannel::hasPendingActivity):
        (WebCore::PlatformMessagePortChannel::setEntangledChannel):
        (WebCore::PlatformMessagePortChannel::webChannelRelease):
        * src/PlatformMessagePortChannel.h: Added.
        * src/ResourceHandle.cpp: Added.
        (WebCore::ResourceHandleInternal::ResourceHandleInternal):
        (WebCore::ResourceHandleInternal::start):
        (WebCore::ResourceHandleInternal::cancel):
        (WebCore::ResourceHandleInternal::setDefersLoading):
        (WebCore::ResourceHandleInternal::allowStoredCredentials):
        (WebCore::ResourceHandleInternal::willSendRequest):
        (WebCore::ResourceHandleInternal::didSendData):
        (WebCore::ResourceHandleInternal::didReceiveResponse):
        (WebCore::ResourceHandleInternal::didReceiveData):
        (WebCore::ResourceHandleInternal::didFinishLoading):
        (WebCore::ResourceHandleInternal::didFail):
        (WebCore::ResourceHandle::ResourceHandle):
        (WebCore::ResourceHandle::create):
        (WebCore::ResourceHandle::request):
        (WebCore::ResourceHandle::client):
        (WebCore::ResourceHandle::setClient):
        (WebCore::ResourceHandle::setDefersLoading):
        (WebCore::ResourceHandle::start):
        (WebCore::ResourceHandle::clearAuthentication):
        (WebCore::ResourceHandle::cancel):
        (WebCore::ResourceHandle::~ResourceHandle):
        (WebCore::ResourceHandle::bufferedData):
        (WebCore::ResourceHandle::loadsBlocked):
        (WebCore::ResourceHandle::supportsBufferedData):
        (WebCore::ResourceHandle::loadResourceSynchronously):
        (WebCore::ResourceHandle::willLoadFromCache):
        * src/SharedWorkerRepository.cpp: Added.
        (WebCore::SharedWorkerScriptLoader::SharedWorkerScriptLoader):
        (WebCore::SharedWorkerScriptLoader::load):
        (WebCore::getWebPort):
        (WebCore::SharedWorkerScriptLoader::notifyFinished):
        (WebCore::SharedWorkerScriptLoader::sendConnect):
        (WebCore::SharedWorkerScriptLoader::contextDestroyed):
        (WebCore::SharedWorkerScriptLoader::connected):
        (WebCore::SharedWorkerRepository::isAvailable):
        (WebCore::getId):
        (WebCore::SharedWorkerRepository::connect):
        (WebCore::SharedWorkerRepository::documentDetached):
        (WebCore::SharedWorkerRepository::hasSharedWorkers):

2009-11-10  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Dimitri Glazkov.

        Up-streaming Chromium API src files: GraphicContext3D...MediaPlaterPrivateChromium

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

        * src/GraphicsContext3D.cpp: Added.
        (WebCore::GraphicsContext3DInternal::):
        (WebCore::GraphicsContext3DInternal::VertexAttribPointerState::VertexAttribPointerState):
        (WebCore::tryLoad):
        (WebCore::GraphicsContext3DInternal::GraphicsContext3DInternal):
        (WebCore::GraphicsContext3DInternal::~GraphicsContext3DInternal):
        (WebCore::GraphicsContext3DInternal::checkError):
        (WebCore::GraphicsContext3DInternal::makeContextCurrent):
        (WebCore::GraphicsContext3DInternal::platformGraphicsContext3D):
        (WebCore::GraphicsContext3DInternal::platformTexture):
        (WebCore::createTextureObject):
        (WebCore::GraphicsContext3DInternal::reshape):
        (WebCore::GraphicsContext3DInternal::flipVertically):
        (WebCore::GraphicsContext3DInternal::beginPaint):
        (WebCore::GraphicsContext3DInternal::validateTextureTarget):
        (WebCore::GraphicsContext3DInternal::validateTextureParameter):
        (WebCore::GraphicsContext3DInternal::activeTexture):
        (WebCore::GraphicsContext3DInternal::bindBuffer):
        (WebCore::GraphicsContext3DInternal::bindTexture):
        (WebCore::GraphicsContext3DInternal::bufferDataImpl):
        (WebCore::GraphicsContext3DInternal::disableVertexAttribArray):
        (WebCore::GraphicsContext3DInternal::enableVertexAttribArray):
        (WebCore::GraphicsContext3DInternal::vertexAttribPointer):
        (WebCore::GraphicsContext3DInternal::viewportImpl):
        (WebCore::GraphicsContext3D::create):
        (WebCore::GraphicsContext3D::GraphicsContext3D):
        (WebCore::GraphicsContext3D::~GraphicsContext3D):
        (WebCore::GraphicsContext3D::platformGraphicsContext3D):
        (WebCore::GraphicsContext3D::platformTexture):
        (WebCore::GraphicsContext3D::checkError):
        (WebCore::GraphicsContext3D::makeContextCurrent):
        (WebCore::GraphicsContext3D::reshape):
        (WebCore::GraphicsContext3D::beginPaint):
        (WebCore::GraphicsContext3D::endPaint):
        (WebCore::GraphicsContext3D::sizeInBytes):
        (WebCore::GraphicsContext3D::createBuffer):
        (WebCore::GraphicsContext3D::createFramebuffer):
        (WebCore::GraphicsContext3D::createProgram):
        (WebCore::GraphicsContext3D::createRenderbuffer):
        (WebCore::GraphicsContext3D::createShader):
        (WebCore::GraphicsContext3D::createTexture):
        (WebCore::GraphicsContext3D::deleteBuffer):
        (WebCore::GraphicsContext3D::deleteFramebuffer):
        (WebCore::GraphicsContext3D::deleteProgram):
        (WebCore::GraphicsContext3D::deleteRenderbuffer):
        (WebCore::GraphicsContext3D::deleteShader):
        (WebCore::GraphicsContext3D::deleteTexture):
        (WebCore::GraphicsContext3D::activeTexture):
        (WebCore::GraphicsContext3D::bindAttribLocation):
        (WebCore::GraphicsContext3D::bindBuffer):
        (WebCore::GraphicsContext3D::bindTexture):
        (WebCore::GraphicsContext3D::bufferData):
        (WebCore::GraphicsContext3D::bufferSubData):
        (WebCore::GraphicsContext3D::checkFramebufferStatus):
        (WebCore::GraphicsContext3D::detachShader):
        (WebCore::GraphicsContext3D::disableVertexAttribArray):
        (WebCore::GraphicsContext3D::drawArrays):
        (WebCore::GraphicsContext3D::drawElements):
        (WebCore::GraphicsContext3D::enableVertexAttribArray):
        (WebCore::GraphicsContext3D::generateMipmap):
        (WebCore::GraphicsContext3D::getActiveAttrib):
        (WebCore::GraphicsContext3D::getActiveUniform):
        (WebCore::GraphicsContext3D::getAttribLocation):
        (WebCore::GraphicsContext3D::getBoolean):
        (WebCore::GraphicsContext3D::getBooleanv):
        (WebCore::GraphicsContext3D::getBufferParameteri):
        (WebCore::GraphicsContext3D::getBufferParameteriv):
        (WebCore::GraphicsContext3D::getError):
        (WebCore::GraphicsContext3D::getFloat):
        (WebCore::GraphicsContext3D::getFloatv):
        (WebCore::GraphicsContext3D::getFramebufferAttachmentParameteri):
        (WebCore::GraphicsContext3D::getFramebufferAttachmentParameteriv):
        (WebCore::GraphicsContext3D::getInteger):
        (WebCore::GraphicsContext3D::getIntegerv):
        (WebCore::GraphicsContext3D::getProgrami):
        (WebCore::GraphicsContext3D::getProgramiv):
        (WebCore::GraphicsContext3D::getProgramInfoLog):
        (WebCore::GraphicsContext3D::getRenderbufferParameteri):
        (WebCore::GraphicsContext3D::getRenderbufferParameteriv):
        (WebCore::GraphicsContext3D::getShaderi):
        (WebCore::GraphicsContext3D::getShaderiv):
        (WebCore::GraphicsContext3D::getShaderInfoLog):
        (WebCore::GraphicsContext3D::getShaderSource):
        (WebCore::GraphicsContext3D::getString):
        (WebCore::GraphicsContext3D::getTexParameterf):
        (WebCore::GraphicsContext3D::getTexParameterfv):
        (WebCore::GraphicsContext3D::getTexParameteri):
        (WebCore::GraphicsContext3D::getTexParameteriv):
        (WebCore::GraphicsContext3D::getUniformf):
        (WebCore::GraphicsContext3D::getUniformfv):
        (WebCore::GraphicsContext3D::getUniformi):
        (WebCore::GraphicsContext3D::getUniformiv):
        (WebCore::GraphicsContext3D::getUniformLocation):
        (WebCore::GraphicsContext3D::getVertexAttribf):
        (WebCore::GraphicsContext3D::getVertexAttribfv):
        (WebCore::GraphicsContext3D::getVertexAttribi):
        (WebCore::GraphicsContext3D::getVertexAttribiv):
        (WebCore::GraphicsContext3D::getVertexAttribOffset):
        (WebCore::GraphicsContext3D::isBuffer):
        (WebCore::GraphicsContext3D::isEnabled):
        (WebCore::GraphicsContext3D::isFramebuffer):
        (WebCore::GraphicsContext3D::isProgram):
        (WebCore::GraphicsContext3D::isRenderbuffer):
        (WebCore::GraphicsContext3D::isShader):
        (WebCore::GraphicsContext3D::isTexture):
        (WebCore::GraphicsContext3D::pixelStorei):
        (WebCore::GraphicsContext3D::readPixels):
        (WebCore::GraphicsContext3D::releaseShaderCompiler):
        (WebCore::GraphicsContext3D::shaderSource):
        (WebCore::GraphicsContext3D::texImage2D):
        (WebCore::unmultiplyAlpha):
        (WebCore::texImage2DHelper):
        (WebCore::GraphicsContext3D::texSubImage2D):
        (WebCore::GraphicsContext3D::uniform1fv):
        (WebCore::GraphicsContext3D::uniform1iv):
        (WebCore::GraphicsContext3D::uniform2fv):
        (WebCore::GraphicsContext3D::uniform2iv):
        (WebCore::GraphicsContext3D::uniform3fv):
        (WebCore::GraphicsContext3D::uniform3iv):
        (WebCore::GraphicsContext3D::uniform4fv):
        (WebCore::GraphicsContext3D::uniform4iv):
        (WebCore::GraphicsContext3D::uniformMatrix2fv):
        (WebCore::GraphicsContext3D::uniformMatrix3fv):
        (WebCore::GraphicsContext3D::uniformMatrix4fv):
        (WebCore::GraphicsContext3D::vertexAttrib1fv):
        (WebCore::GraphicsContext3D::vertexAttrib2fv):
        (WebCore::GraphicsContext3D::vertexAttrib3fv):
        (WebCore::GraphicsContext3D::vertexAttrib4fv):
        (WebCore::GraphicsContext3D::vertexAttribPointer):
        (WebCore::GraphicsContext3D::viewport):
        * src/InspectorClientImpl.cpp: Added.
        (WebKit::InspectorClientImpl::InspectorClientImpl):
        (WebKit::InspectorClientImpl::~InspectorClientImpl):
        (WebKit::InspectorClientImpl::inspectorDestroyed):
        (WebKit::InspectorClientImpl::createPage):
        (WebKit::InspectorClientImpl::showWindow):
        (WebKit::InspectorClientImpl::closeWindow):
        (WebKit::InspectorClientImpl::windowVisible):
        (WebKit::InspectorClientImpl::attachWindow):
        (WebKit::InspectorClientImpl::detachWindow):
        (WebKit::InspectorClientImpl::setAttachedWindowHeight):
        (WebKit::invalidateNodeBoundingRect):
        (WebKit::InspectorClientImpl::highlight):
        (WebKit::InspectorClientImpl::hideHighlight):
        (WebKit::InspectorClientImpl::inspectedURLChanged):
        (WebKit::InspectorClientImpl::localizedStringsURL):
        (WebKit::InspectorClientImpl::hiddenPanels):
        (WebKit::InspectorClientImpl::populateSetting):
        (WebKit::InspectorClientImpl::storeSetting):
        (WebKit::InspectorClientImpl::removeSetting):
        (WebKit::InspectorClientImpl::inspectorWindowObjectCleared):
        (WebKit::InspectorClientImpl::loadSettings):
        (WebKit::InspectorClientImpl::saveSettings):
        * src/InspectorClientImpl.h: Added.
        * src/LocalizedStrings.cpp: Added.
        (WebCore::query):
        (WebCore::searchableIndexIntroduction):
        (WebCore::submitButtonDefaultLabel):
        (WebCore::inputElementAltText):
        (WebCore::resetButtonDefaultLabel):
        (WebCore::fileButtonChooseFileLabel):
        (WebCore::fileButtonNoFileSelectedLabel):
        (WebCore::searchMenuNoRecentSearchesText):
        (WebCore::searchMenuRecentSearchesText):
        (WebCore::searchMenuClearRecentSearchesText):
        (WebCore::AXWebAreaText):
        (WebCore::AXLinkText):
        (WebCore::AXListMarkerText):
        (WebCore::AXImageMapText):
        (WebCore::AXHeadingText):
        (WebCore::AXDefinitionListTermText):
        (WebCore::AXDefinitionListDefinitionText):
        (WebCore::AXButtonActionVerb):
        (WebCore::AXRadioButtonActionVerb):
        (WebCore::AXTextFieldActionVerb):
        (WebCore::AXCheckedCheckBoxActionVerb):
        (WebCore::AXUncheckedCheckBoxActionVerb):
        (WebCore::AXLinkActionVerb):
        (WebCore::multipleFileUploadText):
        (WebCore::unknownFileSizeText):
        (WebCore::keygenMenuHighGradeKeySize):
        (WebCore::keygenMenuMediumGradeKeySize):
        (WebCore::imageTitle):
        (WebCore::contextMenuItemTagOpenLinkInNewWindow):
        (WebCore::contextMenuItemTagDownloadLinkToDisk):
        (WebCore::contextMenuItemTagCopyLinkToClipboard):
        (WebCore::contextMenuItemTagOpenImageInNewWindow):
        (WebCore::contextMenuItemTagDownloadImageToDisk):
        (WebCore::contextMenuItemTagCopyImageToClipboard):
        (WebCore::contextMenuItemTagOpenFrameInNewWindow):
        (WebCore::contextMenuItemTagCopy):
        (WebCore::contextMenuItemTagGoBack):
        (WebCore::contextMenuItemTagGoForward):
        (WebCore::contextMenuItemTagStop):
        (WebCore::contextMenuItemTagReload):
        (WebCore::contextMenuItemTagCut):
        (WebCore::contextMenuItemTagPaste):
        (WebCore::contextMenuItemTagNoGuessesFound):
        (WebCore::contextMenuItemTagIgnoreSpelling):
        (WebCore::contextMenuItemTagLearnSpelling):
        (WebCore::contextMenuItemTagSearchWeb):
        (WebCore::contextMenuItemTagLookUpInDictionary):
        (WebCore::contextMenuItemTagOpenLink):
        (WebCore::contextMenuItemTagIgnoreGrammar):
        (WebCore::contextMenuItemTagSpellingMenu):
        (WebCore::contextMenuItemTagCheckSpelling):
        (WebCore::contextMenuItemTagCheckSpellingWhileTyping):
        (WebCore::contextMenuItemTagCheckGrammarWithSpelling):
        (WebCore::contextMenuItemTagFontMenu):
        (WebCore::contextMenuItemTagBold):
        (WebCore::contextMenuItemTagItalic):
        (WebCore::contextMenuItemTagUnderline):
        (WebCore::contextMenuItemTagOutline):
        (WebCore::contextMenuItemTagWritingDirectionMenu):
        (WebCore::contextMenuItemTagTextDirectionMenu):
        (WebCore::contextMenuItemTagDefaultDirection):
        (WebCore::contextMenuItemTagLeftToRight):
        (WebCore::contextMenuItemTagRightToLeft):
        (WebCore::contextMenuItemTagInspectElement):
        (WebCore::contextMenuItemTagShowSpellingPanel):
        (WebCore::mediaElementLiveBroadcastStateText):
        (WebCore::mediaElementLoadingStateText):
        (WebCore::localizedMediaControlElementString):
        (WebCore::localizedMediaControlElementHelpText):
        (WebCore::localizedMediaTimeDescription):
        * src/MediaPlayerPrivateChromium.cpp: Added.
        (WebCore::MediaPlayerPrivate::registerMediaEngine):

2009-11-10  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Dimitri Glazkov.

        Up-streaming Chromium API src files: DOMUtilities...FrameLoaderClientImpl

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

        * src/DOMUtilitiesPrivate.cpp: Added.
        (WebCore::toHTMLElement):
        (WebKit::toHTMLInputElement):
        (WebKit::toHTMLLinkElement):
        (WebKit::toHTMLMetaElement):
        (WebKit::toHTMLOptionElement):
        (WebKit::nameOfInputElement):
        * src/DOMUtilitiesPrivate.h: Added.
        * src/DragClientImpl.cpp: Added.
        (WebKit::DragClientImpl::willPerformDragDestinationAction):
        (WebKit::DragClientImpl::willPerformDragSourceAction):
        (WebKit::DragClientImpl::actionMaskForDrag):
        (WebKit::DragClientImpl::dragSourceActionMaskForPoint):
        (WebKit::DragClientImpl::startDrag):
        (WebKit::DragClientImpl::createDragImageForLink):
        (WebKit::DragClientImpl::dragControllerDestroyed):
        * src/DragClientImpl.h: Added.
        (WebKit::DragClientImpl::DragClientImpl):
        * src/EditorClientImpl.cpp: Added.
        (WebKit::EditorClientImpl::EditorClientImpl):
        (WebKit::EditorClientImpl::~EditorClientImpl):
        (WebKit::EditorClientImpl::pageDestroyed):
        (WebKit::EditorClientImpl::shouldShowDeleteInterface):
        (WebKit::EditorClientImpl::smartInsertDeleteEnabled):
        (WebKit::EditorClientImpl::isSelectTrailingWhitespaceEnabled):
        (WebKit::EditorClientImpl::shouldSpellcheckByDefault):
        (WebKit::EditorClientImpl::isContinuousSpellCheckingEnabled):
        (WebKit::EditorClientImpl::toggleContinuousSpellChecking):
        (WebKit::EditorClientImpl::isGrammarCheckingEnabled):
        (WebKit::EditorClientImpl::toggleGrammarChecking):
        (WebKit::EditorClientImpl::spellCheckerDocumentTag):
        (WebKit::EditorClientImpl::isEditable):
        (WebKit::EditorClientImpl::shouldBeginEditing):
        (WebKit::EditorClientImpl::shouldEndEditing):
        (WebKit::EditorClientImpl::shouldInsertNode):
        (WebKit::EditorClientImpl::shouldInsertText):
        (WebKit::EditorClientImpl::shouldDeleteRange):
        (WebKit::EditorClientImpl::shouldChangeSelectedRange):
        (WebKit::EditorClientImpl::shouldApplyStyle):
        (WebKit::EditorClientImpl::shouldMoveRangeAfterDelete):
        (WebKit::EditorClientImpl::didBeginEditing):
        (WebKit::EditorClientImpl::respondToChangedSelection):
        (WebKit::EditorClientImpl::respondToChangedContents):
        (WebKit::EditorClientImpl::didEndEditing):
        (WebKit::EditorClientImpl::didWriteSelectionToPasteboard):
        (WebKit::EditorClientImpl::didSetSelectionTypesForPasteboard):
        (WebKit::EditorClientImpl::registerCommandForUndo):
        (WebKit::EditorClientImpl::registerCommandForRedo):
        (WebKit::EditorClientImpl::clearUndoRedoOperations):
        (WebKit::EditorClientImpl::canUndo):
        (WebKit::EditorClientImpl::canRedo):
        (WebKit::EditorClientImpl::undo):
        (WebKit::EditorClientImpl::redo):
        (WebKit::):
        (WebKit::EditorClientImpl::interpretKeyEvent):
        (WebKit::EditorClientImpl::handleEditingKeyboardEvent):
        (WebKit::EditorClientImpl::handleKeyboardEvent):
        (WebKit::EditorClientImpl::handleInputMethodKeydown):
        (WebKit::EditorClientImpl::textFieldDidBeginEditing):
        (WebKit::EditorClientImpl::textFieldDidEndEditing):
        (WebKit::EditorClientImpl::textDidChangeInTextField):
        (WebKit::EditorClientImpl::showFormAutofillForNode):
        (WebKit::EditorClientImpl::autofill):
        (WebKit::EditorClientImpl::doAutofill):
        (WebKit::EditorClientImpl::cancelPendingAutofill):
        (WebKit::EditorClientImpl::onAutofillSuggestionAccepted):
        (WebKit::EditorClientImpl::doTextFieldCommandFromEvent):
        (WebKit::EditorClientImpl::textWillBeDeletedInTextField):
        (WebKit::EditorClientImpl::textDidChangeInTextArea):
        (WebKit::EditorClientImpl::ignoreWordInSpellDocument):
        (WebKit::EditorClientImpl::learnWord):
        (WebKit::EditorClientImpl::checkSpellingOfString):
        (WebKit::EditorClientImpl::getAutoCorrectSuggestionForMisspelledWord):
        (WebKit::EditorClientImpl::checkGrammarOfString):
        (WebKit::EditorClientImpl::updateSpellingUIWithGrammarString):
        (WebKit::EditorClientImpl::updateSpellingUIWithMisspelledWord):
        (WebKit::EditorClientImpl::showSpellingUI):
        (WebKit::EditorClientImpl::spellingUIIsShowing):
        (WebKit::EditorClientImpl::getGuessesForWord):
        (WebKit::EditorClientImpl::setInputMethodState):
        * src/EditorClientImpl.h: Added.
        (WebKit::EditorClientImpl::):
        * src/FrameLoaderClientImpl.cpp: Added.
        (WebKit::):
        (WebKit::FrameLoaderClientImpl::FrameLoaderClientImpl):
        (WebKit::FrameLoaderClientImpl::~FrameLoaderClientImpl):
        (WebKit::FrameLoaderClientImpl::frameLoaderDestroyed):
        (WebKit::FrameLoaderClientImpl::windowObjectCleared):
        (WebKit::FrameLoaderClientImpl::documentElementAvailable):
        (WebKit::FrameLoaderClientImpl::didCreateScriptContextForFrame):
        (WebKit::FrameLoaderClientImpl::didDestroyScriptContextForFrame):
        (WebKit::FrameLoaderClientImpl::didCreateIsolatedScriptContext):
        (WebKit::FrameLoaderClientImpl::didPerformFirstNavigation):
        (WebKit::FrameLoaderClientImpl::registerForIconNotification):
        (WebKit::FrameLoaderClientImpl::didChangeScrollOffset):
        (WebKit::FrameLoaderClientImpl::allowJavaScript):
        (WebKit::FrameLoaderClientImpl::hasWebView):
        (WebKit::FrameLoaderClientImpl::hasFrameView):
        (WebKit::FrameLoaderClientImpl::makeDocumentView):
        (WebKit::FrameLoaderClientImpl::makeRepresentation):
        (WebKit::FrameLoaderClientImpl::forceLayout):
        (WebKit::FrameLoaderClientImpl::forceLayoutForNonHTML):
        (WebKit::FrameLoaderClientImpl::setCopiesOnScroll):
        (WebKit::FrameLoaderClientImpl::detachedFromParent2):
        (WebKit::FrameLoaderClientImpl::detachedFromParent3):
        (WebKit::FrameLoaderClientImpl::assignIdentifierToInitialRequest):
        (WebKit::determineTargetTypeFromLoader):
        (WebKit::FrameLoaderClientImpl::dispatchWillSendRequest):
        (WebKit::FrameLoaderClientImpl::shouldUseCredentialStorage):
        (WebKit::FrameLoaderClientImpl::dispatchDidReceiveAuthenticationChallenge):
        (WebKit::FrameLoaderClientImpl::dispatchDidCancelAuthenticationChallenge):
        (WebKit::FrameLoaderClientImpl::dispatchDidReceiveResponse):
        (WebKit::FrameLoaderClientImpl::dispatchDidReceiveContentLength):
        (WebKit::FrameLoaderClientImpl::dispatchDidFinishLoading):
        (WebKit::FrameLoaderClientImpl::dispatchDidFailLoading):
        (WebKit::FrameLoaderClientImpl::dispatchDidFinishDocumentLoad):
        (WebKit::FrameLoaderClientImpl::dispatchDidLoadResourceFromMemoryCache):
        (WebKit::FrameLoaderClientImpl::dispatchDidLoadResourceByXMLHttpRequest):
        (WebKit::FrameLoaderClientImpl::dispatchDidHandleOnloadEvents):
        (WebKit::FrameLoaderClientImpl::dispatchDidReceiveServerRedirectForProvisionalLoad):
        (WebKit::FrameLoaderClientImpl::dispatchDidCancelClientRedirect):
        (WebKit::FrameLoaderClientImpl::dispatchWillPerformClientRedirect):
        (WebKit::FrameLoaderClientImpl::dispatchDidChangeLocationWithinPage):
        (WebKit::FrameLoaderClientImpl::dispatchWillClose):
        (WebKit::FrameLoaderClientImpl::dispatchDidReceiveIcon):
        (WebKit::FrameLoaderClientImpl::dispatchDidStartProvisionalLoad):
        (WebKit::FrameLoaderClientImpl::dispatchDidReceiveTitle):
        (WebKit::FrameLoaderClientImpl::dispatchDidCommitLoad):
        (WebKit::FrameLoaderClientImpl::dispatchDidFailProvisionalLoad):
        (WebKit::FrameLoaderClientImpl::dispatchDidFailLoad):
        (WebKit::FrameLoaderClientImpl::dispatchDidFinishLoad):
        (WebKit::FrameLoaderClientImpl::dispatchDidFirstLayout):
        (WebKit::FrameLoaderClientImpl::dispatchDidFirstVisuallyNonEmptyLayout):
        (WebKit::FrameLoaderClientImpl::dispatchCreatePage):
        (WebKit::FrameLoaderClientImpl::dispatchShow):
        (WebKit::shouldTreatAsAttachment):
        (WebKit::FrameLoaderClientImpl::dispatchDecidePolicyForMIMEType):
        (WebKit::FrameLoaderClientImpl::dispatchDecidePolicyForNewWindowAction):
        (WebKit::FrameLoaderClientImpl::dispatchDecidePolicyForNavigationAction):
        (WebKit::FrameLoaderClientImpl::cancelPolicyCheck):
        (WebKit::FrameLoaderClientImpl::dispatchUnableToImplementPolicy):
        (WebKit::FrameLoaderClientImpl::dispatchWillSubmitForm):
        (WebKit::FrameLoaderClientImpl::dispatchDidLoadMainResource):
        (WebKit::FrameLoaderClientImpl::revertToProvisionalState):
        (WebKit::FrameLoaderClientImpl::setMainDocumentError):
        (WebKit::FrameLoaderClientImpl::postProgressStartedNotification):
        (WebKit::FrameLoaderClientImpl::postProgressEstimateChangedNotification):
        (WebKit::FrameLoaderClientImpl::postProgressFinishedNotification):
        (WebKit::FrameLoaderClientImpl::setMainFrameDocumentReady):
        (WebKit::FrameLoaderClientImpl::startDownload):
        (WebKit::FrameLoaderClientImpl::willChangeTitle):
        (WebKit::FrameLoaderClientImpl::didChangeTitle):
        (WebKit::FrameLoaderClientImpl::committedLoad):
        (WebKit::FrameLoaderClientImpl::finishedLoading):
        (WebKit::FrameLoaderClientImpl::updateGlobalHistory):
        (WebKit::FrameLoaderClientImpl::updateGlobalHistoryRedirectLinks):
        (WebKit::FrameLoaderClientImpl::shouldGoToHistoryItem):
        (WebKit::FrameLoaderClientImpl::didDisplayInsecureContent):
        (WebKit::FrameLoaderClientImpl::didRunInsecureContent):
        (WebKit::FrameLoaderClientImpl::blockedError):
        (WebKit::FrameLoaderClientImpl::cancelledError):
        (WebKit::FrameLoaderClientImpl::cannotShowURLError):
        (WebKit::FrameLoaderClientImpl::interruptForPolicyChangeError):
        (WebKit::FrameLoaderClientImpl::cannotShowMIMETypeError):
        (WebKit::FrameLoaderClientImpl::fileDoesNotExistError):
        (WebKit::FrameLoaderClientImpl::pluginWillHandleLoadError):
        (WebKit::FrameLoaderClientImpl::shouldFallBack):
        (WebKit::FrameLoaderClientImpl::canHandleRequest):
        (WebKit::FrameLoaderClientImpl::canShowMIMEType):
        (WebKit::FrameLoaderClientImpl::representationExistsForURLScheme):
        (WebKit::FrameLoaderClientImpl::generatedMIMETypeForURLScheme):
        (WebKit::FrameLoaderClientImpl::frameLoadCompleted):
        (WebKit::FrameLoaderClientImpl::saveViewStateToItem):
        (WebKit::FrameLoaderClientImpl::restoreViewState):
        (WebKit::FrameLoaderClientImpl::provisionalLoadStarted):
        (WebKit::FrameLoaderClientImpl::didFinishLoad):
        (WebKit::FrameLoaderClientImpl::prepareForDataSourceReplacement):
        (WebKit::FrameLoaderClientImpl::createDocumentLoader):
        (WebKit::FrameLoaderClientImpl::setTitle):
        (WebKit::FrameLoaderClientImpl::userAgent):
        (WebKit::FrameLoaderClientImpl::savePlatformDataToCachedFrame):
        (WebKit::FrameLoaderClientImpl::transitionToCommittedFromCachedFrame):
        (WebKit::FrameLoaderClientImpl::transitionToCommittedForNewPage):
        (WebKit::FrameLoaderClientImpl::canCachePage):
        (WebKit::FrameLoaderClientImpl::download):
        (WebKit::FrameLoaderClientImpl::createFrame):
        (WebKit::FrameLoaderClientImpl::createPlugin):
        (WebKit::FrameLoaderClientImpl::redirectDataToPlugin):
        (WebKit::FrameLoaderClientImpl::createJavaAppletWidget):
        (WebKit::FrameLoaderClientImpl::objectContentType):
        (WebKit::FrameLoaderClientImpl::overrideMediaType):
        (WebKit::FrameLoaderClientImpl::actionSpecifiesNavigationPolicy):
        (WebKit::FrameLoaderClientImpl::handleBackForwardNavigation):
        (WebKit::FrameLoaderClientImpl::pluginLoadObserver):
        * src/FrameLoaderClientImpl.h: Added.
        (WebKit::FrameLoaderClientImpl::webFrame):
        (WebKit::FrameLoaderClientImpl::willChangeEstimatedProgress):
        (WebKit::FrameLoaderClientImpl::didChangeEstimatedProgress):

2009-11-10  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Dimitri Glazkov.

        Up-streaming Chromium API src files: ChromeClientImpl...ContextMenuClientImpl

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

        * src/ChromeClientImpl.cpp: Added.
        (WebKit::ChromeClientImpl::ChromeClientImpl):
        (WebKit::ChromeClientImpl::~ChromeClientImpl):
        (WebKit::ChromeClientImpl::chromeDestroyed):
        (WebKit::ChromeClientImpl::setWindowRect):
        (WebKit::ChromeClientImpl::windowRect):
        (WebKit::ChromeClientImpl::pageRect):
        (WebKit::ChromeClientImpl::scaleFactor):
        (WebKit::ChromeClientImpl::focus):
        (WebKit::ChromeClientImpl::unfocus):
        (WebKit::ChromeClientImpl::canTakeFocus):
        (WebKit::ChromeClientImpl::takeFocus):
        (WebKit::ChromeClientImpl::focusedNodeChanged):
        (WebKit::ChromeClientImpl::createWindow):
        (WebKit::currentEventShouldCauseBackgroundTab):
        (WebKit::ChromeClientImpl::show):
        (WebKit::ChromeClientImpl::canRunModal):
        (WebKit::ChromeClientImpl::runModal):
        (WebKit::ChromeClientImpl::setToolbarsVisible):
        (WebKit::ChromeClientImpl::toolbarsVisible):
        (WebKit::ChromeClientImpl::setStatusbarVisible):
        (WebKit::ChromeClientImpl::statusbarVisible):
        (WebKit::ChromeClientImpl::setScrollbarsVisible):
        (WebKit::ChromeClientImpl::scrollbarsVisible):
        (WebKit::ChromeClientImpl::setMenubarVisible):
        (WebKit::ChromeClientImpl::menubarVisible):
        (WebKit::ChromeClientImpl::setResizable):
        (WebKit::ChromeClientImpl::addMessageToConsole):
        (WebKit::ChromeClientImpl::canRunBeforeUnloadConfirmPanel):
        (WebKit::ChromeClientImpl::runBeforeUnloadConfirmPanel):
        (WebKit::ChromeClientImpl::closeWindowSoon):
        (WebKit::ChromeClientImpl::runJavaScriptAlert):
        (WebKit::ChromeClientImpl::runJavaScriptConfirm):
        (WebKit::ChromeClientImpl::runJavaScriptPrompt):
        (WebKit::ChromeClientImpl::setStatusbarText):
        (WebKit::ChromeClientImpl::shouldInterruptJavaScript):
        (WebKit::ChromeClientImpl::tabsToLinks):
        (WebKit::ChromeClientImpl::windowResizerRect):
        (WebKit::ChromeClientImpl::repaint):
        (WebKit::ChromeClientImpl::scroll):
        (WebKit::ChromeClientImpl::screenToWindow):
        (WebKit::ChromeClientImpl::windowToScreen):
        (WebKit::ChromeClientImpl::contentsSizeChanged):
        (WebKit::ChromeClientImpl::scrollbarsModeDidChange):
        (WebKit::ChromeClientImpl::mouseDidMoveOverElement):
        (WebKit::ChromeClientImpl::setToolTip):
        (WebKit::ChromeClientImpl::print):
        (WebKit::ChromeClientImpl::exceededDatabaseQuota):
        (WebKit::ChromeClientImpl::reachedMaxAppCacheSize):
        (WebKit::ChromeClientImpl::runOpenPanel):
        (WebKit::ChromeClientImpl::popupOpened):
        (WebKit::ChromeClientImpl::setCursor):
        (WebKit::ChromeClientImpl::setCursorForPlugin):
        (WebKit::ChromeClientImpl::formStateDidChange):
        (WebKit::ChromeClientImpl::getPopupMenuInfo):
        (WebKit::ChromeClientImpl::notificationPresenter):
        * src/ChromeClientImpl.h: Added.
        (WebKit::ChromeClientImpl::webView):
        (WebKit::ChromeClientImpl::platformPageClient):
        (WebKit::ChromeClientImpl::scrollRectIntoView):
        (WebKit::ChromeClientImpl::requestGeolocationPermissionForFrame):
        (WebKit::ChromeClientImpl::setCursor):
        (WebKit::ChromeClientImpl::createHTMLParserQuirks):
        * src/ChromiumBridge.cpp: Added.
        (WebCore::toChromeClientImpl):
        (WebCore::toWebWidgetClient):
        (WebCore::ChromiumBridge::clipboardIsFormatAvailable):
        (WebCore::ChromiumBridge::clipboardReadPlainText):
        (WebCore::ChromiumBridge::clipboardReadHTML):
        (WebCore::ChromiumBridge::clipboardWriteSelection):
        (WebCore::ChromiumBridge::clipboardWritePlainText):
        (WebCore::ChromiumBridge::clipboardWriteURL):
        (WebCore::ChromiumBridge::clipboardWriteImage):
        (WebCore::ChromiumBridge::setCookies):
        (WebCore::ChromiumBridge::cookies):
        (WebCore::ChromiumBridge::rawCookies):
        (WebCore::ChromiumBridge::deleteCookie):
        (WebCore::ChromiumBridge::prefetchDNS):
        (WebCore::ChromiumBridge::fileExists):
        (WebCore::ChromiumBridge::deleteFile):
        (WebCore::ChromiumBridge::deleteEmptyDirectory):
        (WebCore::ChromiumBridge::getFileSize):
        (WebCore::ChromiumBridge::getFileModificationTime):
        (WebCore::ChromiumBridge::directoryName):
        (WebCore::ChromiumBridge::pathByAppendingComponent):
        (WebCore::ChromiumBridge::makeAllDirectories):
        (WebCore::ChromiumBridge::getAbsolutePath):
        (WebCore::ChromiumBridge::isDirectory):
        (WebCore::ChromiumBridge::filePathToURL):
        (WebCore::ChromiumBridge::ensureFontLoaded):
        (WebCore::ChromiumBridge::getFontFamilyForCharacters):
        (WebCore::ChromiumBridge::databaseOpenFile):
        (WebCore::ChromiumBridge::databaseDeleteFile):
        (WebCore::ChromiumBridge::databaseGetFileAttributes):
        (WebCore::ChromiumBridge::databaseGetFileSize):
        (WebCore::ChromiumBridge::signedPublicKeyAndChallengeString):
        (WebCore::ChromiumBridge::computedDefaultLanguage):
        (WebCore::ChromiumBridge::layoutTestMode):
        (WebCore::ChromiumBridge::isSupportedImageMIMEType):
        (WebCore::ChromiumBridge::isSupportedJavaScriptMIMEType):
        (WebCore::ChromiumBridge::isSupportedNonImageMIMEType):
        (WebCore::ChromiumBridge::mimeTypeForExtension):
        (WebCore::ChromiumBridge::mimeTypeFromFile):
        (WebCore::ChromiumBridge::preferredExtensionForMIMEType):
        (WebCore::ChromiumBridge::plugins):
        (WebCore::ChromiumBridge::pluginScriptableObject):
        (WebCore::ChromiumBridge::loadPlatformImageResource):
        (WebCore::ChromiumBridge::sandboxEnabled):
        (WebCore::ChromiumBridge::setSharedTimerFiredFunction):
        (WebCore::ChromiumBridge::setSharedTimerFireTime):
        (WebCore::ChromiumBridge::stopSharedTimer):
        (WebCore::ChromiumBridge::decrementStatsCounter):
        (WebCore::ChromiumBridge::incrementStatsCounter):
        (WebCore::ChromiumBridge::suddenTerminationChanged):
        (WebCore::ChromiumBridge::currentTime):
        (WebCore::ChromiumBridge::paintButton):
        (WebCore::ChromiumBridge::paintMenuList):
        (WebCore::ChromiumBridge::paintScrollbarArrow):
        (WebCore::ChromiumBridge::paintScrollbarThumb):
        (WebCore::ChromiumBridge::paintScrollbarTrack):
        (WebCore::ChromiumBridge::paintTextField):
        (WebCore::ChromiumBridge::paintTrackbar):
        (WebCore::ChromiumBridge::traceEventBegin):
        (WebCore::ChromiumBridge::traceEventEnd):
        (WebCore::ChromiumBridge::visitedLinkHash):
        (WebCore::ChromiumBridge::isLinkVisited):
        (WebCore::ChromiumBridge::notifyJSOutOfMemory):
        (WebCore::ChromiumBridge::memoryUsageMB):
        (WebCore::ChromiumBridge::screenDepth):
        (WebCore::ChromiumBridge::screenDepthPerComponent):
        (WebCore::ChromiumBridge::screenIsMonochrome):
        (WebCore::ChromiumBridge::screenRect):
        (WebCore::ChromiumBridge::screenAvailableRect):
        (WebCore::ChromiumBridge::popupsAllowed):
        (WebCore::ChromiumBridge::widgetSetCursor):
        (WebCore::ChromiumBridge::widgetSetFocus):
        (WebCore::WorkerContextProxy::create):
        * src/ChromiumCurrentTime.cpp: Added.
        (WTF::currentTime):
        * src/ChromiumThreading.cpp: Added.
        (WTF::ChromiumThreading::initializeMainThread):
        (WTF::ChromiumThreading::scheduleDispatchFunctionsOnMainThread):
        * src/ContextMenuClientImpl.cpp: Added.
        (WebKit::urlFromFrame):
        (WebKit::isASingleWord):
        (WebKit::selectMisspelledWord):
        (WebKit::ContextMenuClientImpl::getCustomMenuFromDefaultItems):
        * src/ContextMenuClientImpl.h: Added.
        (WebKit::ContextMenuClientImpl::ContextMenuClientImpl):
        (WebKit::ContextMenuClientImpl::~ContextMenuClientImpl):
        (WebKit::ContextMenuClientImpl::copyImageToClipboard):
        (WebKit::ContextMenuClientImpl::contextMenuDestroyed):
        (WebKit::ContextMenuClientImpl::contextMenuItemSelected):
        (WebKit::ContextMenuClientImpl::downloadURL):
        (WebKit::ContextMenuClientImpl::isSpeaking):
        (WebKit::ContextMenuClientImpl::lookUpInDictionary):
        (WebKit::ContextMenuClientImpl::searchWithGoogle):
        (WebKit::ContextMenuClientImpl::shouldIncludeInspectElementItem):
        (WebKit::ContextMenuClientImpl::speak):
        (WebKit::ContextMenuClientImpl::stopSpeaking):

2009-11-10  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Dimitri Glazkov.

        Up-streaming Chromium API src files: AppCach...BackForwardListClientImpl

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

        * src/ApplicationCacheHost.cpp: Added.
        (WebCore::ApplicationCacheHostInternal::ApplicationCacheHostInternal):
        (WebCore::ApplicationCacheHostInternal::notifyEventListener):
        (WebCore::ApplicationCacheHost::ApplicationCacheHost):
        (WebCore::ApplicationCacheHost::~ApplicationCacheHost):
        (WebCore::ApplicationCacheHost::maybeLoadMainResource):
        (WebCore::ApplicationCacheHost::selectCacheWithoutManifest):
        (WebCore::ApplicationCacheHost::selectCacheWithManifest):
        (WebCore::ApplicationCacheHost::maybeLoadFallbackForMainResponse):
        (WebCore::ApplicationCacheHost::maybeLoadFallbackForMainError):
        (WebCore::ApplicationCacheHost::mainResourceDataReceived):
        (WebCore::ApplicationCacheHost::failedLoadingMainResource):
        (WebCore::ApplicationCacheHost::finishedLoadingMainResource):
        (WebCore::ApplicationCacheHost::maybeLoadResource):
        (WebCore::ApplicationCacheHost::maybeLoadFallbackForRedirect):
        (WebCore::ApplicationCacheHost::maybeLoadFallbackForResponse):
        (WebCore::ApplicationCacheHost::maybeLoadFallbackForError):
        (WebCore::ApplicationCacheHost::maybeLoadSynchronously):
        (WebCore::ApplicationCacheHost::maybeLoadFallbackSynchronously):
        (WebCore::ApplicationCacheHost::canCacheInPageCache):
        (WebCore::ApplicationCacheHost::setDOMApplicationCache):
        (WebCore::ApplicationCacheHost::notifyDOMApplicationCache):
        (WebCore::ApplicationCacheHost::status):
        (WebCore::ApplicationCacheHost::update):
        (WebCore::ApplicationCacheHost::swapCache):
        (WebCore::ApplicationCacheHost::isApplicationCacheEnabled):
        * src/AssertMatchingEnums.cpp: Added.
        * src/AutocompletePopupMenuClient.cpp: Added.
        (WebKit::AutocompletePopupMenuClient::AutocompletePopupMenuClient):
        (WebKit::AutocompletePopupMenuClient::~AutocompletePopupMenuClient):
        (WebKit::AutocompletePopupMenuClient::initialize):
        (WebKit::AutocompletePopupMenuClient::valueChanged):
        (WebKit::AutocompletePopupMenuClient::itemText):
        (WebKit::AutocompletePopupMenuClient::itemStyle):
        (WebKit::AutocompletePopupMenuClient::menuStyle):
        (WebKit::AutocompletePopupMenuClient::clientPaddingLeft):
        (WebKit::AutocompletePopupMenuClient::clientPaddingRight):
        (WebKit::AutocompletePopupMenuClient::popupDidHide):
        (WebKit::AutocompletePopupMenuClient::setTextFromItem):
        (WebKit::AutocompletePopupMenuClient::fontSelector):
        (WebKit::AutocompletePopupMenuClient::hostWindow):
        (WebKit::AutocompletePopupMenuClient::createScrollbar):
        (WebKit::AutocompletePopupMenuClient::setSuggestions):
        (WebKit::AutocompletePopupMenuClient::removeItemAtIndex):
        (WebKit::AutocompletePopupMenuClient::textFieldStyle):
        * src/AutocompletePopupMenuClient.h: Added.
        (WebKit::AutocompletePopupMenuClient::textField):
        (WebKit::AutocompletePopupMenuClient::itemToolTip):
        (WebKit::AutocompletePopupMenuClient::itemIsEnabled):
        (WebKit::AutocompletePopupMenuClient::clientInsetLeft):
        (WebKit::AutocompletePopupMenuClient::clientInsetRight):
        (WebKit::AutocompletePopupMenuClient::listSize):
        (WebKit::AutocompletePopupMenuClient::selectedIndex):
        (WebKit::AutocompletePopupMenuClient::itemIsSeparator):
        (WebKit::AutocompletePopupMenuClient::itemIsLabel):
        (WebKit::AutocompletePopupMenuClient::itemIsSelected):
        (WebKit::AutocompletePopupMenuClient::shouldPopOver):
        (WebKit::AutocompletePopupMenuClient::valueShouldChangeOnHotTrack):
        * src/BackForwardListClientImpl.cpp: Added.
        (WebKit::BackForwardListClientImpl::BackForwardListClientImpl):
        (WebKit::BackForwardListClientImpl::~BackForwardListClientImpl):
        (WebKit::BackForwardListClientImpl::setCurrentHistoryItem):
        (WebKit::BackForwardListClientImpl::previousHistoryItem):
        (WebKit::BackForwardListClientImpl::addItem):
        (WebKit::BackForwardListClientImpl::goToItem):
        (WebKit::BackForwardListClientImpl::currentItem):
        (WebKit::BackForwardListClientImpl::itemAtIndex):
        (WebKit::BackForwardListClientImpl::backListCount):
        (WebKit::BackForwardListClientImpl::forwardListCount):
        (WebKit::BackForwardListClientImpl::close):
        * src/BackForwardListClientImpl.h: Added.

2009-11-10  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Dimitri Glazkov.

        Up-streaming Chromium API src files: WebString...WebViewImpl

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

        * src/WebString.cpp: Added.
        (WebKit::WebString::reset):
        (WebKit::WebString::assign):
        (WebKit::WebString::length):
        (WebKit::WebString::data):
        (WebKit::WebString::utf8):
        (WebKit::WebString::fromUTF8):
        (WebKit::WebString::WebString):
        (WebKit::WebString::operator=):
        (WebKit::WebString::operator WebCore::String):
        (WebKit::WebString::operator WebCore::AtomicString):
        * src/WebURL.cpp: Added.
        (WebKit::WebURL::WebURL):
        (WebKit::WebURL::operator=):
        (WebKit::WebURL::operator WebCore::KURL):
        * src/WebURLError.cpp: Added.
        (WebKit::WebURLError::WebURLError):
        (WebKit::WebURLError::operator=):
        (WebKit::WebURLError::operator ResourceError):
        * src/WebURLRequest.cpp: Added.
        (WebKit::WebURLRequestPrivateImpl::WebURLRequestPrivateImpl):
        (WebKit::WebURLRequestPrivateImpl::dispose):
        (WebKit::WebURLRequest::initialize):
        (WebKit::WebURLRequest::reset):
        (WebKit::WebURLRequest::assign):
        (WebKit::WebURLRequest::isNull):
        (WebKit::WebURLRequest::url):
        (WebKit::WebURLRequest::setURL):
        (WebKit::WebURLRequest::firstPartyForCookies):
        (WebKit::WebURLRequest::setFirstPartyForCookies):
        (WebKit::WebURLRequest::allowCookies):
        (WebKit::WebURLRequest::setAllowCookies):
        (WebKit::WebURLRequest::allowStoredCredentials):
        (WebKit::WebURLRequest::setAllowStoredCredentials):
        (WebKit::WebURLRequest::cachePolicy):
        (WebKit::WebURLRequest::setCachePolicy):
        (WebKit::WebURLRequest::httpMethod):
        (WebKit::WebURLRequest::setHTTPMethod):
        (WebKit::WebURLRequest::httpHeaderField):
        (WebKit::WebURLRequest::setHTTPHeaderField):
        (WebKit::WebURLRequest::addHTTPHeaderField):
        (WebKit::WebURLRequest::clearHTTPHeaderField):
        (WebKit::WebURLRequest::visitHTTPHeaderFields):
        (WebKit::WebURLRequest::httpBody):
        (WebKit::WebURLRequest::setHTTPBody):
        (WebKit::WebURLRequest::reportUploadProgress):
        (WebKit::WebURLRequest::setReportUploadProgress):
        (WebKit::WebURLRequest::targetType):
        (WebKit::WebURLRequest::setTargetType):
        (WebKit::WebURLRequest::requestorID):
        (WebKit::WebURLRequest::setRequestorID):
        (WebKit::WebURLRequest::requestorProcessID):
        (WebKit::WebURLRequest::setRequestorProcessID):
        (WebKit::WebURLRequest::appCacheHostID):
        (WebKit::WebURLRequest::setAppCacheHostID):
        (WebKit::WebURLRequest::toMutableResourceRequest):
        (WebKit::WebURLRequest::toResourceRequest):
        * src/WebURLRequestPrivate.h: Added.
        (WebKit::WebURLRequestPrivate::WebURLRequestPrivate):
        * src/WebURLResponse.cpp: Added.
        (WebKit::WebURLResponsePrivateImpl::WebURLResponsePrivateImpl):
        (WebKit::WebURLResponsePrivateImpl::dispose):
        (WebKit::WebURLResponse::initialize):
        (WebKit::WebURLResponse::reset):
        (WebKit::WebURLResponse::assign):
        (WebKit::WebURLResponse::isNull):
        (WebKit::WebURLResponse::url):
        (WebKit::WebURLResponse::setURL):
        (WebKit::WebURLResponse::mimeType):
        (WebKit::WebURLResponse::setMIMEType):
        (WebKit::WebURLResponse::expectedContentLength):
        (WebKit::WebURLResponse::setExpectedContentLength):
        (WebKit::WebURLResponse::textEncodingName):
        (WebKit::WebURLResponse::setTextEncodingName):
        (WebKit::WebURLResponse::suggestedFileName):
        (WebKit::WebURLResponse::setSuggestedFileName):
        (WebKit::WebURLResponse::httpStatusCode):
        (WebKit::WebURLResponse::setHTTPStatusCode):
        (WebKit::WebURLResponse::httpStatusText):
        (WebKit::WebURLResponse::setHTTPStatusText):
        (WebKit::WebURLResponse::httpHeaderField):
        (WebKit::WebURLResponse::setHTTPHeaderField):
        (WebKit::WebURLResponse::addHTTPHeaderField):
        (WebKit::WebURLResponse::clearHTTPHeaderField):
        (WebKit::WebURLResponse::visitHTTPHeaderFields):
        (WebKit::WebURLResponse::lastModifiedDate):
        (WebKit::WebURLResponse::setLastModifiedDate):
        (WebKit::WebURLResponse::isContentFiltered):
        (WebKit::WebURLResponse::setIsContentFiltered):
        (WebKit::WebURLResponse::appCacheID):
        (WebKit::WebURLResponse::setAppCacheID):
        (WebKit::WebURLResponse::appCacheManifestURL):
        (WebKit::WebURLResponse::setAppCacheManifestURL):
        (WebKit::WebURLResponse::securityInfo):
        (WebKit::WebURLResponse::setSecurityInfo):
        (WebKit::WebURLResponse::toMutableResourceResponse):
        (WebKit::WebURLResponse::toResourceResponse):
        * src/WebURLResponsePrivate.h: Added.
        (WebKit::WebURLResponsePrivate::WebURLResponsePrivate):
        * src/WebViewImpl.cpp: Added.
        (WebKit::):
        (WebKit::WebView::create):
        (WebKit::WebView::updateVisitedLinkState):
        (WebKit::WebView::resetVisitedLinkState):
        (WebKit::WebViewImpl::initializeMainFrame):
        (WebKit::WebViewImpl::WebViewImpl):
        (WebKit::WebViewImpl::~WebViewImpl):
        (WebKit::WebViewImpl::theme):
        (WebKit::WebViewImpl::mainFrameImpl):
        (WebKit::WebViewImpl::tabKeyCyclesThroughElements):
        (WebKit::WebViewImpl::setTabKeyCyclesThroughElements):
        (WebKit::WebViewImpl::mouseMove):
        (WebKit::WebViewImpl::mouseLeave):
        (WebKit::WebViewImpl::mouseDown):
        (WebKit::WebViewImpl::mouseContextMenu):
        (WebKit::WebViewImpl::mouseUp):
        (WebKit::WebViewImpl::mouseWheel):
        (WebKit::WebViewImpl::keyEvent):
        (WebKit::WebViewImpl::autocompleteHandleKeyEvent):
        (WebKit::WebViewImpl::charEvent):
        (WebKit::WebViewImpl::sendContextMenuEvent):
        (WebKit::WebViewImpl::keyEventDefault):
        (WebKit::WebViewImpl::scrollViewWithKeyboard):
        (WebKit::WebViewImpl::propagateScroll):
        (WebKit::WebViewImpl::focusedWebCoreFrame):
        (WebKit::WebViewImpl::fromPage):
        (WebKit::WebViewImpl::close):
        (WebKit::WebViewImpl::resize):
        (WebKit::WebViewImpl::layout):
        (WebKit::WebViewImpl::paint):
        (WebKit::WebViewImpl::handleInputEvent):
        (WebKit::WebViewImpl::mouseCaptureLost):
        (WebKit::WebViewImpl::setFocus):
        (WebKit::WebViewImpl::handleCompositionEvent):
        (WebKit::WebViewImpl::queryCompositionStatus):
        (WebKit::WebViewImpl::setTextDirection):
        (WebKit::WebViewImpl::settings):
        (WebKit::WebViewImpl::pageEncoding):
        (WebKit::WebViewImpl::setPageEncoding):
        (WebKit::WebViewImpl::dispatchBeforeUnloadEvent):
        (WebKit::WebViewImpl::dispatchUnloadEvent):
        (WebKit::WebViewImpl::mainFrame):
        (WebKit::WebViewImpl::findFrameByName):
        (WebKit::WebViewImpl::focusedFrame):
        (WebKit::WebViewImpl::setFocusedFrame):
        (WebKit::WebViewImpl::setInitialFocus):
        (WebKit::WebViewImpl::clearFocusedNode):
        (WebKit::WebViewImpl::zoomIn):
        (WebKit::WebViewImpl::zoomOut):
        (WebKit::WebViewImpl::zoomDefault):
        (WebKit::WebViewImpl::performMediaPlayerAction):
        (WebKit::WebViewImpl::copyImageAt):
        (WebKit::WebViewImpl::dragSourceEndedAt):
        (WebKit::WebViewImpl::dragSourceMovedTo):
        (WebKit::WebViewImpl::dragSourceSystemDragEnded):
        (WebKit::WebViewImpl::dragTargetDragEnter):
        (WebKit::WebViewImpl::dragTargetDragOver):
        (WebKit::WebViewImpl::dragTargetDragLeave):
        (WebKit::WebViewImpl::dragTargetDrop):
        (WebKit::WebViewImpl::dragIdentity):
        (WebKit::WebViewImpl::inspectElementAt):
        (WebKit::WebViewImpl::inspectorSettings):
        (WebKit::WebViewImpl::setInspectorSettings):
        (WebKit::WebViewImpl::devToolsAgent):
        (WebKit::WebViewImpl::setDevToolsAgent):
        (WebKit::WebViewImpl::accessibilityObject):
        (WebKit::WebViewImpl::applyAutofillSuggestions):
        (WebKit::WebViewImpl::hideAutofillPopup):
        (WebKit::WebViewImpl::setDropEffect):
        (WebKit::WebViewImpl::setIsTransparent):
        (WebKit::WebViewImpl::isTransparent):
        (WebKit::WebViewImpl::setIsActive):
        (WebKit::WebViewImpl::isActive):
        (WebKit::WebViewImpl::didCommitLoad):
        (WebKit::WebViewImpl::navigationPolicyFromMouseEvent):
        (WebKit::WebViewImpl::startDragging):
        (WebKit::WebViewImpl::setCurrentHistoryItem):
        (WebKit::WebViewImpl::previousHistoryItem):
        (WebKit::WebViewImpl::observeNewNavigation):
        (WebKit::WebViewImpl::hideAutoCompletePopup):
        (WebKit::WebViewImpl::autoCompletePopupDidHide):
        (WebKit::WebViewImpl::setIgnoreInputEvents):
        (WebKit::WebViewImpl::notificationPresenterImpl):
        (WebKit::WebViewImpl::refreshAutofillPopup):
        (WebKit::WebViewImpl::focusedWebCoreNode):
        (WebKit::WebViewImpl::hitTestResultForWindowPos):
        (WebKit::WebViewImpl::setTabsToLinks):
        (WebKit::WebViewImpl::tabsToLinks):
        * src/WebViewImpl.h: Added.
        (WebKit::WebViewImpl::size):
        (WebKit::WebViewImpl::devToolsAgentPrivate):
        (WebKit::WebViewImpl::lastMouseDownPoint):
        (WebKit::WebViewImpl::client):
        (WebKit::WebViewImpl::page):
        (WebKit::WebViewImpl::contextMenuAllowed):
        (WebKit::WebViewImpl::setInitialNavigationPolicy):
        (WebKit::WebViewImpl::initialNavigationPolicy):
        (WebKit::WebViewImpl::currentInputEvent):
        (WebKit::WebViewImpl::):

2009-11-10  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Dimitri Glazkov.

        Up-streaming Chromium API src files: WebScriptController...WebStorageNamespaceImpl

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

        * src/WebScriptController.cpp: Added.
        (WebKit::WebScriptController::registerExtension):
        (WebKit::WebScriptController::enableV8SingleThreadMode):
        (WebKit::WebScriptController::flushConsoleMessages):
        * src/WebSearchableFormData.cpp: Added.
        (WebCore::GetFormEncoding):
        (WebCore::IsHTTPFormSubmit):
        (WebCore::GetButtonToActivate):
        (WebCore::IsSelectInDefaultState):
        (WebCore::IsInDefaultState):
        (WebCore::HasSuitableTextElement):
        (WebKit::WebSearchableFormData::WebSearchableFormData):
        * src/WebSecurityOrigin.cpp: Added.
        (WebKit::WebSecurityOrigin::reset):
        (WebKit::WebSecurityOrigin::assign):
        (WebKit::WebSecurityOrigin::protocol):
        (WebKit::WebSecurityOrigin::host):
        (WebKit::WebSecurityOrigin::port):
        (WebKit::WebSecurityOrigin::isEmpty):
        (WebKit::WebSecurityOrigin::toString):
        (WebKit::WebSecurityOrigin::databaseIdentifier):
        (WebKit::WebSecurityOrigin::WebSecurityOrigin):
        (WebKit::WebSecurityOrigin::operator=):
        (WebKit::WebSecurityOrigin::operator WTF::PassRefPtr<WebCore::SecurityOrigin>):
        * src/WebSecurityPolicy.cpp: Added.
        (WebKit::WebSecurityPolicy::registerURLSchemeAsLocal):
        (WebKit::WebSecurityPolicy::registerURLSchemeAsNoAccess):
        (WebKit::WebSecurityPolicy::whiteListAccessFromOrigin):
        (WebKit::WebSecurityPolicy::resetOriginAccessWhiteLists):
        * src/WebSettingsImpl.cpp: Added.
        (WebKit::WebSettingsImpl::WebSettingsImpl):
        (WebKit::WebSettingsImpl::setStandardFontFamily):
        (WebKit::WebSettingsImpl::setFixedFontFamily):
        (WebKit::WebSettingsImpl::setSerifFontFamily):
        (WebKit::WebSettingsImpl::setSansSerifFontFamily):
        (WebKit::WebSettingsImpl::setCursiveFontFamily):
        (WebKit::WebSettingsImpl::setFantasyFontFamily):
        (WebKit::WebSettingsImpl::setDefaultFontSize):
        (WebKit::WebSettingsImpl::setDefaultFixedFontSize):
        (WebKit::WebSettingsImpl::setMinimumFontSize):
        (WebKit::WebSettingsImpl::setMinimumLogicalFontSize):
        (WebKit::WebSettingsImpl::setDefaultTextEncodingName):
        (WebKit::WebSettingsImpl::setJavaScriptEnabled):
        (WebKit::WebSettingsImpl::setWebSecurityEnabled):
        (WebKit::WebSettingsImpl::setJavaScriptCanOpenWindowsAutomatically):
        (WebKit::WebSettingsImpl::setLoadsImagesAutomatically):
        (WebKit::WebSettingsImpl::setPluginsEnabled):
        (WebKit::WebSettingsImpl::setDOMPasteAllowed):
        (WebKit::WebSettingsImpl::setDeveloperExtrasEnabled):
        (WebKit::WebSettingsImpl::setShrinksStandaloneImagesToFit):
        (WebKit::WebSettingsImpl::setUsesEncodingDetector):
        (WebKit::WebSettingsImpl::setTextAreasAreResizable):
        (WebKit::WebSettingsImpl::setJavaEnabled):
        (WebKit::WebSettingsImpl::setAllowScriptsToCloseWindows):
        (WebKit::WebSettingsImpl::setUserStyleSheetLocation):
        (WebKit::WebSettingsImpl::setUsesPageCache):
        (WebKit::WebSettingsImpl::setDownloadableBinaryFontsEnabled):
        (WebKit::WebSettingsImpl::setXSSAuditorEnabled):
        (WebKit::WebSettingsImpl::setLocalStorageEnabled):
        (WebKit::WebSettingsImpl::setEditableLinkBehaviorNeverLive):
        (WebKit::WebSettingsImpl::setFontRenderingModeNormal):
        (WebKit::WebSettingsImpl::setShouldPaintCustomScrollbars):
        (WebKit::WebSettingsImpl::setDatabasesEnabled):
        (WebKit::WebSettingsImpl::setAllowUniversalAccessFromFileURLs):
        (WebKit::WebSettingsImpl::setTextDirectionSubmenuInclusionBehaviorNeverIncluded):
        (WebKit::WebSettingsImpl::setOfflineWebApplicationCacheEnabled):
        (WebKit::WebSettingsImpl::setExperimentalWebGLEnabled):
        * src/WebSettingsImpl.h: Added.
        (WebKit::WebSettingsImpl::~WebSettingsImpl):
        * src/WebSharedWorkerImpl.cpp: Added.
        (WebKit::WebSharedWorkerImpl::WebSharedWorkerImpl):
        (WebKit::WebSharedWorkerImpl::~WebSharedWorkerImpl):
        (WebKit::WebSharedWorkerImpl::isStarted):
        (WebKit::WebSharedWorkerImpl::connect):
        (WebKit::WebSharedWorkerImpl::connectTask):
        (WebKit::WebSharedWorkerImpl::startWorkerContext):
        (WebKit::WebSharedWorkerImpl::terminateWorkerContext):
        (WebKit::WebSharedWorkerImpl::clientDestroyed):
        (WebKit::WebSharedWorkerImpl::client):
        (WebKit::WebSharedWorker::create):
        * src/WebSharedWorkerImpl.h: Added.
        (WebKit::WebSharedWorkerImpl::commonClient):
        * src/WebStorageAreaImpl.cpp: Added.
        (WebKit::WebStorageAreaImpl::WebStorageAreaImpl):
        (WebKit::WebStorageAreaImpl::~WebStorageAreaImpl):
        (WebKit::WebStorageAreaImpl::length):
        (WebKit::WebStorageAreaImpl::key):
        (WebKit::WebStorageAreaImpl::getItem):
        (WebKit::WebStorageAreaImpl::setItem):
        (WebKit::WebStorageAreaImpl::removeItem):
        (WebKit::WebStorageAreaImpl::clear):
        * src/WebStorageAreaImpl.h: Added.
        (WebKit::WebStorageAreaImpl::currentStorageEventURL):
        (WebKit::WebStorageAreaImpl::ScopedStorageEventURL::ScopedStorageEventURL):
        (WebKit::WebStorageAreaImpl::ScopedStorageEventURL::~ScopedStorageEventURL):
        * src/WebStorageEventDispatcherImpl.cpp: Added.
        (WebKit::WebStorageEventDispatcher::create):
        (WebKit::WebStorageEventDispatcherImpl::WebStorageEventDispatcherImpl):
        (WebKit::WebStorageEventDispatcherImpl::dispatchStorageEvent):
        * src/WebStorageEventDispatcherImpl.h: Added.
        * src/WebStorageNamespaceImpl.cpp: Added.
        (WebKit::WebStorageNamespace::createLocalStorageNamespace):
        (WebKit::WebStorageNamespace::createSessionStorageNamespace):
        (WebKit::WebStorageNamespaceImpl::WebStorageNamespaceImpl):
        (WebKit::WebStorageNamespaceImpl::~WebStorageNamespaceImpl):
        (WebKit::WebStorageNamespaceImpl::createStorageArea):
        (WebKit::WebStorageNamespaceImpl::copy):
        (WebKit::WebStorageNamespaceImpl::close):
        * src/WebStorageNamespaceImpl.h: Added.

2009-11-10  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Dimitri Glazkov.

        Up-streaming Chromium API src files: WebPasswordFormData...WebRuntimeFeatures

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

        * src/WebPasswordFormData.cpp: Added.
        (WebKit::):
        (WebKit::WebPasswordFormData::WebPasswordFormData):
        * src/WebPasswordFormUtils.cpp: Added.
        (WebKit::findPasswordFormFields):
        * src/WebPasswordFormUtils.h: Added.
        (WebKit::PasswordFormFields::PasswordFormFields):
        * src/WebPluginContainerImpl.cpp: Added.
        (WebKit::WebPluginContainerImpl::setFrameRect):
        (WebKit::WebPluginContainerImpl::paint):
        (WebKit::WebPluginContainerImpl::invalidateRect):
        (WebKit::WebPluginContainerImpl::setFocus):
        (WebKit::WebPluginContainerImpl::show):
        (WebKit::WebPluginContainerImpl::hide):
        (WebKit::WebPluginContainerImpl::handleEvent):
        (WebKit::WebPluginContainerImpl::frameRectsChanged):
        (WebKit::WebPluginContainerImpl::setParentVisible):
        (WebKit::WebPluginContainerImpl::setParent):
        (WebKit::WebPluginContainerImpl::invalidate):
        (WebKit::WebPluginContainerImpl::reportGeometry):
        (WebKit::WebPluginContainerImpl::clearScriptObjects):
        (WebKit::WebPluginContainerImpl::scriptableObjectForElement):
        (WebKit::WebPluginContainerImpl::executeScriptURL):
        (WebKit::WebPluginContainerImpl::loadFrameRequest):
        (WebKit::WebPluginContainerImpl::didReceiveResponse):
        (WebKit::WebPluginContainerImpl::didReceiveData):
        (WebKit::WebPluginContainerImpl::didFinishLoading):
        (WebKit::WebPluginContainerImpl::didFailLoading):
        (WebKit::WebPluginContainerImpl::scriptableObject):
        (WebKit::WebPluginContainerImpl::willDestroyPluginLoadObserver):
        (WebKit::WebPluginContainerImpl::~WebPluginContainerImpl):
        (WebKit::WebPluginContainerImpl::handleMouseEvent):
        (WebKit::WebPluginContainerImpl::handleKeyboardEvent):
        (WebKit::WebPluginContainerImpl::calculateGeometry):
        (WebKit::WebPluginContainerImpl::windowClipRect):
        (WebKit::getObjectStack):
        (WebKit::checkStackOnTop):
        (WebKit::WebPluginContainerImpl::windowCutOutRects):
        * src/WebPluginContainerImpl.h: Added.
        (WebKit::WebPluginContainerImpl::create):
        (WebKit::WebPluginContainerImpl::plugin):
        (WebKit::WebPluginContainerImpl::WebPluginContainerImpl):
        * src/WebPluginListBuilderImpl.cpp: Added.
        (WebKit::WebPluginListBuilderImpl::addPlugin):
        (WebKit::WebPluginListBuilderImpl::addMediaTypeToLastPlugin):
        (WebKit::WebPluginListBuilderImpl::addFileExtensionToLastMediaType):
        * src/WebPluginListBuilderImpl.h: Added.
        (WebKit::WebPluginListBuilderImpl::WebPluginListBuilderImpl):
        * src/WebPluginLoadObserver.cpp: Added.
        (WebKit::WebPluginLoadObserver::~WebPluginLoadObserver):
        (WebKit::WebPluginLoadObserver::didFinishLoading):
        (WebKit::WebPluginLoadObserver::didFailLoading):
        * src/WebPluginLoadObserver.h: Added.
        (WebKit::WebPluginLoadObserver::WebPluginLoadObserver):
        (WebKit::WebPluginLoadObserver::url):
        (WebKit::WebPluginLoadObserver::clearPluginContainer):
        * src/WebPopupMenuImpl.cpp: Added.
        (WebKit::WebPopupMenu::create):
        (WebKit::WebPopupMenuImpl::WebPopupMenuImpl):
        (WebKit::WebPopupMenuImpl::~WebPopupMenuImpl):
        (WebKit::WebPopupMenuImpl::Init):
        (WebKit::WebPopupMenuImpl::MouseMove):
        (WebKit::WebPopupMenuImpl::MouseLeave):
        (WebKit::WebPopupMenuImpl::MouseDown):
        (WebKit::WebPopupMenuImpl::MouseUp):
        (WebKit::WebPopupMenuImpl::MouseWheel):
        (WebKit::WebPopupMenuImpl::KeyEvent):
        (WebKit::WebPopupMenuImpl::close):
        (WebKit::WebPopupMenuImpl::resize):
        (WebKit::WebPopupMenuImpl::layout):
        (WebKit::WebPopupMenuImpl::paint):
        (WebKit::WebPopupMenuImpl::handleInputEvent):
        (WebKit::WebPopupMenuImpl::mouseCaptureLost):
        (WebKit::WebPopupMenuImpl::setFocus):
        (WebKit::WebPopupMenuImpl::handleCompositionEvent):
        (WebKit::WebPopupMenuImpl::queryCompositionStatus):
        (WebKit::WebPopupMenuImpl::setTextDirection):
        (WebKit::WebPopupMenuImpl::repaint):
        (WebKit::WebPopupMenuImpl::scroll):
        (WebKit::WebPopupMenuImpl::screenToWindow):
        (WebKit::WebPopupMenuImpl::windowToScreen):
        (WebKit::WebPopupMenuImpl::scrollRectIntoView):
        (WebKit::WebPopupMenuImpl::scrollbarsModeDidChange):
        (WebKit::WebPopupMenuImpl::popupClosed):
        * src/WebPopupMenuImpl.h: Added.
        (WebKit::WebPopupMenuImpl::size):
        (WebKit::WebPopupMenuImpl::client):
        (WebKit::WebPopupMenuImpl::platformPageClient):
        * src/WebRange.cpp: Added.
        (WebKit::WebRange::reset):
        (WebKit::WebRange::assign):
        (WebKit::WebRange::startOffset):
        (WebKit::WebRange::endOffset):
        (WebKit::WebRange::startContainer):
        (WebKit::WebRange::endContainer):
        (WebKit::WebRange::toHTMLText):
        (WebKit::WebRange::toPlainText):
        (WebKit::WebRange::WebRange):
        (WebKit::WebRange::operator=):
        (WebKit::WebRange::operator WTF::PassRefPtr<WebCore::Range>):
        * src/WebRuntimeFeatures.cpp: Added.
        (WebKit::WebRuntimeFeatures::enableDatabase):
        (WebKit::WebRuntimeFeatures::isDatabaseEnabled):
        (WebKit::WebRuntimeFeatures::enableLocalStorage):
        (WebKit::WebRuntimeFeatures::isLocalStorageEnabled):
        (WebKit::WebRuntimeFeatures::enableSessionStorage):
        (WebKit::WebRuntimeFeatures::isSessionStorageEnabled):
        (WebKit::WebRuntimeFeatures::enableMediaPlayer):
        (WebKit::WebRuntimeFeatures::isMediaPlayerEnabled):
        (WebKit::WebRuntimeFeatures::enableSockets):
        (WebKit::WebRuntimeFeatures::isSocketsEnabled):
        (WebKit::WebRuntimeFeatures::enableNotifications):
        (WebKit::WebRuntimeFeatures::isNotificationsEnabled):
        (WebKit::WebRuntimeFeatures::enableApplicationCache):
        (WebKit::WebRuntimeFeatures::isApplicationCacheEnabled):

2009-11-09  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Dimitri Glazkov.

        Up-streaming Chromium API src files: WebFileInputElement...WebNotifications

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

        * src/WebInputElement.cpp: Added.
        (WebKit::WebInputElement::WebInputElement):
        (WebKit::WebInputElement::operator=):
        (WebKit::WebInputElement::operator WTF::PassRefPtr<HTMLInputElement>):
        (WebKit::WebInputElement::setActivatedSubmit):
        (WebKit::WebInputElement::setValue):
        (WebKit::WebInputElement::value):
        (WebKit::WebInputElement::setAutofilled):
        (WebKit::WebInputElement::dispatchFormControlChangeEvent):
        (WebKit::WebInputElement::setSelectionRange):
        * src/WebInputEvent.cpp: Added.
        (WebKit::staticKeyIdentifiers):
        (WebKit::WebKeyboardEvent::setKeyIdentifierFromWindowsKeyCode):
        * src/WebInputEventConversion.cpp: Added.
        (WebKit::PlatformMouseEventBuilder::PlatformMouseEventBuilder):
        (WebKit::PlatformWheelEventBuilder::PlatformWheelEventBuilder):
        (WebKit::toPlatformKeyboardEventType):
        (WebKit::PlatformKeyboardEventBuilder::PlatformKeyboardEventBuilder):
        (WebKit::PlatformKeyboardEventBuilder::setKeyType):
        (WebKit::PlatformKeyboardEventBuilder::isCharacterKey):
        (WebKit::getWebInputModifiers):
        (WebKit::WebMouseEventBuilder::WebMouseEventBuilder):
        (WebKit::WebKeyboardEventBuilder::WebKeyboardEventBuilder):
        * src/WebInputEventConversion.h: Added.
        * src/WebKit.cpp: Added.
        (WebKit::initialize):
        (WebKit::shutdown):
        (WebKit::webKitClient):
        (WebKit::setLayoutTestMode):
        (WebKit::layoutTestMode):
        (WebKit::resetPluginCache):
        * src/WebMediaPlayerClientImpl.cpp: Added.
        (WebKit::createWebMediaPlayer):
        (WebKit::WebMediaPlayerClientImpl::isEnabled):
        (WebKit::WebMediaPlayerClientImpl::setIsEnabled):
        (WebKit::WebMediaPlayerClientImpl::registerSelf):
        (WebKit::WebMediaPlayerClientImpl::networkStateChanged):
        (WebKit::WebMediaPlayerClientImpl::readyStateChanged):
        (WebKit::WebMediaPlayerClientImpl::volumeChanged):
        (WebKit::WebMediaPlayerClientImpl::timeChanged):
        (WebKit::WebMediaPlayerClientImpl::repaint):
        (WebKit::WebMediaPlayerClientImpl::durationChanged):
        (WebKit::WebMediaPlayerClientImpl::rateChanged):
        (WebKit::WebMediaPlayerClientImpl::sizeChanged):
        (WebKit::WebMediaPlayerClientImpl::sawUnsupportedTracks):
        (WebKit::WebMediaPlayerClientImpl::load):
        (WebKit::WebMediaPlayerClientImpl::cancelLoad):
        (WebKit::WebMediaPlayerClientImpl::play):
        (WebKit::WebMediaPlayerClientImpl::pause):
        (WebKit::WebMediaPlayerClientImpl::naturalSize):
        (WebKit::WebMediaPlayerClientImpl::hasVideo):
        (WebKit::WebMediaPlayerClientImpl::hasAudio):
        (WebKit::WebMediaPlayerClientImpl::setVisible):
        (WebKit::WebMediaPlayerClientImpl::duration):
        (WebKit::WebMediaPlayerClientImpl::currentTime):
        (WebKit::WebMediaPlayerClientImpl::seek):
        (WebKit::WebMediaPlayerClientImpl::seeking):
        (WebKit::WebMediaPlayerClientImpl::setEndTime):
        (WebKit::WebMediaPlayerClientImpl::setRate):
        (WebKit::WebMediaPlayerClientImpl::paused):
        (WebKit::WebMediaPlayerClientImpl::supportsFullscreen):
        (WebKit::WebMediaPlayerClientImpl::supportsSave):
        (WebKit::WebMediaPlayerClientImpl::setVolume):
        (WebKit::WebMediaPlayerClientImpl::networkState):
        (WebKit::WebMediaPlayerClientImpl::readyState):
        (WebKit::WebMediaPlayerClientImpl::maxTimeSeekable):
        (WebKit::WebMediaPlayerClientImpl::buffered):
        (WebKit::WebMediaPlayerClientImpl::dataRate):
        (WebKit::WebMediaPlayerClientImpl::totalBytesKnown):
        (WebKit::WebMediaPlayerClientImpl::totalBytes):
        (WebKit::WebMediaPlayerClientImpl::bytesLoaded):
        (WebKit::WebMediaPlayerClientImpl::setSize):
        (WebKit::WebMediaPlayerClientImpl::paint):
        (WebKit::WebMediaPlayerClientImpl::setAutobuffer):
        (WebKit::WebMediaPlayerClientImpl::hasSingleSecurityOrigin):
        (WebKit::WebMediaPlayerClientImpl::movieLoadType):
        (WebKit::WebMediaPlayerClientImpl::create):
        (WebKit::WebMediaPlayerClientImpl::getSupportedTypes):
        (WebKit::WebMediaPlayerClientImpl::supportsType):
        (WebKit::WebMediaPlayerClientImpl::WebMediaPlayerClientImpl):
        * src/WebMediaPlayerClientImpl.h: Added.
        * src/WebNode.cpp: Added.
        (WebKit::WebNode::reset):
        (WebKit::WebNode::assign):
        (WebKit::WebNode::parentNode):
        (WebKit::WebNode::nodeName):
        (WebKit::WebNode::WebNode):
        (WebKit::WebNode::operator=):
        (WebKit::WebNode::operator WTF::PassRefPtr<WebCore::Node>):
        (WebKit::WebNode::frame):
        * src/WebNotification.cpp: Added.
        (WebKit::WebNotification::reset):
        (WebKit::WebNotification::assign):
        (WebKit::WebNotification::lessThan):
        (WebKit::WebNotification::isHTML):
        (WebKit::WebNotification::url):
        (WebKit::WebNotification::icon):
        (WebKit::WebNotification::title):
        (WebKit::WebNotification::body):
        (WebKit::WebNotification::dispatchDisplayEvent):
        (WebKit::WebNotification::dispatchErrorEvent):
        (WebKit::WebNotification::dispatchCloseEvent):
        (WebKit::WebNotification::WebNotification):
        (WebKit::WebNotification::operator=):
        (WebKit::WebNotification::operator WTF::PassRefPtr<Notification>):

2009-11-09  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Dimitri Glazkov.

        Up-streaming Chromium API src files: WebFileChooser...WebImageSkia

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

        * src/WebFileChooserCompletionImpl.cpp: Added.
        (WebKit::WebFileChooserCompletionImpl::WebFileChooserCompletionImpl):
        (WebKit::WebFileChooserCompletionImpl::~WebFileChooserCompletionImpl):
        (WebKit::WebFileChooserCompletionImpl::didChooseFile):
        * src/WebFileChooserCompletionImpl.h: Added.
        * src/WebFontCache.cpp: Added.
        (WebKit::WebFontCache::fontDataCount):
        (WebKit::WebFontCache::inactiveFontDataCount):
        (WebKit::WebFontCache::clear):
        * src/WebFormElement.cpp: Added.
        (WebKit::WebFormElement::WebFormElement):
        (WebKit::WebFormElement::operator=):
        (WebKit::WebFormElement::operator WTF::PassRefPtr<WebCore::HTMLFormElement>):
        (WebKit::WebFormElement::autoComplete):
        (WebKit::WebFormElement::action):
        (WebKit::WebFormElement::submit):
        (WebKit::WebFormElement::getNamedElements):
        * src/WebFrameImpl.cpp: Added.
        (WebKit::frameContentAsPlainText):
        (WebKit::ChromePrintContext::ChromePrintContext):
        (WebKit::ChromePrintContext::begin):
        (WebKit::ChromePrintContext::getPageShrink):
        (WebKit::ChromePrintContext::spoolPage):
        (WebKit::DataSourceForDocLoader):
        (WebKit::WebFrameImpl::DeferredScopeStringMatches::DeferredScopeStringMatches):
        (WebKit::WebFrameImpl::DeferredScopeStringMatches::doTimeout):
        (WebKit::WebFrame::frameForEnteredContext):
        (WebKit::WebFrame::frameForCurrentContext):
        (WebKit::WebFrameImpl::name):
        (WebKit::WebFrameImpl::url):
        (WebKit::WebFrameImpl::favIconURL):
        (WebKit::WebFrameImpl::openSearchDescriptionURL):
        (WebKit::WebFrameImpl::scrollOffset):
        (WebKit::WebFrameImpl::contentsSize):
        (WebKit::WebFrameImpl::contentsPreferredWidth):
        (WebKit::WebFrameImpl::hasVisibleContent):
        (WebKit::WebFrameImpl::view):
        (WebKit::WebFrameImpl::opener):
        (WebKit::WebFrameImpl::parent):
        (WebKit::WebFrameImpl::top):
        (WebKit::WebFrameImpl::firstChild):
        (WebKit::WebFrameImpl::lastChild):
        (WebKit::WebFrameImpl::nextSibling):
        (WebKit::WebFrameImpl::previousSibling):
        (WebKit::WebFrameImpl::traverseNext):
        (WebKit::WebFrameImpl::traversePrevious):
        (WebKit::WebFrameImpl::findChildByName):
        (WebKit::WebFrameImpl::findChildByExpression):
        (WebKit::WebFrameImpl::forms):
        (WebKit::WebFrameImpl::securityOrigin):
        (WebKit::WebFrameImpl::grantUniversalAccess):
        (WebKit::WebFrameImpl::windowObject):
        (WebKit::WebFrameImpl::bindToWindowObject):
        (WebKit::WebFrameImpl::executeScript):
        (WebKit::WebFrameImpl::executeScriptInNewContext):
        (WebKit::WebFrameImpl::executeScriptInIsolatedWorld):
        (WebKit::WebFrameImpl::addMessageToConsole):
        (WebKit::WebFrameImpl::collectGarbage):
        (WebKit::WebFrameImpl::mainWorldScriptContext):
        (WebKit::WebFrameImpl::insertStyleText):
        (WebKit::WebFrameImpl::reload):
        (WebKit::WebFrameImpl::loadRequest):
        (WebKit::WebFrameImpl::loadHistoryItem):
        (WebKit::WebFrameImpl::loadData):
        (WebKit::WebFrameImpl::loadHTMLString):
        (WebKit::WebFrameImpl::isLoading):
        (WebKit::WebFrameImpl::stopLoading):
        (WebKit::WebFrameImpl::provisionalDataSource):
        (WebKit::WebFrameImpl::dataSource):
        (WebKit::WebFrameImpl::previousHistoryItem):
        (WebKit::WebFrameImpl::currentHistoryItem):
        (WebKit::WebFrameImpl::enableViewSourceMode):
        (WebKit::WebFrameImpl::isViewSourceModeEnabled):
        (WebKit::WebFrameImpl::setReferrerForRequest):
        (WebKit::WebFrameImpl::dispatchWillSendRequest):
        (WebKit::WebFrameImpl::commitDocumentData):
        (WebKit::WebFrameImpl::unloadListenerCount):
        (WebKit::WebFrameImpl::isProcessingUserGesture):
        (WebKit::WebFrameImpl::willSuppressOpenerInNewFrame):
        (WebKit::WebFrameImpl::replaceSelection):
        (WebKit::WebFrameImpl::insertText):
        (WebKit::WebFrameImpl::setMarkedText):
        (WebKit::WebFrameImpl::unmarkText):
        (WebKit::WebFrameImpl::hasMarkedText):
        (WebKit::WebFrameImpl::markedRange):
        (WebKit::WebFrameImpl::executeCommand):
        (WebKit::WebFrameImpl::isCommandEnabled):
        (WebKit::WebFrameImpl::enableContinuousSpellChecking):
        (WebKit::WebFrameImpl::isContinuousSpellCheckingEnabled):
        (WebKit::WebFrameImpl::hasSelection):
        (WebKit::WebFrameImpl::selectionRange):
        (WebKit::WebFrameImpl::selectionAsText):
        (WebKit::WebFrameImpl::selectionAsMarkup):
        (WebKit::WebFrameImpl::printBegin):
        (WebKit::WebFrameImpl::getPrintPageShrink):
        (WebKit::WebFrameImpl::printPage):
        (WebKit::WebFrameImpl::printEnd):
        (WebKit::WebFrameImpl::find):
        (WebKit::WebFrameImpl::stopFinding):
        (WebKit::WebFrameImpl::scopeStringMatches):
        (WebKit::WebFrameImpl::cancelPendingScopingEffort):
        (WebKit::WebFrameImpl::increaseMatchCount):
        (WebKit::WebFrameImpl::reportFindInPageSelection):
        (WebKit::WebFrameImpl::resetMatchCount):
        (WebKit::WebFrameImpl::completeURL):
        (WebKit::WebFrameImpl::contentAsText):
        (WebKit::WebFrameImpl::contentAsMarkup):
        (WebKit::WebFrameImpl::create):
        (WebKit::WebFrameImpl::WebFrameImpl):
        (WebKit::WebFrameImpl::~WebFrameImpl):
        (WebKit::WebFrameImpl::initializeAsMainFrame):
        (WebKit::WebFrameImpl::createChildFrame):
        (WebKit::WebFrameImpl::layout):
        (WebKit::WebFrameImpl::paint):
        (WebKit::WebFrameImpl::createFrameView):
        (WebKit::WebFrameImpl::fromFrame):
        (WebKit::WebFrameImpl::viewImpl):
        (WebKit::WebFrameImpl::dataSourceImpl):
        (WebKit::WebFrameImpl::provisionalDataSourceImpl):
        (WebKit::WebFrameImpl::setFindEndstateFocusAndSelection):
        (WebKit::WebFrameImpl::didFail):
        (WebKit::WebFrameImpl::setAllowsScrolling):
        (WebKit::WebFrameImpl::registerPasswordListener):
        (WebKit::WebFrameImpl::getPasswordListener):
        (WebKit::WebFrameImpl::closing):
        (WebKit::WebFrameImpl::invalidateArea):
        (WebKit::WebFrameImpl::addMarker):
        (WebKit::WebFrameImpl::setMarkerActive):
        (WebKit::WebFrameImpl::ordinalOfFirstMatchForFrame):
        (WebKit::WebFrameImpl::shouldScopeMatches):
        (WebKit::WebFrameImpl::scopeStringMatchesSoon):
        (WebKit::WebFrameImpl::callScopeStringMatches):
        (WebKit::WebFrameImpl::invalidateIfNecessary):
        (WebKit::WebFrameImpl::clearPasswordListeners):
        (WebKit::WebFrameImpl::loadJavaScriptURL):
        * src/WebFrameImpl.h: Added.
        (WebKit::WebFrameImpl::liveObjectCount):
        (WebKit::WebFrameImpl::frame):
        (WebKit::WebFrameImpl::frameView):
        (WebKit::WebFrameImpl::activeMatchFrame):
        (WebKit::WebFrameImpl::client):
        (WebKit::WebFrameImpl::dropClient):
        (WebKit::WebFrameImpl::ClientHandle::create):
        (WebKit::WebFrameImpl::ClientHandle::client):
        (WebKit::WebFrameImpl::ClientHandle::dropClient):
        (WebKit::WebFrameImpl::ClientHandle::ClientHandle):
        (WebKit::WebFrameImpl::):
        * src/WebHTTPBody.cpp: Added.
        (WebKit::WebHTTPBody::initialize):
        (WebKit::WebHTTPBody::reset):
        (WebKit::WebHTTPBody::assign):
        (WebKit::WebHTTPBody::elementCount):
        (WebKit::WebHTTPBody::elementAt):
        (WebKit::WebHTTPBody::appendData):
        (WebKit::WebHTTPBody::appendFile):
        (WebKit::WebHTTPBody::identifier):
        (WebKit::WebHTTPBody::setIdentifier):
        (WebKit::WebHTTPBody::WebHTTPBody):
        (WebKit::WebHTTPBody::operator=):
        (WebKit::WebHTTPBody::operator PassRefPtr<FormData>):
        (WebKit::WebHTTPBody::ensureMutable):
        * src/WebHistoryItem.cpp: Added.
        (WebKit::WebHistoryItem::initialize):
        (WebKit::WebHistoryItem::reset):
        (WebKit::WebHistoryItem::assign):
        (WebKit::WebHistoryItem::urlString):
        (WebKit::WebHistoryItem::setURLString):
        (WebKit::WebHistoryItem::originalURLString):
        (WebKit::WebHistoryItem::setOriginalURLString):
        (WebKit::WebHistoryItem::referrer):
        (WebKit::WebHistoryItem::setReferrer):
        (WebKit::WebHistoryItem::target):
        (WebKit::WebHistoryItem::setTarget):
        (WebKit::WebHistoryItem::parent):
        (WebKit::WebHistoryItem::setParent):
        (WebKit::WebHistoryItem::title):
        (WebKit::WebHistoryItem::setTitle):
        (WebKit::WebHistoryItem::alternateTitle):
        (WebKit::WebHistoryItem::setAlternateTitle):
        (WebKit::WebHistoryItem::lastVisitedTime):
        (WebKit::WebHistoryItem::setLastVisitedTime):
        (WebKit::WebHistoryItem::scrollOffset):
        (WebKit::WebHistoryItem::setScrollOffset):
        (WebKit::WebHistoryItem::isTargetItem):
        (WebKit::WebHistoryItem::setIsTargetItem):
        (WebKit::WebHistoryItem::visitCount):
        (WebKit::WebHistoryItem::setVisitCount):
        (WebKit::WebHistoryItem::documentState):
        (WebKit::WebHistoryItem::setDocumentState):
        (WebKit::WebHistoryItem::httpContentType):
        (WebKit::WebHistoryItem::setHTTPContentType):
        (WebKit::WebHistoryItem::httpBody):
        (WebKit::WebHistoryItem::setHTTPBody):
        (WebKit::WebHistoryItem::children):
        (WebKit::WebHistoryItem::setChildren):
        (WebKit::WebHistoryItem::appendToChildren):
        (WebKit::WebHistoryItem::WebHistoryItem):
        (WebKit::WebHistoryItem::operator=):
        (WebKit::WebHistoryItem::operator PassRefPtr<HistoryItem>):
        (WebKit::WebHistoryItem::ensureMutable):
        * src/WebImageCG.cpp: Added.
        (WebKit::WebImage::fromData):
        (WebKit::WebImage::reset):
        (WebKit::WebImage::assign):
        (WebKit::WebImage::isNull):
        (WebKit::WebImage::size):
        (WebKit::WebImage::WebImage):
        (WebKit::WebImage::operator=):
        * src/WebImageSkia.cpp: Added.
        (WebKit::WebImage::fromData):
        (WebKit::WebImage::reset):
        (WebKit::WebImage::assign):
        (WebKit::WebImage::isNull):
        (WebKit::WebImage::size):
        (WebKit::WebImage::WebImage):
        (WebKit::WebImage::operator=):

2009-11-09  Yaar Schnitman  <yaar@chromium.src>

        Reviewed by Dimitri Glazkov.

        Up-streaming Chromium API src files: WebData...WebElement

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

        * src/WebData.cpp: Added.
        (WebKit::WebData::reset):
        (WebKit::WebData::assign):
        (WebKit::WebData::size):
        (WebKit::WebData::data):
        (WebKit::WebData::WebData):
        (WebKit::WebData::operator=):
        (WebKit::WebData::operator PassRefPtr<SharedBuffer>):
        * src/WebDataSourceImpl.cpp: Added.
        (WebKit::WebDataSourceImpl::create):
        (WebKit::WebDataSourceImpl::originalRequest):
        (WebKit::WebDataSourceImpl::request):
        (WebKit::WebDataSourceImpl::response):
        (WebKit::WebDataSourceImpl::hasUnreachableURL):
        (WebKit::WebDataSourceImpl::unreachableURL):
        (WebKit::WebDataSourceImpl::redirectChain):
        (WebKit::WebDataSourceImpl::pageTitle):
        (WebKit::WebDataSourceImpl::navigationType):
        (WebKit::WebDataSourceImpl::triggeringEventTime):
        (WebKit::WebDataSourceImpl::extraData):
        (WebKit::WebDataSourceImpl::setExtraData):
        (WebKit::WebDataSourceImpl::toWebNavigationType):
        (WebKit::WebDataSourceImpl::endOfRedirectChain):
        (WebKit::WebDataSourceImpl::clearRedirectChain):
        (WebKit::WebDataSourceImpl::appendRedirect):
        (WebKit::WebDataSourceImpl::setNextPluginLoadObserver):
        (WebKit::WebDataSourceImpl::WebDataSourceImpl):
        (WebKit::WebDataSourceImpl::~WebDataSourceImpl):
        * src/WebDataSourceImpl.h: Added.
        (WebKit::WebDataSourceImpl::fromDocumentLoader):
        (WebKit::WebDataSourceImpl::hasRedirectChain):
        (WebKit::WebDataSourceImpl::releasePluginLoadObserver):
        * src/WebDatabase.cpp: Added.
        (WebKit::WebDatabase::reset):
        (WebKit::WebDatabase::assign):
        (WebKit::WebDatabase::name):
        (WebKit::WebDatabase::displayName):
        (WebKit::WebDatabase::estimatedSize):
        (WebKit::WebDatabase::securityOrigin):
        (WebKit::WebDatabase::setObserver):
        (WebKit::WebDatabase::observer):
        (WebKit::WebDatabase::updateDatabaseSize):
        (WebKit::WebDatabase::WebDatabase):
        (WebKit::WebDatabase::operator=):
        (WebKit::WebDatabase::operator WTF::PassRefPtr<Database>):
        * src/WebDevToolsAgentPrivate.h: Added.
        * src/WebDragData.cpp: Added.
        (WebKit::WebDragData::initialize):
        (WebKit::WebDragData::reset):
        (WebKit::WebDragData::assign):
        (WebKit::WebDragData::url):
        (WebKit::WebDragData::setURL):
        (WebKit::WebDragData::urlTitle):
        (WebKit::WebDragData::setURLTitle):
        (WebKit::WebDragData::fileExtension):
        (WebKit::WebDragData::setFileExtension):
        (WebKit::WebDragData::hasFileNames):
        (WebKit::WebDragData::fileNames):
        (WebKit::WebDragData::setFileNames):
        (WebKit::WebDragData::appendToFileNames):
        (WebKit::WebDragData::plainText):
        (WebKit::WebDragData::setPlainText):
        (WebKit::WebDragData::htmlText):
        (WebKit::WebDragData::setHTMLText):
        (WebKit::WebDragData::htmlBaseURL):
        (WebKit::WebDragData::setHTMLBaseURL):
        (WebKit::WebDragData::fileContentFileName):
        (WebKit::WebDragData::setFileContentFileName):
        (WebKit::WebDragData::fileContent):
        (WebKit::WebDragData::setFileContent):
        (WebKit::WebDragData::WebDragData):
        (WebKit::WebDragData::operator=):
        (WebKit::WebDragData::operator WTF::PassRefPtr<WebCore::ChromiumDataObject>):
        (WebKit::WebDragData::ensureMutable):
        * src/WebElement.cpp: Added.
        (WebKit::WebElement::WebElement):
        (WebKit::WebElement::operator=):
        (WebKit::WebElement::operator WTF::PassRefPtr<Element>):

2009-11-09  Nate Chapin  <japhet@chromium.org>

        Reviewed by Dimitri Glazkov.

        WebPo*.h and WebRunetimeFeatures.h Chromium API headers.

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

        * public/WebPoint.h: Added.
        (WebKit::WebPoint::WebPoint):
        (WebKit::WebPoint::operator=):
        (WebKit::WebPoint::operator WebCore::IntPoint):
        (WebKit::WebPoint::operator gfx::Point):
        (WebKit::operator==):
        (WebKit::operator!=):
        * public/WebPopupMenu.h: Added.
        * public/WebPopupMenuInfo.h: Added.
        (WebKit::WebPopupMenuInfo::Item::):
        * public/WebRuntimeFeatures.h: Added.

2009-11-09  Nate Chapin  <japhet@chromium.org>

        Reviewed by Dimitri Glazkov.

        WebPa*.h and WebPl*.h Chromium API headers.

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

        * public/WebPasswordAutocompleteListener.h: Added.
        (WebKit::WebPasswordAutocompleteListener::~WebPasswordAutocompleteListener):
        * public/WebPasswordFormData.h: Added.
        (WebKit::WebPasswordFormData::isValid):
        * public/WebPlugin.h: Added.
        (WebKit::WebPlugin::~WebPlugin):
        * public/WebPluginContainer.h: Added.
        (WebKit::WebPluginContainer::~WebPluginContainer):
        * public/WebPluginListBuilder.h: Added.
        * public/WebPluginParams.h: Added.

2009-11-09  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Dimitri Glazkov.

        Up-streaming Chromium API src files: WebBindging ... WebCursorInfo

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

        * src/WebBindings.cpp: Added.
        (WebKit::WebBindings::construct):
        (WebKit::WebBindings::createObject):
        (WebKit::WebBindings::enumerate):
        (WebKit::WebBindings::evaluate):
        (WebKit::WebBindings::evaluateHelper):
        (WebKit::WebBindings::getIntIdentifier):
        (WebKit::WebBindings::getProperty):
        (WebKit::WebBindings::getStringIdentifier):
        (WebKit::WebBindings::getStringIdentifiers):
        (WebKit::WebBindings::hasMethod):
        (WebKit::WebBindings::hasProperty):
        (WebKit::WebBindings::identifierIsString):
        (WebKit::WebBindings::intFromIdentifier):
        (WebKit::WebBindings::initializeVariantWithStringCopy):
        (WebKit::WebBindings::invoke):
        (WebKit::WebBindings::invokeDefault):
        (WebKit::WebBindings::releaseObject):
        (WebKit::WebBindings::releaseVariantValue):
        (WebKit::WebBindings::removeProperty):
        (WebKit::WebBindings::retainObject):
        (WebKit::WebBindings::setException):
        (WebKit::WebBindings::setProperty):
        (WebKit::WebBindings::unregisterObject):
        (WebKit::WebBindings::utf8FromIdentifier):
        (WebKit::WebBindings::extractIdentifierData):
        (WebKit::getEvent):
        (WebKit::getDragDataImpl):
        (WebKit::getRangeImpl):
        (WebKit::WebBindings::getDragData):
        (WebKit::WebBindings::isDragEvent):
        (WebKit::WebBindings::getRange):
        * src/WebCString.cpp: Added.
        (WebKit::WebCString::reset):
        (WebKit::WebCString::assign):
        (WebKit::WebCString::length):
        (WebKit::WebCString::data):
        (WebKit::WebCString::utf16):
        (WebKit::WebCString::fromUTF16):
        (WebKit::WebCString::WebCString):
        (WebKit::WebCString::operator=):
        (WebKit::WebCString::operator WebCore::CString):
        * src/WebCache.cpp: Added.
        (WebKit::ToResourceTypeStat):
        (WebKit::WebCache::setCapacities):
        (WebKit::WebCache::clear):
        (WebKit::WebCache::getUsageStats):
        (WebKit::WebCache::getResourceTypeStats):
        * src/WebColor.cpp: Added.
        (WebKit::toCSSValueKeyword):
        (WebKit::setNamedColors):
        * src/WebCrossOriginPreflightResultCache.cpp: Added.
        (WebKit::WebCrossOriginPreflightResultCache::clear):
        * src/WebCursorInfo.cpp: Added.
        (WebKit::WebCursorInfo::WebCursorInfo):

2009-11-09  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Dimitri Glazkov.

        Up-streaming Chromium API src files: WebAccessibilty

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

        * src/WebAccessibilityCache.cpp: Added.
        (WebKit::WebAccessibilityCache::enableAccessibility):
        * src/WebAccessibilityCacheImpl.cpp: Added.
        (WebKit::toAccessibilityObject):
        (WebKit::WebAccessibilityCache::create):
        (WebKit::WebAccessibilityCacheImpl::WeakHandle::create):
        (WebKit::WebAccessibilityCacheImpl::WeakHandle::WeakHandle):
        (WebKit::WebAccessibilityCacheImpl::WeakHandle::detach):
        (WebKit::WebAccessibilityCacheImpl::WebAccessibilityCacheImpl):
        (WebKit::WebAccessibilityCacheImpl::~WebAccessibilityCacheImpl):
        (WebKit::WebAccessibilityCacheImpl::initialize):
        (WebKit::WebAccessibilityCacheImpl::getObjectById):
        (WebKit::WebAccessibilityCacheImpl::isValidId):
        (WebKit::WebAccessibilityCacheImpl::remove):
        (WebKit::WebAccessibilityCacheImpl::clear):
        (WebKit::WebAccessibilityCacheImpl::addOrGetId):
        * src/WebAccessibilityCacheImpl.h: Added.
        (WebKit::WebAccessibilityCacheImpl::isInitialized):
        * src/WebAccessibilityObject.cpp: Added.
        (WebKit::WebAccessibilityObject::reset):
        (WebKit::WebAccessibilityObject::assign):
        (WebKit::WebAccessibilityObject::accessibilityDescription):
        (WebKit::WebAccessibilityObject::actionVerb):
        (WebKit::WebAccessibilityObject::canSetFocusAttribute):
        (WebKit::WebAccessibilityObject::childCount):
        (WebKit::WebAccessibilityObject::childAt):
        (WebKit::WebAccessibilityObject::firstChild):
        (WebKit::WebAccessibilityObject::focusedChild):
        (WebKit::WebAccessibilityObject::lastChild):
        (WebKit::WebAccessibilityObject::nextSibling):
        (WebKit::WebAccessibilityObject::parentObject):
        (WebKit::WebAccessibilityObject::previousSibling):
        (WebKit::WebAccessibilityObject::isAnchor):
        (WebKit::WebAccessibilityObject::isChecked):
        (WebKit::WebAccessibilityObject::isFocused):
        (WebKit::WebAccessibilityObject::isEnabled):
        (WebKit::WebAccessibilityObject::isHovered):
        (WebKit::WebAccessibilityObject::isIndeterminate):
        (WebKit::WebAccessibilityObject::isMultiSelect):
        (WebKit::WebAccessibilityObject::isOffScreen):
        (WebKit::WebAccessibilityObject::isPasswordField):
        (WebKit::WebAccessibilityObject::isPressed):
        (WebKit::WebAccessibilityObject::isReadOnly):
        (WebKit::WebAccessibilityObject::isVisited):
        (WebKit::WebAccessibilityObject::boundingBoxRect):
        (WebKit::WebAccessibilityObject::helpText):
        (WebKit::WebAccessibilityObject::hitTest):
        (WebKit::WebAccessibilityObject::keyboardShortcut):
        (WebKit::WebAccessibilityObject::performDefaultAction):
        (WebKit::WebAccessibilityObject::roleValue):
        (WebKit::WebAccessibilityObject::stringValue):
        (WebKit::WebAccessibilityObject::title):
        (WebKit::WebAccessibilityObject::WebAccessibilityObject):
        (WebKit::WebAccessibilityObject::operator=):
        (WebKit::WebAccessibilityObject::operator WTF::PassRefPtr<WebCore::AccessibilityObject>):

2009-11-09  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Dimitri Glazkov.

        Upstreaming Chromium API: Platform specific files

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

        * public/gtk/WebFontInfo.h: Added.
        * public/gtk/WebInputEventFactory.h: Added.
        * public/gtk/WebScreenInfoFactory.h: Added.
        * public/linux/WebFontRendering.h: Added.
        * public/linux/WebSandboxSupport.h: Added.
        * public/mac/WebInputEventFactory.h: Added.
        * public/mac/WebScreenInfoFactory.h: Added.
        * public/win/WebInputEventFactory.h: Added.
        * public/win/WebSandboxSupport.h: Added.
        * public/win/WebScreenInfoFactory.h: Added.
        * public/win/WebThemeEngine.h: Added.
        * public/x11/WebScreenInfoFactory.h: Added.

2009-11-09  David Levin  <levin@chromium.org>

        Reviewed by Dmitry Titov.

        Change struct ResourceRequest to class ResourceRequest per
        http://trac.webkit.org/changeset/50625.

        * public/WebURLRequest.h:

2009-11-09  Nate Chapin  <japhet@chromium.org>

        Reviewed by Dimitri Glazkov.

        Upstream remaining Chromium API WebN*.h headers.

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

        * public/WebNonCopyable.h: Added.
        (WebKit::WebNonCopyable::WebNonCopyable):
        (WebKit::WebNonCopyable::~WebNonCopyable):
        * public/WebNotification.h: Added.
        (WebKit::WebNotification::WebNotification):
        (WebKit::WebNotification::~WebNotification):
        (WebKit::WebNotification::operator=):
        (WebKit::WebNotification::equals):
        (WebKit::operator==):
        (WebKit::operator!=):
        (WebKit::operator<):
        * public/WebNotificationPermissionCallback.h: Added.
        (WebKit::WebNotificationPermissionCallback::~WebNotificationPermissionCallback):
        * public/WebNotificationPresenter.h: Added.
        (WebKit::WebNotificationPresenter::):

2009-11-09  Nate Chapin  <japhet@chromium.org>

        Reviewed by Dimitri Glazkov.

        Upstream Chromium API headers WebMessage through WebNavigation.

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

        * public/WebMessagePortChannel.h: Added.
        (WebKit::WebMessagePortChannel::~WebMessagePortChannel):
        * public/WebMessagePortChannelClient.h: Added.
        (WebKit::WebMessagePortChannelClient::~WebMessagePortChannelClient):
        * public/WebMimeRegistry.h: Added.
        (WebKit::WebMimeRegistry::):
        (WebKit::WebMimeRegistry::~WebMimeRegistry):
        * public/WebNavigationPolicy.h: Added.
        (WebKit::):
        * public/WebNavigationType.h: Added.
        (WebKit::):

2009-11-09  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Dimitri Glazkov.

        Upstreaming the Chromium WebKit API: WebScreenInfo to WebSharedWorkerRepo.

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

        * public/WebScreenInfo.h: Added.
        (WebKit::WebScreenInfo::WebScreenInfo):
        * public/WebScriptController.h: Added.
        * public/WebScriptSource.h: Added.
        (WebKit::WebScriptSource::WebScriptSource):
        * public/WebSearchableFormData.h: Added.
        (WebKit::WebSearchableFormData::isValid):
        (WebKit::WebSearchableFormData::url):
        (WebKit::WebSearchableFormData::encoding):
        * public/WebSecurityOrigin.h: Added.
        (WebKit::WebSecurityOrigin::~WebSecurityOrigin):
        (WebKit::WebSecurityOrigin::WebSecurityOrigin):
        (WebKit::WebSecurityOrigin::operator=):
        (WebKit::WebSecurityOrigin::isNull):
        * public/WebSecurityPolicy.h: Added.
        * public/WebSettings.h: Added.
        (WebKit::WebSettings::~WebSettings):
        * public/WebSharedWorker.h: Added.
        (WebKit::WebSharedWorker::~WebSharedWorker):
        * public/WebSharedWorkerRepository.h: Added.

2009-11-09  Nate Chapin  <japhet@chromium.org>

        Reviewed by Dimitri Glazkov.

        Upstream Chromium API headers Webkit.h thru WebMediaPlayerClient.h.

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

        * public/WebKit.h: Added.
        * public/WebKitClient.h: Added.
        (WebKit::WebKitClient::~WebKitClient):
        * public/WebLocalizedString.h: Added.
        (WebKit::WebLocalizedString::):
        * public/WebMediaPlayer.h: Added.
        (WebKit::WebTimeRange::WebTimeRange):
        (WebKit::WebMediaPlayer::):
        (WebKit::WebMediaPlayer::~WebMediaPlayer):
        * public/WebMediaPlayerAction.h: Added.
        (WebKit::WebMediaPlayerAction::):
        (WebKit::WebMediaPlayerAction::WebMediaPlayerAction):
        * public/WebMediaPlayerClient.h: Added.
        (WebKit::WebMediaPlayerClient::~WebMediaPlayerClient):

2009-11-09  Nate Chapin  <japhet@chromium.org>

        Reviewed by Dimitri Glazkov.

        Upstream rest of WebH*.h and WebI*.h Chromium API headers.

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

        * public/WebHTTPBody.h: Added.
        (WebKit::WebHTTPBody::Element::):
        (WebKit::WebHTTPBody::~WebHTTPBody):
        (WebKit::WebHTTPBody::WebHTTPBody):
        (WebKit::WebHTTPBody::operator=):
        (WebKit::WebHTTPBody::isNull):
        * public/WebHTTPHeaderVisitor.h: Added.
        (WebKit::WebHTTPHeaderVisitor::~WebHTTPHeaderVisitor):
        * public/WebHistoryItem.h: Added.
        (WebKit::WebHistoryItem::~WebHistoryItem):
        (WebKit::WebHistoryItem::WebHistoryItem):
        (WebKit::WebHistoryItem::operator=):
        (WebKit::WebHistoryItem::isNull):
        * public/WebImage.h: Added.
        (WebKit::WebImage::~WebImage):
        (WebKit::WebImage::WebImage):
        (WebKit::WebImage::operator=):
        (WebKit::WebImage::getSkBitmap):
        (WebKit::WebImage::init):
        (WebKit::WebImage::getCGImageRef):
        * public/WebInputEvent.h: Added.
        (WebKit::WebInputEvent::WebInputEvent):
        (WebKit::WebInputEvent::):
        (WebKit::WebInputEvent::isKeyboardEventType):
        (WebKit::WebKeyboardEvent::WebKeyboardEvent):
        (WebKit::WebMouseEvent::):
        (WebKit::WebMouseEvent::WebMouseEvent):
        (WebKit::WebMouseWheelEvent::WebMouseWheelEvent):

2009-11-09  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Eric Seidel.

        Upstreaming the Chromium WebKit API: WebSockets and WebStorage.

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

        * public/WebSocketStreamError.h: Added.
        * public/WebSocketStreamHandle.h: Added.
        (WebKit::WebSocketStreamHandle::~WebSocketStreamHandle):
        * public/WebSocketStreamHandleClient.h: Added.
        * public/WebStorageArea.h: Added.
        (WebKit::WebStorageArea::~WebStorageArea):
        * public/WebStorageEventDispatcher.h: Added.
        (WebKit::WebStorageEventDispatcher::~WebStorageEventDispatcher):
        * public/WebStorageNamespace.h: Added.
        (WebKit::WebStorageNamespace::~WebStorageNamespace):

2009-11-09  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Dimitri Glazkov.

        Upstreaming the Chromium WebKit API: WebString and other basic objects.

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

        * public/WebRange.h: Added.
        (WebKit::WebRange::~WebRange):
        (WebKit::WebRange::WebRange):
        (WebKit::WebRange::operator=):
        (WebKit::WebRange::isNull):
        * public/WebRect.h: Added.
        (WebKit::WebRect::isEmpty):
        (WebKit::WebRect::WebRect):
        (WebKit::WebRect::operator=):
        (WebKit::WebRect::operator WebCore::IntRect):
        (WebKit::WebRect::operator gfx::Rect):
        (WebKit::operator==):
        (WebKit::operator!=):
        * public/WebSize.h: Added.
        (WebKit::WebSize::isEmpty):
        (WebKit::WebSize::WebSize):
        (WebKit::WebSize::operator=):
        (WebKit::WebSize::operator WebCore::IntSize):
        (WebKit::WebSize::operator gfx::Size):
        (WebKit::operator==):
        (WebKit::operator!=):
        * public/WebString.h: Added.
        (WebKit::WebString::~WebString):
        (WebKit::WebString::WebString):
        (WebKit::WebString::operator=):
        (WebKit::WebString::isEmpty):
        (WebKit::WebString::isNull):
        (WebKit::WebString::operator string16):
        (WebKit::WebString::operator NullableString16):
        (WebKit::WebString::fromUTF8):

2009-11-09  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Eric Seidel.

        Upstreaming the Chromium WebKit API: WebText*

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

        * public/WebTextAffinity.h: Added.
        (WebKit::):
        * public/WebTextDirection.h: Added.
        (WebKit::):

2009-11-09  Nate Chapin  <japhet@chromium.org>

        Reviewed by Dimitri Glazkov.

        Upstream remainder of WebE*.h and WebF*.h Chromium API headers.

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

        * public/WebEditingAction.h: Added.
        (WebKit::):
        * public/WebFileChooserCompletion.h: Added.
        (WebKit::WebFileChooserCompletion::~WebFileChooserCompletion):
        * public/WebFindOptions.h: Added.
        (WebKit::WebFindOptions::WebFindOptions):
        * public/WebFontCache.h: Added.
        * public/WebFrame.h: Added.
        (WebKit::WebFrame::~WebFrame):
        * public/WebFrameClient.h: Added.
        (WebKit::WebFrameClient::createPlugin):
        (WebKit::WebFrameClient::createWorker):
        (WebKit::WebFrameClient::createSharedWorker):
        (WebKit::WebFrameClient::createMediaPlayer):
        (WebKit::WebFrameClient::willClose):
        (WebKit::WebFrameClient::loadURLExternally):
        (WebKit::WebFrameClient::decidePolicyForNavigation):
        (WebKit::WebFrameClient::canHandleRequest):
        (WebKit::WebFrameClient::cannotHandleRequestError):
        (WebKit::WebFrameClient::cancelledError):
        (WebKit::WebFrameClient::unableToImplementPolicyWithError):
        (WebKit::WebFrameClient::willSubmitForm):
        (WebKit::WebFrameClient::willPerformClientRedirect):
        (WebKit::WebFrameClient::didCancelClientRedirect):
        (WebKit::WebFrameClient::didCompleteClientRedirect):
        (WebKit::WebFrameClient::didCreateDataSource):
        (WebKit::WebFrameClient::didStartProvisionalLoad):
        (WebKit::WebFrameClient::didReceiveServerRedirectForProvisionalLoad):
        (WebKit::WebFrameClient::didFailProvisionalLoad):
        (WebKit::WebFrameClient::didReceiveDocumentData):
        (WebKit::WebFrameClient::didCommitProvisionalLoad):
        (WebKit::WebFrameClient::didClearWindowObject):
        (WebKit::WebFrameClient::didCreateDocumentElement):
        (WebKit::WebFrameClient::didReceiveTitle):
        (WebKit::WebFrameClient::didFinishDocumentLoad):
        (WebKit::WebFrameClient::didHandleOnloadEvents):
        (WebKit::WebFrameClient::didFailLoad):
        (WebKit::WebFrameClient::didFinishLoad):
        (WebKit::WebFrameClient::didChangeLocationWithinPage):
        (WebKit::WebFrameClient::didUpdateCurrentHistoryItem):
        (WebKit::WebFrameClient::assignIdentifierToRequest):
        (WebKit::WebFrameClient::willSendRequest):
        (WebKit::WebFrameClient::didReceiveResponse):
        (WebKit::WebFrameClient::didFinishResourceLoad):
        (WebKit::WebFrameClient::didFailResourceLoad):
        (WebKit::WebFrameClient::didLoadResourceFromMemoryCache):
        (WebKit::WebFrameClient::didDisplayInsecureContent):
        (WebKit::WebFrameClient::didRunInsecureContent):
        (WebKit::WebFrameClient::allowScript):
        (WebKit::WebFrameClient::didExhaustMemoryAvailableForScript):
        (WebKit::WebFrameClient::didCreateScriptContext):
        (WebKit::WebFrameClient::didDestroyScriptContext):
        (WebKit::WebFrameClient::didCreateIsolatedScriptContext):
        (WebKit::WebFrameClient::didChangeContentsSize):
        (WebKit::WebFrameClient::didChangeScrollOffset):
        (WebKit::WebFrameClient::reportFindInPageMatchCount):
        (WebKit::WebFrameClient::reportFindInPageSelection):
        (WebKit::WebFrameClient::~WebFrameClient):

2009-11-09  Nate Chapin  <japhet@chromium.org>

        Reviewed by Dimitri Glazkov.

        Upstream WebDevTools*.h and WebDrag*.h Chromium API headers.

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

        * public/WebDevToolsAgent.h: Added.
        (WebKit::WebDevToolsAgent::~WebDevToolsAgent):
        * public/WebDevToolsAgentClient.h: Added.
        (WebKit::WebDevToolsAgentClient::~WebDevToolsAgentClient):
        * public/WebDevToolsFrontend.h: Added.
        (WebKit::WebDevToolsFrontend::~WebDevToolsFrontend):
        * public/WebDevToolsFrontendClient.h: Added.
        (WebKit::WebDevToolsFrontendClient::WebDevToolsFrontendClient):
        (WebKit::WebDevToolsFrontendClient::~WebDevToolsFrontendClient):
        * public/WebDragData.h: Added.
        (WebKit::WebDragData::~WebDragData):
        (WebKit::WebDragData::WebDragData):
        (WebKit::WebDragData::operator=):
        (WebKit::WebDragData::isNull):
        * public/WebDragOperation.h: Added.
        (WebKit::):

2009-11-09  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Dimitri Glazkov.

        Upstreaming the Chromium WebKit API: WebURL and friends.

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

        * public/WebURL.h: Added.
        (WebKit::WebURL::~WebURL):
        (WebKit::WebURL::WebURL):
        (WebKit::WebURL::operator=):
        (WebKit::WebURL::assign):
        (WebKit::WebURL::spec):
        (WebKit::WebURL::parsed):
        (WebKit::WebURL::isValid):
        (WebKit::WebURL::isEmpty):
        (WebKit::WebURL::isNull):
        (WebKit::WebURL::operator GURL):
        * public/WebURLError.h: Added.
        (WebKit::WebURLError::WebURLError):
        * public/WebURLLoader.h: Added.
        (WebKit::WebURLLoader::~WebURLLoader):
        * public/WebURLLoaderClient.h: Added.
        (WebKit::WebURLLoaderClient::~WebURLLoaderClient):
        * public/WebURLRequest.h: Added.
        (WebKit::WebURLRequest::):
        (WebKit::WebURLRequest::~WebURLRequest):
        (WebKit::WebURLRequest::WebURLRequest):
        (WebKit::WebURLRequest::operator=):
        * public/WebURLResponse.h: Added.
        (WebKit::WebURLResponse::~WebURLResponse):
        (WebKit::WebURLResponse::WebURLResponse):
        (WebKit::WebURLResponse::operator=):

2009-11-09  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Dimitri Glazkov.

        Upstreaming the Chromium WebKit API: WebVector to WebWorkerClient

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

        * public/WebVector.h: Added.
        (WebKit::WebVector::~WebVector):
        (WebKit::WebVector::WebVector):
        (WebKit::WebVector::operator=):
        (WebKit::WebVector::assign):
        (WebKit::WebVector::size):
        (WebKit::WebVector::isEmpty):
        (WebKit::WebVector::operator[]):
        (WebKit::WebVector::data):
        (WebKit::WebVector::swap):
        (WebKit::WebVector::initialize):
        (WebKit::WebVector::initializeFrom):
        (WebKit::WebVector::destroy):
        * public/WebView.h: Added.
        (WebKit::WebView::~WebView):
        * public/WebViewClient.h: Added.
        (WebKit::WebViewClient::createView):
        (WebKit::WebViewClient::createPopupMenu):
        (WebKit::WebViewClient::didAddMessageToConsole):
        (WebKit::WebViewClient::printPage):
        (WebKit::WebViewClient::notificationPresenter):
        (WebKit::WebViewClient::didStartLoading):
        (WebKit::WebViewClient::didStopLoading):
        (WebKit::WebViewClient::shouldBeginEditing):
        (WebKit::WebViewClient::shouldEndEditing):
        (WebKit::WebViewClient::shouldInsertNode):
        (WebKit::WebViewClient::shouldInsertText):
        (WebKit::WebViewClient::shouldChangeSelectedRange):
        (WebKit::WebViewClient::shouldDeleteRange):
        (WebKit::WebViewClient::shouldApplyStyle):
        (WebKit::WebViewClient::isSmartInsertDeleteEnabled):
        (WebKit::WebViewClient::isSelectTrailingWhitespaceEnabled):
        (WebKit::WebViewClient::setInputMethodEnabled):
        (WebKit::WebViewClient::didBeginEditing):
        (WebKit::WebViewClient::didChangeSelection):
        (WebKit::WebViewClient::didChangeContents):
        (WebKit::WebViewClient::didExecuteCommand):
        (WebKit::WebViewClient::didEndEditing):
        (WebKit::WebViewClient::handleCurrentKeyboardEvent):
        (WebKit::WebViewClient::spellCheck):
        (WebKit::WebViewClient::autoCorrectWord):
        (WebKit::WebViewClient::showSpellingUI):
        (WebKit::WebViewClient::isShowingSpellingUI):
        (WebKit::WebViewClient::updateSpellingUIWithMisspelledWord):
        (WebKit::WebViewClient::runFileChooser):
        (WebKit::WebViewClient::runModalAlertDialog):
        (WebKit::WebViewClient::runModalConfirmDialog):
        (WebKit::WebViewClient::runModalPromptDialog):
        (WebKit::WebViewClient::runModalBeforeUnloadDialog):
        (WebKit::WebViewClient::setStatusText):
        (WebKit::WebViewClient::setMouseOverURL):
        (WebKit::WebViewClient::setKeyboardFocusURL):
        (WebKit::WebViewClient::setToolTipText):
        (WebKit::WebViewClient::showContextMenu):
        (WebKit::WebViewClient::startDragging):
        (WebKit::WebViewClient::acceptsLoadDrops):
        (WebKit::WebViewClient::focusNext):
        (WebKit::WebViewClient::focusPrevious):
        (WebKit::WebViewClient::navigateBackForwardSoon):
        (WebKit::WebViewClient::historyBackListCount):
        (WebKit::WebViewClient::historyForwardListCount):
        (WebKit::WebViewClient::didAddHistoryItem):
        (WebKit::WebViewClient::focusAccessibilityObject):
        (WebKit::WebViewClient::didUpdateInspectorSettings):
        (WebKit::WebViewClient::queryAutofillSuggestions):
        (WebKit::WebViewClient::removeAutofillSuggestions):
        (WebKit::WebViewClient::~WebViewClient):
        * public/WebWidget.h: Added.
        (WebKit::WebWidget::~WebWidget):
        * public/WebWidgetClient.h: Added.
        (WebKit::WebWidgetClient::didInvalidateRect):
        (WebKit::WebWidgetClient::didScrollRect):
        (WebKit::WebWidgetClient::didFocus):
        (WebKit::WebWidgetClient::didBlur):
        (WebKit::WebWidgetClient::didChangeCursor):
        (WebKit::WebWidgetClient::closeWidgetSoon):
        (WebKit::WebWidgetClient::show):
        (WebKit::WebWidgetClient::runModal):
        (WebKit::WebWidgetClient::windowRect):
        (WebKit::WebWidgetClient::setWindowRect):
        (WebKit::WebWidgetClient::windowResizerRect):
        (WebKit::WebWidgetClient::rootWindowRect):
        (WebKit::WebWidgetClient::screenInfo):
        (WebKit::WebWidgetClient::~WebWidgetClient):
        * public/WebWorker.h: Added.
        (WebKit::WebWorker::~WebWorker):
        * public/WebWorkerClient.h: Added.
        (WebKit::WebWorkerClient::~WebWorkerClient):

2009-11-09  Nate Chapin  <japhet@chromium.org>

        Reviewed by Dimitri Glazkov.

        Upstream WebData*.h Chromium API files.

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

        * public/WebData.h: Added.
        (WebKit::WebData::~WebData):
        (WebKit::WebData::WebData):
        (WebKit::WebData::operator=):
        (WebKit::WebData::isEmpty):
        (WebKit::WebData::isNull):
        * public/WebDataSource.h: Added.
        (WebKit::WebDataSource::ExtraData::~ExtraData):
        (WebKit::WebDataSource::~WebDataSource):
        * public/WebDatabase.h: Added.
        (WebKit::WebDatabase::WebDatabase):
        (WebKit::WebDatabase::~WebDatabase):
        (WebKit::WebDatabase::operator=):
        (WebKit::WebDatabase::isNull):
        * public/WebDatabaseObserver.h: Added.
        (WebKit::WebDatabaseObserver::~WebDatabaseObserver):

2009-11-09  Nate Chapin  <japhet@chromium.org>

        Reviewed by Dimitri Glazkov.

        Upstream the last of the Chromium API WebC*.h files.

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

        * public/WebConsoleMessage.h: Added.
        (WebKit::WebConsoleMessage::):
        (WebKit::WebConsoleMessage::WebConsoleMessage):
        * public/WebContextMenuData.h: Added.
        (WebKit::WebContextMenuData::):
        * public/WebCookie.h: Added.
        (WebKit::WebCookie::WebCookie):
        * public/WebCrossOriginPreflightResultCache.h: Added.
        * public/WebCursorInfo.h: Added.
        (WebKit::WebCursorInfo::):
        (WebKit::WebCursorInfo::WebCursorInfo):

2009-11-09  Nate Chapin  <japhet@chromium.org>

        Reviewed by Dimitri Glazkov.

        More WebC*.h upstreaming.

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

        * public/WebCString.h: Added.
        (WebKit::WebCString::~WebCString):
        (WebKit::WebCString::WebCString):
        (WebKit::WebCString::operator=):
        (WebKit::WebCString::isEmpty):
        (WebKit::WebCString::isNull):
        (WebKit::WebCString::operator std::string):
        (WebKit::WebCString::fromUTF16):
        * public/WebColorName.h: Added.
        (WebKit::):
        * public/WebCommon.h: Added.
        * public/WebCommonWorkerClient.h: Added.
        (WebKit::WebCommonWorkerClient::~WebCommonWorkerClient):
        * public/WebCompositionCommand.h: Added.
        (WebKit::):

2009-11-09  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Dimitri Glazkov.

        Upstreaming the Chromium WebKit API: WebNode.h and friends are thin wrappers around WebCore::Nodes

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

        * public/WebElement.h: Added.
        (WebKit::WebElement::WebElement):
        (WebKit::WebElement::operator=):
        (WebKit::WebElement::assign):
        * public/WebFormElement.h: Added.
        (WebKit::WebFormElement::~WebFormElement):
        (WebKit::WebFormElement::WebFormElement):
        (WebKit::WebFormElement::operator=):
        (WebKit::WebFormElement::assign):
        * public/WebInputElement.h: Added.
        (WebKit::WebInputElement::WebInputElement):
        (WebKit::WebInputElement::operator=):
        (WebKit::WebInputElement::assign):
        * public/WebNode.h: Added.
        (WebKit::WebNode::~WebNode):
        (WebKit::WebNode::WebNode):
        (WebKit::WebNode::operator=):
        (WebKit::WebNode::isNull):
        (WebKit::WebNode::toElement):
        (WebKit::WebNode::unwrap):
        (WebKit::WebNode::constUnwrap):

2009-11-09  Nate Chapin  <japhet@chromium.org>

        Reviewed by Dimitri Glazkov.

        WebKit Chromium API upstreaming, WebBindings.h through WebColor.h.

        * public/WebBindings.h: Added.
        * public/WebCache.h: Added.
        * public/WebCanvas.h: Added.
        * public/WebClipboard.h: Added.
        (WebKit::WebClipboard::):
        (WebKit::WebClipboard::~WebClipboard):
        * public/WebColor.h: Added.

2009-11-09  Nate Chapin  <japhet@chromium.org>

        Reviewed by Dimitri Glazkov.

        Starting upstreaming the Chromium WebKit API.  public/ contains header files only.

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

        * ChangeLog: First!!
        * public: Added.
        * public/WebAccessibilityCache.h: Added.
        (WebKit::WebAccessibilityCache::WebAccessibilityCache):
        (WebKit::WebAccessibilityCache::~WebAccessibilityCache):
        * public/WebAccessibilityObject.h: Added.
        (WebKit::WebAccessibilityObject::~WebAccessibilityObject):
        (WebKit::WebAccessibilityObject::WebAccessibilityObject):
        (WebKit::WebAccessibilityObject::operator=):
        (WebKit::WebAccessibilityObject::isNull):
        * public/WebAccessibilityRole.h: Added.
        (WebKit::):
        * public/WebApplicationCacheHost.h: Added.
        (WebKit::WebApplicationCacheHost::):
        (WebKit::WebApplicationCacheHost::~WebApplicationCacheHost):
        * public/WebApplicationCacheHostClient.h: Added.
        (WebKit::WebApplicationCacheHostClient::~WebApplicationCacheHostClient):
