diff options
Diffstat (limited to 'WebKit/chromium')
64 files changed, 1905 insertions, 267 deletions
diff --git a/WebKit/chromium/ChangeLog b/WebKit/chromium/ChangeLog index 50ae8ae..452c79d 100644 --- a/WebKit/chromium/ChangeLog +++ b/WebKit/chromium/ChangeLog @@ -1,3 +1,803 @@ +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> + + 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. diff --git a/WebKit/chromium/DEPS b/WebKit/chromium/DEPS index c633a79..973e78d 100644 --- a/WebKit/chromium/DEPS +++ b/WebKit/chromium/DEPS @@ -32,9 +32,7 @@ vars = { 'chromium_svn': 'http://src.chromium.org/svn/trunk/src', - 'chromium_rev': '47248', - - 'pthreads-win32_rev': '26716', + 'chromium_rev': '49521', } deps = { @@ -82,7 +80,7 @@ deps = { 'googleurl': From('chromium_deps', 'src/googleurl'), - # webkit dependencis + # webkit dependencies 'webkit': Var('chromium_svn')+'/webkit@'+Var('chromium_rev'), 'app': @@ -91,10 +89,18 @@ deps = { Var('chromium_svn')+'/gpu@'+Var('chromium_rev'), 'media': Var('chromium_svn')+'/media@'+Var('chromium_rev'), + 'third_party/angle': # needed by the gpu process + From('chromium_deps', 'src/third_party/angle'), 'third_party/glew': # webgl related Var('chromium_svn')+'/third_party/glew@'+Var('chromium_rev'), 'third_party/ffmpeg': # needed by webkit/media - Var('chromium_svn')+'/third_party/ffmpeg@'+Var('chromium_rev'), + From('chromium_deps', 'src/third_party/ffmpeg'), + 'third_party/libvpx/include': + From('chromium_deps', 'src/third_party/libvpx/include'), + 'third_party/libvpx/lib': + From('chromium_deps', 'src/third_party/libvpx/lib'), + 'third_party/mesa': + Var('chromium_svn')+'/third_party/mesa@'+Var('chromium_rev'), 'third_party/yasm': # needed by ffmpeg Var('chromium_svn')+'/third_party/yasm@'+Var('chromium_rev'), 'third_party/openmax': # needed by webkit/media @@ -147,8 +153,8 @@ deps = { 'third_party/zlib': Var('chromium_svn')+'/third_party/zlib@'+Var('chromium_rev'), - 'third_party/ffmpeg/source/patched-ffmpeg-mt': - From('chromium_deps', 'src/third_party/ffmpeg/source/patched-ffmpeg-mt'), + 'third_party/mozilla': + Var('chromium_svn')+'/third_party/mozilla@'+Var('chromium_rev'), } deps_os = { @@ -159,9 +165,8 @@ deps_os = { From('chromium_deps', 'src/third_party/python_24'), 'third_party/ffmpeg/binaries/chromium/win/ia32': From('chromium_deps', 'src/third_party/ffmpeg/binaries/chromium/win/ia32'), - 'third_party/pthreads-win32': - 'http://src.chromium.org/svn/trunk/deps/third_party/pthreads-win32@'+Var('pthreads-win32_rev'), - # base.gypi depends on nss on Windows + 'third_party/lighttpd': + From('chromium_deps', 'src/third_party/lighttpd'), 'third_party/nss': From('chromium_deps', 'src/third_party/nss'), 'third_party/wtl': @@ -171,6 +176,8 @@ deps_os = { # needed by ffmpeg 'third_party/yasm/source/patched-yasm': From('chromium_deps', 'src/third_party/yasm/source/patched-yasm'), + 'third_party/nss': + From('chromium_deps', 'src/third_party/nss'), }, 'unix': { # Linux, actually. diff --git a/WebKit/chromium/WebKit.grd b/WebKit/chromium/WebKit.grd index a0783d7..1f80034 100644 --- a/WebKit/chromium/WebKit.grd +++ b/WebKit/chromium/WebKit.grd @@ -9,6 +9,7 @@ </outputs> <release seq="1"> <includes> + <include name="IDR_DEVTOOLS_DEBUGGER_SCRIPT_JS" file="src\js\DebuggerScript.js" type="BINDATA"/> <include name="IDR_DEVTOOLS_INJECT_DISPATCH_JS" file="src\js\InjectDispatch.js" type="BINDATA"/> <include name="IDR_DEVTOOLS_INJECT_WEBKIT_JS" file="..\..\WebCore\inspector\front-end\InjectedScript.js" type="BINDATA"/> </includes> diff --git a/WebKit/chromium/WebKit.gyp b/WebKit/chromium/WebKit.gyp index 937f4b3..83ae631 100644 --- a/WebKit/chromium/WebKit.gyp +++ b/WebKit/chromium/WebKit.gyp @@ -140,6 +140,7 @@ 'public/WebIDBDatabase.h', 'public/WebIDBDatabaseError.h', 'public/WebIDBIndex.h', + 'public/WebIDBObjectStore.h', 'public/WebIndexedDatabase.h', 'public/WebInputElement.h', 'public/WebInputEvent.h', @@ -269,6 +270,8 @@ 'src/IDBDatabaseProxy.h', 'src/IDBIndexProxy.cpp', 'src/IDBIndexProxy.h', + 'src/IDBObjectStoreProxy.cpp', + 'src/IDBObjectStoreProxy.h', 'src/IndexedDatabaseProxy.cpp', 'src/IndexedDatabaseProxy.h', 'src/InspectorClientImpl.cpp', @@ -358,6 +361,8 @@ 'src/WebIDBDatabaseImpl.h', 'src/WebIDBIndexImpl.cpp', 'src/WebIDBIndexImpl.h', + 'src/WebIDBObjectStoreImpl.cpp', + 'src/WebIDBObjectStoreImpl.h', 'src/WebImageCG.cpp', 'src/WebImageDecoder.cpp', 'src/WebImageSkia.cpp', @@ -518,6 +523,7 @@ '<(chromium_src_dir)/testing/gtest.gyp:gtest', '<(chromium_src_dir)/base/base.gyp:base', '<(chromium_src_dir)/base/base.gyp:base_i18n', + '<(chromium_src_dir)/gpu/gpu.gyp:gles2_c_lib', ], 'include_dirs': [ 'public', @@ -570,7 +576,9 @@ 'webkit', '../../JavaScriptCore/JavaScriptCore.gyp/JavaScriptCore.gyp:wtf_config', '<(chromium_src_dir)/third_party/icu/icu.gyp:icuuc', + '<(chromium_src_dir)/webkit/support/webkit_support.gyp:npapi_layout_test_plugin', '<(chromium_src_dir)/webkit/support/webkit_support.gyp:webkit_support', + '<(chromium_src_dir)/gpu/gpu.gyp:gles2_c_lib' ], 'include_dirs': [ '.', @@ -600,23 +608,20 @@ 'copies': [{ 'destination': '<(PRODUCT_DIR)', 'files': ['<(ahem_path)'], + }, { + # This should really be done in the 'npapi_layout_test_plugin' + # target, but the current VS generator handles 'copies' + # settings as AdditionalDependencies, which means that + # when it's over there, it tries to do the copy *before* + # the file is built, instead of after. We work around this + # by attaching the copy here, since it depends on that + # target. + 'destination': '<(PRODUCT_DIR)/plugins', + 'files': ['<(PRODUCT_DIR)/npapi_layout_test_plugin.dll'], }], - }], - ['OS=="mac"', { - 'dependencies': ['LayoutTestHelper'], - - 'mac_bundle_resources': [ - '<(ahem_path)', - '../../WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher100.ttf', - '../../WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher200.ttf', - '../../WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher300.ttf', - '../../WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher400.ttf', - '../../WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher500.ttf', - '../../WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher600.ttf', - '../../WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher700.ttf', - '../../WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher800.ttf', - '../../WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher900.ttf', - '<(SHARED_INTERMEDIATE_DIR)/webkit/textAreaResizeCorner.png', + },{ # OS!="win" + 'sources/': [ + ['exclude', 'Win\\.cpp$'], ], 'actions': [ { @@ -624,6 +629,7 @@ 'variables': { 'repack_path': '<(chromium_src_dir)/tools/data_pack/repack.py', 'pak_inputs': [ + '<(SHARED_INTERMEDIATE_DIR)/net/net_resources.pak', '<(SHARED_INTERMEDIATE_DIR)/webkit/webkit_chromium_resources.pak', '<(SHARED_INTERMEDIATE_DIR)/webkit/webkit_strings_en-US.pak', '<(SHARED_INTERMEDIATE_DIR)/webkit/webkit_resources.pak', @@ -640,31 +646,49 @@ }, ], # actions }], - ['OS=="linux"', { + ['OS=="mac"', { + 'dependencies': ['LayoutTestHelper'], + + 'mac_bundle_resources': [ + '<(ahem_path)', + '../../WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher100.ttf', + '../../WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher200.ttf', + '../../WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher300.ttf', + '../../WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher400.ttf', + '../../WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher500.ttf', + '../../WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher600.ttf', + '../../WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher700.ttf', + '../../WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher800.ttf', + '../../WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher900.ttf', + '<(SHARED_INTERMEDIATE_DIR)/webkit/textAreaResizeCorner.png', + ], + 'copies': [{ + 'destination': '<(PRODUCT_DIR)/DumpRenderTree.app/Contents/PlugIns/', + 'files': ['<(PRODUCT_DIR)/TestNetscapePlugIn.plugin/'], + }], + },{ # OS!="mac" + 'sources/': [ + # .mm is already excluded by common.gypi + ['exclude', 'Mac\\.cpp$'], + ] + }], + ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris"', { 'copies': [{ 'destination': '<(PRODUCT_DIR)', 'files': [ '<(ahem_path)', '../../WebKitTools/DumpRenderTree/chromium/fonts.conf', - ], + '<(INTERMEDIATE_DIR)/repack/DumpRenderTree.pak', + ] + }, { + 'destination': '<(PRODUCT_DIR)/plugins', + 'files': ['<(PRODUCT_DIR)/libnpapi_layout_test_plugin.so'], }], - }], - ['OS!="linux" and OS!="freebsd" and OS!="openbsd"', { + },{ # OS!="linux" and OS!="freebsd" and OS!="openbsd" and OS!="solaris" 'sources/': [ ['exclude', '(Gtk|Linux)\\.cpp$'] ] }], - ['OS!="win"', { - 'sources/': [ - ['exclude', 'Win\\.cpp$'], - ] - }], - ['OS!="mac"', { - 'sources/': [ - # .mm is already excluded by common.gypi - ['exclude', 'Mac\\.cpp$'], - ] - }], ], }, ], # targets diff --git a/WebKit/chromium/WebKit.gypi b/WebKit/chromium/WebKit.gypi index a9df3f5..69b1479 100644 --- a/WebKit/chromium/WebKit.gypi +++ b/WebKit/chromium/WebKit.gypi @@ -35,7 +35,6 @@ 'devtools_js_files': [ 'src/js/InspectorControllerImpl.js', 'src/js/DebuggerAgent.js', - 'src/js/DebuggerScript.js', 'src/js/ProfilerAgent.js', 'src/js/ProfilerProcessor.js', 'src/js/HeapProfilerPanel.js', diff --git a/WebKit/chromium/features.gypi b/WebKit/chromium/features.gypi index c7d40cf..9a23949 100644 --- a/WebKit/chromium/features.gypi +++ b/WebKit/chromium/features.gypi @@ -51,6 +51,7 @@ 'ENABLE_FILTERS=1', 'ENABLE_GEOLOCATION=1', 'ENABLE_ICONDATABASE=0', + 'ENABLE_IMAGE_RESIZER=0', 'ENABLE_INDEXED_DATABASE=1', 'ENABLE_JAVASCRIPT_DEBUGGER=1', 'ENABLE_JSC_MULTIPLE_THREADS=0', diff --git a/WebKit/chromium/gyp_webkit b/WebKit/chromium/gyp_webkit index 1ca6133..b7d2308 100755 --- a/WebKit/chromium/gyp_webkit +++ b/WebKit/chromium/gyp_webkit @@ -78,7 +78,11 @@ if __name__ == '__main__': # On linux, we want gyp to output a makefile (default is scons). if sys.platform == 'linux2': - args.extend(['-fmake']) + args.extend(['-fmake', + '--suffix=.chromium', + '--toplevel-dir=../..', + # auto_regeneration doesn't work with toplevel-dir + '-Gauto_regeneration=0']) # Other command args: args.extend([ @@ -90,7 +94,7 @@ if __name__ == '__main__': # gyp hack: otherwise gyp assumes its in chromium's src/ dir. '--depth=./', - # gyp files to execute. + # gyp file to execute. 'WebKit.gyp']) print 'Updating webkit projects from gyp files...' diff --git a/WebKit/chromium/public/WebDevToolsAgentClient.h b/WebKit/chromium/public/WebDevToolsAgentClient.h index 0f7421d..622f788 100644 --- a/WebKit/chromium/public/WebDevToolsAgentClient.h +++ b/WebKit/chromium/public/WebDevToolsAgentClient.h @@ -55,6 +55,7 @@ public: virtual WebCString injectedScriptSource() { return WebCString(); } virtual WebCString injectedScriptDispatcherSource() { return WebCString(); } + virtual WebCString debuggerScriptSource() { return WebCString(); } class WebKitClientMessageLoop { public: diff --git a/WebKit/chromium/public/WebIDBCallbacks.h b/WebKit/chromium/public/WebIDBCallbacks.h index bba7c74..0e28961 100644 --- a/WebKit/chromium/public/WebIDBCallbacks.h +++ b/WebKit/chromium/public/WebIDBCallbacks.h @@ -33,6 +33,7 @@ namespace WebKit { class WebIDBDatabase; class WebIDBDatabaseError; class WebIDBIndex; +class WebIDBObjectStore; class WebSerializedScriptValue; class WebIDBCallbacks { @@ -45,6 +46,7 @@ public: virtual void onSuccess() { WEBKIT_ASSERT_NOT_REACHED(); } // For "null". virtual void onSuccess(WebIDBDatabase*) { WEBKIT_ASSERT_NOT_REACHED(); } virtual void onSuccess(WebIDBIndex*) { WEBKIT_ASSERT_NOT_REACHED(); } + virtual void onSuccess(WebIDBObjectStore*) { WEBKIT_ASSERT_NOT_REACHED(); } virtual void onSuccess(const WebSerializedScriptValue&) { WEBKIT_ASSERT_NOT_REACHED(); } }; diff --git a/WebKit/chromium/public/WebIDBDatabase.h b/WebKit/chromium/public/WebIDBDatabase.h index 0f65c6f..b0d6086 100644 --- a/WebKit/chromium/public/WebIDBDatabase.h +++ b/WebKit/chromium/public/WebIDBDatabase.h @@ -31,15 +31,49 @@ namespace WebKit { +class WebFrame; +class WebIDBCallbacks; +class WebIDBObjectStore; + // See comment in WebIndexedDatabase for a high level overview of these classes. class WebIDBDatabase { public: virtual ~WebIDBDatabase() { } - virtual WebString name() { return WebString(); } - virtual WebString description() { return WebString(); } - virtual WebString version() { return WebString(); } - virtual WebDOMStringList objectStores() { return WebDOMStringList(); } + virtual WebString name() const + { + WEBKIT_ASSERT_NOT_REACHED(); + return WebString(); + } + virtual WebString description() const + { + WEBKIT_ASSERT_NOT_REACHED(); + return WebString(); + } + virtual WebString version() const + { + WEBKIT_ASSERT_NOT_REACHED(); + return WebString(); + } + virtual WebDOMStringList objectStores() const + { + WEBKIT_ASSERT_NOT_REACHED(); + return WebDOMStringList(); + } + virtual void createObjectStore(const WebString& name, const WebString& keyPath, bool autoIncrement, WebIDBCallbacks*) + { + WEBKIT_ASSERT_NOT_REACHED(); + } + // Transfers ownership of the WebIDBObjectStore to the caller. + virtual WebIDBObjectStore* objectStore(const WebString& name, unsigned short mode) + { + WEBKIT_ASSERT_NOT_REACHED(); + return 0; + } + virtual void removeObjectStore(const WebString& name, WebIDBCallbacks* callbacks) + { + WEBKIT_ASSERT_NOT_REACHED(); + } }; } // namespace WebKit diff --git a/WebKit/chromium/public/WebIDBObjectStore.h b/WebKit/chromium/public/WebIDBObjectStore.h new file mode 100755 index 0000000..fead881 --- /dev/null +++ b/WebKit/chromium/public/WebIDBObjectStore.h @@ -0,0 +1,75 @@ +/* + * Copyright (C) 2010 Google Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef WebIDBObjectStore_h +#define WebIDBObjectStore_h + +#include "WebCommon.h" +#include "WebDOMStringList.h" +#include "WebIDBCallbacks.h" +#include "WebString.h" + +namespace WebKit { + +// See comment in WebIndexedDatabase for a high level overview these classes. +class WebIDBObjectStore { +public: + virtual ~WebIDBObjectStore() { } + + virtual WebString name() const + { + WEBKIT_ASSERT_NOT_REACHED(); + return WebString(); + } + virtual WebString keyPath() const + { + WEBKIT_ASSERT_NOT_REACHED(); + return WebString(); + } + virtual WebDOMStringList indexNames() const + { + WEBKIT_ASSERT_NOT_REACHED(); + return WebDOMStringList(); + } + void createIndex(const WebString& name, const WebString& keyPath, bool unique, WebIDBCallbacks*) + { + WEBKIT_ASSERT_NOT_REACHED(); + } + // Transfers ownership of the WebIDBIndex to the caller. + WebIDBIndex* index(const WebString& name) + { + WEBKIT_ASSERT_NOT_REACHED(); + return 0; + } + void removeIndex(const WebString& name, WebIDBCallbacks*) + { + WEBKIT_ASSERT_NOT_REACHED(); + } + // FIXME: finish. +}; + +} // namespace WebKit + +#endif // WebIDBObjectStore_h diff --git a/WebKit/chromium/public/WebIndexedDatabase.h b/WebKit/chromium/public/WebIndexedDatabase.h index 8e4bf5b..5517a0c 100644 --- a/WebKit/chromium/public/WebIndexedDatabase.h +++ b/WebKit/chromium/public/WebIndexedDatabase.h @@ -51,16 +51,16 @@ public: virtual ~WebIndexedDatabase() { } // The WebKit implementation of open ignores the WebFrame* parameter. - virtual void open(const WebString& name, const WebString& description, - WebIDBCallbacks* callbacks, const WebSecurityOrigin& origin, WebFrame* webFrame, int& exceptionCode) + virtual void open(const WebString& name, const WebString& description, WebIDBCallbacks* callbacks, const WebSecurityOrigin& origin, WebFrame* webFrame) { - open(name, description, false, callbacks, origin, webFrame, exceptionCode); + int exceptionCode; + open(name, description, callbacks, origin, webFrame, exceptionCode); } // FIXME: Delete soon. Compatability hack. - virtual void open(const WebString& name, const WebString& description, bool modifyDatabase, + virtual void open(const WebString& name, const WebString& description, WebIDBCallbacks* callbacks, const WebSecurityOrigin& origin, WebFrame* webFrame, int& exceptionCode) { - open(name, description, callbacks, origin, webFrame, exceptionCode); + open(name, description, callbacks, origin, webFrame); } }; diff --git a/WebKit/chromium/public/WebInputElement.h b/WebKit/chromium/public/WebInputElement.h index 0de96a7..95f8aa7 100644 --- a/WebKit/chromium/public/WebInputElement.h +++ b/WebKit/chromium/public/WebInputElement.h @@ -86,8 +86,11 @@ namespace WebKit { WEBKIT_API bool isActivatedSubmit() const; WEBKIT_API void setActivatedSubmit(bool); WEBKIT_API int size() const; - WEBKIT_API void setValue(const WebString& value); + WEBKIT_API void setValue(const WebString&); WEBKIT_API WebString value() const; + WEBKIT_API void setPlaceholder(const WebString&); + WEBKIT_API WebString placeholder() const; + WEBKIT_API bool isAutofilled() const; WEBKIT_API void setAutofilled(bool); WEBKIT_API void dispatchFormControlChangeEvent(); WEBKIT_API void setSelectionRange(int, int); diff --git a/WebKit/chromium/public/WebURLResponse.h b/WebKit/chromium/public/WebURLResponse.h index b3c084c..4462394 100644 --- a/WebKit/chromium/public/WebURLResponse.h +++ b/WebKit/chromium/public/WebURLResponse.h @@ -131,6 +131,10 @@ public: WEBKIT_API bool wasNpnNegotiated() const; WEBKIT_API void setWasNpnNegotiated(bool); + // Flag whether this request was loaded via an explicit proxy (HTTP, SOCKS, etc). + WEBKIT_API bool wasFetchedViaProxy() const; + WEBKIT_API void setWasFetchedViaProxy(bool); + // Flag whether this request is part of a multipart response. WEBKIT_API bool isMultipartPayload() const; WEBKIT_API void setIsMultipartPayload(bool); diff --git a/WebKit/chromium/public/WebView.h b/WebKit/chromium/public/WebView.h index 56ea68d..9054d8c 100644 --- a/WebKit/chromium/public/WebView.h +++ b/WebKit/chromium/public/WebView.h @@ -169,6 +169,11 @@ public: const WebPoint& clientPoint, const WebPoint& screenPoint, WebDragOperation operation) = 0; + // Notifies the WebView that a drag is going on. + virtual void dragSourceMovedTo( + const WebPoint& clientPoint, const WebPoint& screenPoint, + WebDragOperation operation) = 0; + // Notfies the WebView that the system drag and drop operation has ended. virtual void dragSourceSystemDragEnded() = 0; diff --git a/WebKit/chromium/public/WebViewClient.h b/WebKit/chromium/public/WebViewClient.h index e0fe71d..31ef028 100644 --- a/WebKit/chromium/public/WebViewClient.h +++ b/WebKit/chromium/public/WebViewClient.h @@ -202,6 +202,9 @@ public: virtual bool runModalBeforeUnloadDialog( WebFrame*, const WebString& message) { return true; } + virtual bool supportsFullscreen() { return false; } + virtual void enterFullscreenForNode(const WebNode&) { } + virtual void exitFullscreenForNode(const WebNode&) { } // UI ------------------------------------------------------------------ @@ -273,7 +276,7 @@ public: virtual void didUpdateInspectorSetting(const WebString& key, const WebString& value) { } - // Autofill ------------------------------------------------------------ + // AutoFill ------------------------------------------------------------ // Queries the browser for suggestions to be shown for the form text // field named |name|. |value| is the text entered by the user so @@ -282,18 +285,33 @@ public: const WebString& name, const WebString& value) { } - // Instructs the browser to remove the autofill entry specified from + // Instructs the browser to remove the Autocomplete entry specified from // its DB. + // FIXME: This method should be named removeAutocompleteSugestion. virtual void removeAutofillSuggestions(const WebString& name, const WebString& value) { } - // Informs the browser that the user has selected an AutoFill suggestion - // for a WebNode. |name| and |label| form a key into the set of AutoFill - // profiles. + // Informs the browser that the user has accepted an AutoFill suggestion for + // a WebNode. |name| and |label| form a key into the set of AutoFill + // profiles. |index| is an index of the selected suggestion in the list of + // suggestions provided by the client virtual void didAcceptAutoFillSuggestion(const WebNode&, const WebString& name, + const WebString& label, + unsigned index) { } + + // Informs the browser that the user has selected an AutoFill suggestion for + // a WebNode. This happens when the user hovers over a suggestion or uses + // the arrow keys to navigate to a suggestion. + virtual void didSelectAutoFillSuggestion(const WebNode&, + const WebString& name, const WebString& label) { } + // Informs the browser that the user has cleared the selection from the + // AutoFill suggestions dropdown. This happens when a user uses the arrow + // keys to navigate outside the range of possible selections. + virtual void didClearAutoFillSelection(const WebNode&) { } + // Geolocation --------------------------------------------------------- // Access the embedder API for geolocation services. diff --git a/WebKit/chromium/src/AutoFillPopupMenuClient.cpp b/WebKit/chromium/src/AutoFillPopupMenuClient.cpp index 4f8793a..8084aad 100644 --- a/WebKit/chromium/src/AutoFillPopupMenuClient.cpp +++ b/WebKit/chromium/src/AutoFillPopupMenuClient.cpp @@ -44,14 +44,25 @@ namespace WebKit { unsigned AutoFillPopupMenuClient::getSuggestionsCount() const { - return m_names.size(); + return m_names.size() + ((m_separatorIndex == -1) ? 0 : 1); } WebString AutoFillPopupMenuClient::getSuggestion(unsigned listIndex) const { + if (listIndex == static_cast<unsigned>(m_separatorIndex)) + return WebString(); + + if (m_separatorIndex != -1 && listIndex > static_cast<unsigned>(m_separatorIndex)) + --listIndex; + // FIXME: Modify the PopupMenu to add the label in gray right-justified. ASSERT(listIndex >= 0 && listIndex < m_names.size()); - return m_names[listIndex] + String(" (") + m_labels[listIndex] + String(")"); + + WebString suggestion = m_names[listIndex]; + if (m_labels[listIndex].isEmpty()) + return suggestion; + + return suggestion + String(" (") + m_labels[listIndex] + String(")"); } void AutoFillPopupMenuClient::removeSuggestionAtIndex(unsigned listIndex) @@ -64,37 +75,85 @@ void AutoFillPopupMenuClient::removeSuggestionAtIndex(unsigned listIndex) void AutoFillPopupMenuClient::valueChanged(unsigned listIndex, bool fireEvents) { + WebViewImpl* webView = getWebView(); + if (!webView) + return; + + if (m_separatorIndex != -1 && listIndex > static_cast<unsigned>(m_separatorIndex)) + --listIndex; + ASSERT(listIndex >= 0 && listIndex < m_names.size()); + webView->client()->didAcceptAutoFillSuggestion(WebNode(getTextField()), + m_names[listIndex], + m_labels[listIndex], + listIndex); +} + +void AutoFillPopupMenuClient::selectionChanged(unsigned listIndex, bool fireEvents) +{ WebViewImpl* webView = getWebView(); if (!webView) return; - webView->client()->didAcceptAutoFillSuggestion(WebNode(getTextField()), + if (m_separatorIndex != -1 && listIndex > static_cast<unsigned>(m_separatorIndex)) + --listIndex; + + ASSERT(listIndex >= 0 && listIndex < m_names.size()); + + webView->client()->didSelectAutoFillSuggestion(WebNode(getTextField()), m_names[listIndex], m_labels[listIndex]); } +void AutoFillPopupMenuClient::selectionCleared() +{ + WebViewImpl* webView = getWebView(); + if (!webView) + return; + + webView->suggestionsPopupDidHide(); + webView->client()->didClearAutoFillSelection(WebNode(getTextField())); +} + +void AutoFillPopupMenuClient::popupDidHide() +{ + // FIXME: Refactor this method, as selectionCleared() and popupDidHide() + // share the exact same functionality. + WebViewImpl* webView = getWebView(); + if (!webView) + return; + + webView->client()->didClearAutoFillSelection(WebNode(getTextField())); +} + +bool AutoFillPopupMenuClient::itemIsSeparator(unsigned listIndex) const +{ + return (m_separatorIndex != -1 && static_cast<unsigned>(m_separatorIndex) == listIndex); +} + void AutoFillPopupMenuClient::initialize( HTMLInputElement* textField, const WebVector<WebString>& names, const WebVector<WebString>& labels, - int defaultSuggestionIndex) + int separatorIndex) { ASSERT(names.size() == labels.size()); - ASSERT(defaultSuggestionIndex < static_cast<int>(names.size())); + ASSERT(separatorIndex < static_cast<int>(names.size())); // The suggestions must be set before initializing the // SuggestionsPopupMenuClient. - setSuggestions(names, labels); + setSuggestions(names, labels, separatorIndex); - SuggestionsPopupMenuClient::initialize(textField, defaultSuggestionIndex); + SuggestionsPopupMenuClient::initialize(textField, -1); } void AutoFillPopupMenuClient::setSuggestions(const WebVector<WebString>& names, - const WebVector<WebString>& labels) + const WebVector<WebString>& labels, + int separatorIndex) { ASSERT(names.size() == labels.size()); + ASSERT(separatorIndex < static_cast<int>(names.size())); m_names.clear(); m_labels.clear(); @@ -103,6 +162,8 @@ void AutoFillPopupMenuClient::setSuggestions(const WebVector<WebString>& names, m_labels.append(labels[i]); } + m_separatorIndex = separatorIndex; + // Try to preserve selection if possible. if (getSelectedIndex() >= static_cast<int>(names.size())) setSelectedIndex(-1); diff --git a/WebKit/chromium/src/AutoFillPopupMenuClient.h b/WebKit/chromium/src/AutoFillPopupMenuClient.h index 568ce4d..488bdb1 100644 --- a/WebKit/chromium/src/AutoFillPopupMenuClient.h +++ b/WebKit/chromium/src/AutoFillPopupMenuClient.h @@ -52,18 +52,26 @@ public: // WebCore::PopupMenuClient implementation: virtual void valueChanged(unsigned listIndex, bool fireEvents = true); + virtual void selectionChanged(unsigned listIndex, bool fireEvents = true); + virtual void selectionCleared(); + virtual void popupDidHide(); + virtual bool itemIsSeparator(unsigned listIndex) const; void initialize(WebCore::HTMLInputElement*, const WebVector<WebString>& names, const WebVector<WebString>& labels, - int defaultSuggestionIndex); + int separatorIndex); void setSuggestions(const WebVector<WebString>& names, - const WebVector<WebString>& labels); + const WebVector<WebString>& labels, + int separatorIndex); private: Vector<WebCore::String> m_names; Vector<WebCore::String> m_labels; + + // The index of the separator. -1 if there is no separator. + int m_separatorIndex; }; } // namespace WebKit diff --git a/WebKit/chromium/src/ChromeClientImpl.cpp b/WebKit/chromium/src/ChromeClientImpl.cpp index d54f328..559a62b 100644 --- a/WebKit/chromium/src/ChromeClientImpl.cpp +++ b/WebKit/chromium/src/ChromeClientImpl.cpp @@ -48,6 +48,7 @@ #include "WebGeolocationService.h" #include "GeolocationServiceChromium.h" #include "GraphicsLayer.h" +#include "HTMLNames.h" #include "HitTestResult.h" #include "IntRect.h" #include "Node.h" @@ -159,35 +160,8 @@ float ChromeClientImpl::scaleFactor() void ChromeClientImpl::focus() { - if (!m_webView->client()) - return; - - m_webView->client()->didFocus(); - - // If accessibility is enabled, we should notify assistive technology that - // the active AccessibilityObject changed. - const Frame* frame = m_webView->focusedWebCoreFrame(); - if (!frame) - return; - - Document* doc = frame->document(); - - if (doc && doc->axObjectCache()->accessibilityEnabled()) { - Node* focusedNode = m_webView->focusedWebCoreNode(); - - if (!focusedNode) { - // Could not retrieve focused Node. - return; - } - - // Retrieve the focused AccessibilityObject. - AccessibilityObject* focusedAccObj = - doc->axObjectCache()->getOrCreate(focusedNode->renderer()); - - // Alert assistive technology that focus changed. - if (focusedAccObj) - m_webView->client()->focusAccessibilityObject(WebAccessibilityObject(focusedAccObj)); - } + if (m_webView->client()) + m_webView->client()->didFocus(); } void ChromeClientImpl::unfocus() @@ -217,17 +191,37 @@ void ChromeClientImpl::focusedNodeChanged(Node* node) { m_webView->client()->focusedNodeChanged(WebNode(node)); - WebURL focus_url; + WebURL focusURL; if (node && node->isLink()) { // This HitTestResult hack is the easiest way to get a link URL out of a // WebCore::Node. - HitTestResult hit_test(IntPoint(0, 0)); + HitTestResult hitTest(IntPoint(0, 0)); // This cast must be valid because of the isLink() check. - hit_test.setURLElement(reinterpret_cast<Element*>(node)); - if (hit_test.isLiveLink()) - focus_url = hit_test.absoluteLinkURL(); + hitTest.setURLElement(static_cast<Element*>(node)); + if (hitTest.isLiveLink()) + focusURL = hitTest.absoluteLinkURL(); + } + m_webView->client()->setKeyboardFocusURL(focusURL); + + if (!node) + return; + + // If accessibility is enabled, we should notify assistive technology that + // the active AccessibilityObject changed. + Document* document = node->document(); + if (!document) { + ASSERT_NOT_REACHED(); + return; + } + if (document && document->axObjectCache()->accessibilityEnabled()) { + // Retrieve the focused AccessibilityObject. + AccessibilityObject* focusedAccObj = + document->axObjectCache()->getOrCreate(node->renderer()); + + // Alert assistive technology that focus changed. + if (focusedAccObj) + m_webView->client()->focusAccessibilityObject(WebAccessibilityObject(focusedAccObj)); } - m_webView->client()->setKeyboardFocusURL(focus_url); } Page* ChromeClientImpl::createWindow( @@ -736,4 +730,23 @@ void ChromeClientImpl::scheduleCompositingLayerSync() } #endif +bool ChromeClientImpl::supportsFullscreenForNode(const WebCore::Node* node) +{ + if (m_webView->client() && node->hasTagName(WebCore::HTMLNames::videoTag)) + return m_webView->client()->supportsFullscreen(); + return false; +} + +void ChromeClientImpl::enterFullscreenForNode(WebCore::Node* node) +{ + if (m_webView->client()) + m_webView->client()->enterFullscreenForNode(WebNode(node)); +} + +void ChromeClientImpl::exitFullscreenForNode(WebCore::Node* node) +{ + if (m_webView->client()) + m_webView->client()->exitFullscreenForNode(WebNode(node)); +} + } // namespace WebKit diff --git a/WebKit/chromium/src/ChromeClientImpl.h b/WebKit/chromium/src/ChromeClientImpl.h index 3b5ebd5..84355c3 100644 --- a/WebKit/chromium/src/ChromeClientImpl.h +++ b/WebKit/chromium/src/ChromeClientImpl.h @@ -146,6 +146,10 @@ public: // to do an eager layout before the drawing. virtual void scheduleCompositingLayerSync(); #endif + virtual bool supportsFullscreenForNode(const WebCore::Node*); + virtual void enterFullscreenForNode(WebCore::Node*); + virtual void exitFullscreenForNode(WebCore::Node*); + // ChromeClientChromium methods: virtual void popupOpened(WebCore::PopupContainer* popupContainer, const WebCore::IntRect& bounds, diff --git a/WebKit/chromium/src/DebuggerAgent.h b/WebKit/chromium/src/DebuggerAgent.h index 7f3dbbb..17cde11 100644 --- a/WebKit/chromium/src/DebuggerAgent.h +++ b/WebKit/chromium/src/DebuggerAgent.h @@ -40,10 +40,7 @@ namespace WebKit { METHOD0(getContextId) \ \ /* Request v8 to process all debug commands in the queue. */ \ - METHOD0(processDebugCommands) \ - \ - /* Push DebuggerScript.js content to the agent. */ \ - METHOD1(setDebuggerScriptSource, String) + METHOD0(processDebugCommands) DEFINE_RPC_CLASS(DebuggerAgent, DEBUGGER_AGENT_STRUCT) diff --git a/WebKit/chromium/src/DebuggerAgentImpl.cpp b/WebKit/chromium/src/DebuggerAgentImpl.cpp index 673482a..dde9e1d 100644 --- a/WebKit/chromium/src/DebuggerAgentImpl.cpp +++ b/WebKit/chromium/src/DebuggerAgentImpl.cpp @@ -79,11 +79,6 @@ void DebuggerAgentImpl::processDebugCommands() v8::Debug::ProcessDebugMessages(); } -void DebuggerAgentImpl::setDebuggerScriptSource(const String& source) -{ - WebCore::ScriptDebugServer::shared().setDebuggerScriptSource(source); -} - void DebuggerAgentImpl::debuggerOutput(const String& command) { m_delegate->debuggerOutput(command); diff --git a/WebKit/chromium/src/DebuggerAgentImpl.h b/WebKit/chromium/src/DebuggerAgentImpl.h index bd9ddf6..0e6e6af 100644 --- a/WebKit/chromium/src/DebuggerAgentImpl.h +++ b/WebKit/chromium/src/DebuggerAgentImpl.h @@ -60,7 +60,6 @@ public: // DebuggerAgent implementation. virtual void getContextId(); virtual void processDebugCommands(); - virtual void setDebuggerScriptSource(const String&); void debuggerOutput(const WebCore::String& out); diff --git a/WebKit/chromium/src/GraphicsContext3D.cpp b/WebKit/chromium/src/GraphicsContext3D.cpp index 7c5635b..0681675 100644 --- a/WebKit/chromium/src/GraphicsContext3D.cpp +++ b/WebKit/chromium/src/GraphicsContext3D.cpp @@ -41,7 +41,7 @@ #include "ImageData.h" #include "WebGLBuffer.h" #include "Int8Array.h" -#include "FloatArray.h" +#include "Float32Array.h" #include "WebGLFramebuffer.h" #include "Int32Array.h" #include "WebGLProgram.h" diff --git a/WebKit/chromium/src/IDBCallbacksProxy.cpp b/WebKit/chromium/src/IDBCallbacksProxy.cpp index 3e5f00a..42be08d 100644 --- a/WebKit/chromium/src/IDBCallbacksProxy.cpp +++ b/WebKit/chromium/src/IDBCallbacksProxy.cpp @@ -35,6 +35,7 @@ #include "WebIDBDatabaseImpl.h" #include "WebIDBDatabaseError.h" #include "WebIDBIndexImpl.h" +#include "WebIDBObjectStoreImpl.h" #include "WebSerializedScriptValue.h" #if ENABLE(INDEXED_DATABASE) @@ -79,6 +80,12 @@ void IDBCallbacksProxy::onSuccess(PassRefPtr<IDBIndex> idbIndex) m_callbacks.clear(); } +void IDBCallbacksProxy::onSuccess(PassRefPtr<IDBObjectStore> idbObjectStore) +{ + m_callbacks->onSuccess(new WebKit::WebIDBObjectStoreImpl(idbObjectStore)); + m_callbacks.clear(); +} + void IDBCallbacksProxy::onSuccess(PassRefPtr<SerializedScriptValue> serializedScriptValue) { m_callbacks->onSuccess(WebKit::WebSerializedScriptValue(serializedScriptValue)); diff --git a/WebKit/chromium/src/IDBCallbacksProxy.h b/WebKit/chromium/src/IDBCallbacksProxy.h index d98e2ed..8f2da28 100644 --- a/WebKit/chromium/src/IDBCallbacksProxy.h +++ b/WebKit/chromium/src/IDBCallbacksProxy.h @@ -30,6 +30,7 @@ #define IDBCallbacksProxy_h #include "IDBCallbacks.h" +#include <wtf/PassOwnPtr.h> #include <wtf/PassRefPtr.h> #include <wtf/RefPtr.h> @@ -43,6 +44,7 @@ namespace WebCore { class IDBDatabaseError; class IDBDatabase; +class IDBObjectStore; class SerializedScriptValue; class IDBCallbacksProxy : public IDBCallbacks { @@ -54,6 +56,7 @@ public: virtual void onSuccess(); // For "null". virtual void onSuccess(PassRefPtr<IDBDatabase>); virtual void onSuccess(PassRefPtr<IDBIndex>); + virtual void onSuccess(PassRefPtr<IDBObjectStore>); virtual void onSuccess(PassRefPtr<SerializedScriptValue>); private: diff --git a/WebKit/chromium/src/IDBDatabaseProxy.cpp b/WebKit/chromium/src/IDBDatabaseProxy.cpp index deb2f99..9d009c0 100644 --- a/WebKit/chromium/src/IDBDatabaseProxy.cpp +++ b/WebKit/chromium/src/IDBDatabaseProxy.cpp @@ -27,8 +27,13 @@ #include "IDBDatabaseProxy.h" #include "DOMStringList.h" +#include "IDBCallbacks.h" +#include "IDBObjectStoreProxy.h" +#include "WebFrameImpl.h" +#include "WebIDBCallbacksImpl.h" #include "WebIDBDatabase.h" #include "WebIDBDatabaseError.h" +#include "WebIDBObjectStore.h" #if ENABLE(INDEXED_DATABASE) @@ -48,26 +53,44 @@ IDBDatabaseProxy::~IDBDatabaseProxy() { } -String IDBDatabaseProxy::name() +String IDBDatabaseProxy::name() const { return m_webIDBDatabase->name(); } -String IDBDatabaseProxy::description() +String IDBDatabaseProxy::description() const { return m_webIDBDatabase->description(); } -String IDBDatabaseProxy::version() +String IDBDatabaseProxy::version() const { return m_webIDBDatabase->version(); } -PassRefPtr<DOMStringList> IDBDatabaseProxy::objectStores() +PassRefPtr<DOMStringList> IDBDatabaseProxy::objectStores() const { return m_webIDBDatabase->objectStores(); } +void IDBDatabaseProxy::createObjectStore(const String& name, const String& keyPath, bool autoIncrement, PassRefPtr<IDBCallbacks> callbacks) +{ + m_webIDBDatabase->createObjectStore(name, keyPath, autoIncrement, new WebIDBCallbacksImpl(callbacks)); +} + +PassRefPtr<IDBObjectStore> IDBDatabaseProxy::objectStore(const String& name, unsigned short mode) +{ + WebKit::WebIDBObjectStore* objectStore = m_webIDBDatabase->objectStore(name, mode); + if (!objectStore) + return 0; + return IDBObjectStoreProxy::create(objectStore); +} + +void IDBDatabaseProxy::removeObjectStore(const String& name, PassRefPtr<IDBCallbacks> callbacks) +{ + m_webIDBDatabase->removeObjectStore(name, new WebIDBCallbacksImpl(callbacks)); +} + } // namespace WebCore #endif // ENABLE(INDEXED_DATABASE) diff --git a/WebKit/chromium/src/IDBDatabaseProxy.h b/WebKit/chromium/src/IDBDatabaseProxy.h index e5e5125..36588f0 100644 --- a/WebKit/chromium/src/IDBDatabaseProxy.h +++ b/WebKit/chromium/src/IDBDatabaseProxy.h @@ -42,12 +42,16 @@ public: static PassRefPtr<IDBDatabase> create(PassOwnPtr<WebKit::WebIDBDatabase>); virtual ~IDBDatabaseProxy(); - virtual String name(); - virtual String description(); - virtual String version(); - virtual PassRefPtr<DOMStringList> objectStores(); + virtual String name() const; + virtual String description() const; + virtual String version() const; + virtual PassRefPtr<DOMStringList> objectStores() const; - // FIXME: Add other methods. + // FIXME: Add transaction and setVersion. + + virtual void createObjectStore(const String& name, const String& keyPath, bool autoIncrement, PassRefPtr<IDBCallbacks>); + virtual PassRefPtr<IDBObjectStore> objectStore(const String& name, unsigned short mode); + virtual void removeObjectStore(const String& name, PassRefPtr<IDBCallbacks>); private: IDBDatabaseProxy(PassOwnPtr<WebKit::WebIDBDatabase>); diff --git a/WebKit/chromium/src/IDBObjectStoreProxy.cpp b/WebKit/chromium/src/IDBObjectStoreProxy.cpp new file mode 100755 index 0000000..5942e2a --- /dev/null +++ b/WebKit/chromium/src/IDBObjectStoreProxy.cpp @@ -0,0 +1,89 @@ +/* + * Copyright (C) 2010 Google Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" +#include "IDBObjectStoreProxy.h" + +#include "DOMStringList.h" +#include "IDBCallbacks.h" +#include "IDBIndexProxy.h" +#include "WebIDBCallbacksImpl.h" +#include "WebIDBIndex.h" +#include "WebIDBObjectStore.h" + +#if ENABLE(INDEXED_DATABASE) + +namespace WebCore { + +PassRefPtr<IDBObjectStore> IDBObjectStoreProxy::create(PassOwnPtr<WebKit::WebIDBObjectStore> objectStore) +{ + return adoptRef(new IDBObjectStoreProxy(objectStore)); +} + +IDBObjectStoreProxy::IDBObjectStoreProxy(PassOwnPtr<WebKit::WebIDBObjectStore> objectStore) + : m_webIDBObjectStore(objectStore) +{ +} + +IDBObjectStoreProxy::~IDBObjectStoreProxy() +{ +} + +String IDBObjectStoreProxy::name() const +{ + return m_webIDBObjectStore->name(); +} + +String IDBObjectStoreProxy::keyPath() const +{ + return m_webIDBObjectStore->keyPath(); +} + +PassRefPtr<DOMStringList> IDBObjectStoreProxy::indexNames() const +{ + return m_webIDBObjectStore->indexNames(); +} + +void IDBObjectStoreProxy::createIndex(const String& name, const String& keyPath, bool unique, PassRefPtr<IDBCallbacks> callbacks) +{ + m_webIDBObjectStore->createIndex(name, keyPath, unique, new WebIDBCallbacksImpl(callbacks)); +} + +PassRefPtr<IDBIndex> IDBObjectStoreProxy::index(const String& name) +{ + WebKit::WebIDBIndex* index = m_webIDBObjectStore->index(name); + if (!index) + return 0; + return IDBIndexProxy::create(index); +} + +void IDBObjectStoreProxy::removeIndex(const String& name, PassRefPtr<IDBCallbacks> callbacks) +{ + m_webIDBObjectStore->removeIndex(name, new WebIDBCallbacksImpl(callbacks)); +} + +} // namespace WebCore + +#endif // ENABLE(INDEXED_DATABASE) diff --git a/WebKit/chromium/src/IDBObjectStoreProxy.h b/WebKit/chromium/src/IDBObjectStoreProxy.h new file mode 100755 index 0000000..78983cb --- /dev/null +++ b/WebKit/chromium/src/IDBObjectStoreProxy.h @@ -0,0 +1,67 @@ +/* + * Copyright (C) 2010 Google Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef IDBObjectStoreProxy_h +#define IDBObjectStoreProxy_h + +#include "IDBObjectStore.h" +#include <wtf/OwnPtr.h> +#include <wtf/PassOwnPtr.h> +#include <wtf/PassRefPtr.h> + +#if ENABLE(INDEXED_DATABASE) + +namespace WebKit { class WebIDBObjectStore; } + +namespace WebCore { + +class DOMStringList; +class IDBIndex; + +class IDBObjectStoreProxy : public IDBObjectStore { +public: + static PassRefPtr<IDBObjectStore> create(PassOwnPtr<WebKit::WebIDBObjectStore>); + virtual ~IDBObjectStoreProxy(); + + virtual String name() const; + virtual String keyPath() const; + virtual PassRefPtr<DOMStringList> indexNames() const; + + virtual void createIndex(const String& name, const String& keyPath, bool unique, PassRefPtr<IDBCallbacks>); + virtual PassRefPtr<IDBIndex> index(const String& name); + virtual void removeIndex(const String& name, PassRefPtr<IDBCallbacks>); + +private: + IDBObjectStoreProxy(PassOwnPtr<WebKit::WebIDBObjectStore>); + + OwnPtr<WebKit::WebIDBObjectStore> m_webIDBObjectStore; +}; + +} // namespace WebCore + +#endif + +#endif // IDBObjectStoreProxy_h + diff --git a/WebKit/chromium/src/IndexedDatabaseProxy.cpp b/WebKit/chromium/src/IndexedDatabaseProxy.cpp index 2572877..bee99b2 100644 --- a/WebKit/chromium/src/IndexedDatabaseProxy.cpp +++ b/WebKit/chromium/src/IndexedDatabaseProxy.cpp @@ -57,12 +57,10 @@ IndexedDatabaseProxy::~IndexedDatabaseProxy() { } -void IndexedDatabaseProxy::open(const String& name, const String& description, PassRefPtr<IDBCallbacks> callbacks, PassRefPtr<SecurityOrigin> origin, Frame* frame, ExceptionCode& ec) +void IndexedDatabaseProxy::open(const String& name, const String& description, PassRefPtr<IDBCallbacks> callbacks, PassRefPtr<SecurityOrigin> origin, Frame* frame) { - if (!frame || !frame->document()) - return; WebKit::WebFrame* webFrame = WebKit::WebFrameImpl::fromFrame(frame); - m_webIndexedDatabase->open(name, description, new WebIDBCallbacksImpl(callbacks), origin, webFrame, ec); + m_webIndexedDatabase->open(name, description, new WebIDBCallbacksImpl(callbacks), origin, webFrame); } } // namespace WebCore diff --git a/WebKit/chromium/src/IndexedDatabaseProxy.h b/WebKit/chromium/src/IndexedDatabaseProxy.h index 206099c..53097f0 100644 --- a/WebKit/chromium/src/IndexedDatabaseProxy.h +++ b/WebKit/chromium/src/IndexedDatabaseProxy.h @@ -42,7 +42,7 @@ public: static PassRefPtr<IndexedDatabase> create(); virtual ~IndexedDatabaseProxy(); - virtual void open(const String& name, const String& description, PassRefPtr<IDBCallbacks>, PassRefPtr<SecurityOrigin>, Frame*, ExceptionCode&); + virtual void open(const String& name, const String& description, PassRefPtr<IDBCallbacks>, PassRefPtr<SecurityOrigin>, Frame*); private: IndexedDatabaseProxy(); diff --git a/WebKit/chromium/src/InspectorClientImpl.cpp b/WebKit/chromium/src/InspectorClientImpl.cpp index 22b515f..91d10d5 100644 --- a/WebKit/chromium/src/InspectorClientImpl.cpp +++ b/WebKit/chromium/src/InspectorClientImpl.cpp @@ -35,6 +35,8 @@ #include "FloatRect.h" #include "NotImplemented.h" #include "Page.h" +#include "WebDevToolsAgentImpl.h" +#include "WebDevToolsMessageData.h" #include "WebRect.h" #include "WebURL.h" #include "WebURLRequest.h" @@ -102,4 +104,20 @@ void InspectorClientImpl::storeSetting(const String& key, const String& value) m_inspectedWebView->setInspectorSetting(key, value); } +bool InspectorClientImpl::sendMessageToFrontend(const WebCore::String& message) +{ + WebDevToolsAgentImpl* devToolsAgent = static_cast<WebDevToolsAgentImpl*>(m_inspectedWebView->devToolsAgent()); + if (!devToolsAgent) + return false; + + WebVector<WebString> arguments(size_t(1)); + arguments[0] = message; + WebDevToolsMessageData data; + data.className = "ToolsAgentDelegate"; + data.methodName = "dispatchOnClient"; + data.arguments.swap(arguments); + devToolsAgent->sendRpcMessage(data); + return true; +} + } // namespace WebKit diff --git a/WebKit/chromium/src/InspectorClientImpl.h b/WebKit/chromium/src/InspectorClientImpl.h index 7447d0c..f4994e3 100644 --- a/WebKit/chromium/src/InspectorClientImpl.h +++ b/WebKit/chromium/src/InspectorClientImpl.h @@ -36,6 +36,8 @@ #include <wtf/OwnPtr.h> namespace WebKit { + +class WebDevToolsAgentClient; class WebViewImpl; class InspectorClientImpl : public WebCore::InspectorClient { @@ -46,15 +48,14 @@ public: // InspectorClient methods: virtual void inspectorDestroyed(); virtual void openInspectorFrontend(WebCore::InspectorController*); + virtual void highlight(WebCore::Node*); virtual void hideHighlight(); - virtual void populateSetting( - const WebCore::String& key, - WebCore::String* value); - virtual void storeSetting( - const WebCore::String& key, - const WebCore::String& value); + virtual void populateSetting(const WebCore::String& key, WebCore::String* value); + virtual void storeSetting(const WebCore::String& key, const WebCore::String& value); + + virtual bool sendMessageToFrontend(const WebCore::String&); private: // The WebViewImpl of the page being inspected; gets passed to the constructor diff --git a/WebKit/chromium/src/NotificationPresenterImpl.cpp b/WebKit/chromium/src/NotificationPresenterImpl.cpp index dca1856..c928c91 100644 --- a/WebKit/chromium/src/NotificationPresenterImpl.cpp +++ b/WebKit/chromium/src/NotificationPresenterImpl.cpp @@ -88,7 +88,10 @@ void NotificationPresenterImpl::cancel(Notification* notification) void NotificationPresenterImpl::notificationObjectDestroyed(Notification* notification) { - m_presenter->objectDestroyed(PassRefPtr<Notification>(notification)); + // TODO(pkasting): We cannot ref an object that's being destroyed. Either + // this function needs to be called earlier than in ~Notification(), or it + // needs to not ref this object. + //m_presenter->objectDestroyed(PassRefPtr<Notification>(notification)); } NotificationPresenter::Permission NotificationPresenterImpl::checkPermission(const KURL& sourceURL) diff --git a/WebKit/chromium/src/SuggestionsPopupMenuClient.h b/WebKit/chromium/src/SuggestionsPopupMenuClient.h index 77b3890..7717593 100644 --- a/WebKit/chromium/src/SuggestionsPopupMenuClient.h +++ b/WebKit/chromium/src/SuggestionsPopupMenuClient.h @@ -61,6 +61,8 @@ public: // WebCore::PopupMenuClient methods: virtual void valueChanged(unsigned listIndex, bool fireEvents = true); + virtual void selectionChanged(unsigned, bool) {} + virtual void selectionCleared() {} virtual WebCore::String itemText(unsigned listIndex) const; virtual WebCore::String itemToolTip(unsigned lastIndex) const { return WebCore::String(); } virtual WebCore::String itemAccessibilityText(unsigned lastIndex) const { return WebCore::String(); } diff --git a/WebKit/chromium/src/WebDevToolsAgentImpl.cpp b/WebKit/chromium/src/WebDevToolsAgentImpl.cpp index 8dde31f..c4bbbfa 100644 --- a/WebKit/chromium/src/WebDevToolsAgentImpl.cpp +++ b/WebKit/chromium/src/WebDevToolsAgentImpl.cpp @@ -462,6 +462,11 @@ void WebDevToolsAgentImpl::createInspectorFrontendProxy() m_utilityContext = v8::Context::New(); compileUtilityScripts(); initDevToolsAgentHost(); +#if ENABLE(V8_SCRIPT_DEBUG_SERVER) + WebCString debuggerScriptJs = m_client->debuggerScriptSource(); + WebCore::ScriptDebugServer::shared().setDebuggerScriptSource( + WebCore::String(debuggerScriptJs.data(), debuggerScriptJs.length())); +#endif } void WebDevToolsAgentImpl::setInspectorFrontendProxyToInspectorController() @@ -470,8 +475,7 @@ void WebDevToolsAgentImpl::setInspectorFrontendProxyToInspectorController() ScriptState* state = ScriptState::forContext( v8::Local<v8::Context>::New(m_utilityContext)); InspectorController* ic = inspectorController(); - ic->setFrontend(new InspectorFrontend( - ScriptObject(state, m_utilityContext->Global()))); + ic->connectFrontend(ScriptObject(state, m_utilityContext->Global())); } void WebDevToolsAgentImpl::setApuAgentEnabled(bool enabled) diff --git a/WebKit/chromium/src/WebEntities.cpp b/WebKit/chromium/src/WebEntities.cpp index b9143d9..2b8ae3c 100644 --- a/WebKit/chromium/src/WebEntities.cpp +++ b/WebKit/chromium/src/WebEntities.cpp @@ -42,12 +42,12 @@ using namespace WebCore; namespace { -// Note that this file is also included by HTMLTokenizer.cpp so we are getting +// Note that this file is also included by HTMLDocumentParser.cpp so we are getting // two copies of the data in memory. We can fix this by changing the script // that generated the array to create a static const that is its length, but // this is low priority since the data is less than 4K. We use anonymous // namespace to prevent name collisions. -#include "HTMLEntityNames.c" // NOLINT +#include "HTMLEntityNames.cpp" // NOLINT } namespace WebKit { diff --git a/WebKit/chromium/src/WebFormControlElement.cpp b/WebKit/chromium/src/WebFormControlElement.cpp index 007673e..a75fe5c 100644 --- a/WebKit/chromium/src/WebFormControlElement.cpp +++ b/WebKit/chromium/src/WebFormControlElement.cpp @@ -59,7 +59,7 @@ WebString WebFormControlElement::nameForAutofill() const String trimmedName = name.stripWhiteSpace(); if (!trimmedName.isEmpty()) return trimmedName; - name = constUnwrap<HTMLFormControlElement>()->getAttribute(HTMLNames::idAttr); + name = constUnwrap<HTMLFormControlElement>()->getIdAttribute(); trimmedName = name.stripWhiteSpace(); if (!trimmedName.isEmpty()) return trimmedName; diff --git a/WebKit/chromium/src/WebIDBCallbacksImpl.cpp b/WebKit/chromium/src/WebIDBCallbacksImpl.cpp index ea1c0b1..891e3b3 100644 --- a/WebKit/chromium/src/WebIDBCallbacksImpl.cpp +++ b/WebKit/chromium/src/WebIDBCallbacksImpl.cpp @@ -30,10 +30,12 @@ #include "IDBDatabaseError.h" #include "IDBDatabaseProxy.h" #include "IDBIndexProxy.h" +#include "IDBObjectStoreProxy.h" #include "WebIDBCallbacks.h" #include "WebIDBDatabase.h" #include "WebIDBDatabaseError.h" #include "WebIDBIndex.h" +#include "WebIDBObjectStore.h" #include "WebSerializedScriptValue.h" #if ENABLE(INDEXED_DATABASE) @@ -73,6 +75,12 @@ void WebIDBCallbacksImpl::onSuccess(WebKit::WebIDBIndex* webKitInstance) m_callbacks.clear(); } +void WebIDBCallbacksImpl::onSuccess(WebKit::WebIDBObjectStore* webKitInstance) +{ + m_callbacks->onSuccess(IDBObjectStoreProxy::create(webKitInstance)); + m_callbacks.clear(); +} + void WebIDBCallbacksImpl::onSuccess(const WebKit::WebSerializedScriptValue& serializedScriptValue) { m_callbacks->onSuccess(serializedScriptValue); diff --git a/WebKit/chromium/src/WebIDBCallbacksImpl.h b/WebKit/chromium/src/WebIDBCallbacksImpl.h index 8e5ada7..519f692 100644 --- a/WebKit/chromium/src/WebIDBCallbacksImpl.h +++ b/WebKit/chromium/src/WebIDBCallbacksImpl.h @@ -45,6 +45,7 @@ public: virtual void onSuccess(); // For "null". virtual void onSuccess(WebKit::WebIDBDatabase*); virtual void onSuccess(WebKit::WebIDBIndex*); + virtual void onSuccess(WebKit::WebIDBObjectStore*); virtual void onSuccess(const WebKit::WebSerializedScriptValue&); private: diff --git a/WebKit/chromium/src/WebIDBDatabaseImpl.cpp b/WebKit/chromium/src/WebIDBDatabaseImpl.cpp index 3a00ccb..e2f771a 100644 --- a/WebKit/chromium/src/WebIDBDatabaseImpl.cpp +++ b/WebKit/chromium/src/WebIDBDatabaseImpl.cpp @@ -27,7 +27,10 @@ #include "WebIDBDatabaseImpl.h" #include "DOMStringList.h" +#include "IDBCallbacksProxy.h" #include "IDBDatabase.h" +#include "WebIDBCallbacks.h" +#include "WebIDBObjectStoreImpl.h" #if ENABLE(INDEXED_DATABASE) @@ -35,8 +38,8 @@ using namespace WebCore; namespace WebKit { -WebIDBDatabaseImpl::WebIDBDatabaseImpl(PassRefPtr<IDBDatabase> idbDatabase) - : m_idbDatabase(idbDatabase) +WebIDBDatabaseImpl::WebIDBDatabaseImpl(PassRefPtr<IDBDatabase> database) + : m_database(database) { } @@ -44,24 +47,42 @@ WebIDBDatabaseImpl::~WebIDBDatabaseImpl() { } -WebString WebIDBDatabaseImpl::name() +WebString WebIDBDatabaseImpl::name() const { - return m_idbDatabase->name(); + return m_database->name(); } -WebString WebIDBDatabaseImpl::description() +WebString WebIDBDatabaseImpl::description() const { - return m_idbDatabase->description(); + return m_database->description(); } -WebString WebIDBDatabaseImpl::version() +WebString WebIDBDatabaseImpl::version() const { - return m_idbDatabase->version(); + return m_database->version(); } -WebDOMStringList WebIDBDatabaseImpl::objectStores() +WebDOMStringList WebIDBDatabaseImpl::objectStores() const { - return m_idbDatabase->objectStores(); + return m_database->objectStores(); +} + +void WebIDBDatabaseImpl::createObjectStore(const WebString& name, const WebString& keyPath, bool autoIncrement, WebIDBCallbacks* callbacks) +{ + m_database->createObjectStore(name, keyPath, autoIncrement, IDBCallbacksProxy::create(callbacks)); +} + +WebIDBObjectStore* WebIDBDatabaseImpl::objectStore(const WebString& name, unsigned short mode) +{ + RefPtr<IDBObjectStore> objectStore = m_database->objectStore(name, mode); + if (!objectStore) + return 0; + return new WebIDBObjectStoreImpl(objectStore); +} + +void WebIDBDatabaseImpl::removeObjectStore(const WebString& name, WebIDBCallbacks* callbacks) +{ + m_database->removeObjectStore(name, IDBCallbacksProxy::create(callbacks)); } } // namespace WebCore diff --git a/WebKit/chromium/src/WebIDBDatabaseImpl.h b/WebKit/chromium/src/WebIDBDatabaseImpl.h index f99a759..c83d8d7 100644 --- a/WebKit/chromium/src/WebIDBDatabaseImpl.h +++ b/WebKit/chromium/src/WebIDBDatabaseImpl.h @@ -35,19 +35,25 @@ namespace WebCore { class IDBDatabase; } namespace WebKit { +class WebIDBObjectStore; + // See comment in WebIndexedDatabase for a high level overview these classes. class WebIDBDatabaseImpl : public WebIDBDatabase { public: - WebIDBDatabaseImpl(WTF::PassRefPtr<WebCore::IDBDatabase> idbDatabase); + WebIDBDatabaseImpl(WTF::PassRefPtr<WebCore::IDBDatabase> database); virtual ~WebIDBDatabaseImpl(); - virtual WebString name(); - virtual WebString description(); - virtual WebString version(); - virtual WebDOMStringList objectStores(); + virtual WebString name() const; + virtual WebString description() const; + virtual WebString version() const; + virtual WebDOMStringList objectStores() const; + + virtual void createObjectStore(const WebString& name, const WebString& keyPath, bool autoIncrement, WebIDBCallbacks* callbacks); + virtual WebIDBObjectStore* objectStore(const WebString& name, unsigned short mode); + virtual void removeObjectStore(const WebString& name, WebIDBCallbacks* callbacks); private: - WTF::RefPtr<WebCore::IDBDatabase> m_idbDatabase; + WTF::RefPtr<WebCore::IDBDatabase> m_database; }; } // namespace WebKit diff --git a/WebKit/chromium/src/WebIDBObjectStoreImpl.cpp b/WebKit/chromium/src/WebIDBObjectStoreImpl.cpp new file mode 100755 index 0000000..a41010a --- /dev/null +++ b/WebKit/chromium/src/WebIDBObjectStoreImpl.cpp @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2010 Google Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" +#include "WebIDBObjectStoreImpl.h" + +#include "DOMStringList.h" +#include "IDBCallbacksProxy.h" +#include "IDBObjectStore.h" +#include "WebIDBIndexImpl.h" + +#if ENABLE(INDEXED_DATABASE) + +using namespace WebCore; + +namespace WebKit { + +WebIDBObjectStoreImpl::WebIDBObjectStoreImpl(PassRefPtr<IDBObjectStore> objectStore) + : m_objectStore(objectStore) +{ +} + +WebIDBObjectStoreImpl::~WebIDBObjectStoreImpl() +{ +} + +WebString WebIDBObjectStoreImpl::name() const +{ + return m_objectStore->name(); +} + +WebString WebIDBObjectStoreImpl::keyPath() const +{ + return m_objectStore->keyPath(); +} + +WebDOMStringList WebIDBObjectStoreImpl::indexNames() const +{ + return m_objectStore->indexNames(); +} + +void WebIDBObjectStoreImpl::createIndex(const WebString& name, const WebString& keyPath, bool unique, WebIDBCallbacks* callbacks) +{ + m_objectStore->createIndex(name, keyPath, unique, IDBCallbacksProxy::create(callbacks)); +} + +WebIDBIndex* WebIDBObjectStoreImpl::index(const WebString& name) +{ + RefPtr<IDBIndex> index = m_objectStore->index(name); + if (!index) + return 0; + return new WebIDBIndexImpl(index); +} + +void WebIDBObjectStoreImpl::removeIndex(const WebString& name, WebIDBCallbacks* callbacks) +{ + m_objectStore->removeIndex(name, IDBCallbacksProxy::create(callbacks)); +} + +} // namespace WebCore + +#endif // ENABLE(INDEXED_DATABASE) diff --git a/WebKit/chromium/src/WebIDBObjectStoreImpl.h b/WebKit/chromium/src/WebIDBObjectStoreImpl.h new file mode 100755 index 0000000..f59840f --- /dev/null +++ b/WebKit/chromium/src/WebIDBObjectStoreImpl.h @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2010 Google Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef WebIDBObjectStoreImpl_h +#define WebIDBObjectStoreImpl_h + +#include "WebCommon.h" +#include "WebIDBObjectStore.h" +#include <wtf/PassRefPtr.h> +#include <wtf/RefPtr.h> + +namespace WebCore { class IDBObjectStore; } + +namespace WebKit { + +class WebIDBIndex; + +// See comment in WebIndexedObjectStore for a high level overview these classes. +class WebIDBObjectStoreImpl : public WebIDBObjectStore { +public: + WebIDBObjectStoreImpl(WTF::PassRefPtr<WebCore::IDBObjectStore> objectStore); + virtual ~WebIDBObjectStoreImpl(); + + virtual WebString name() const; + virtual WebString keyPath() const; + virtual WebDOMStringList indexNames() const; + + virtual void createIndex(const WebString& name, const WebString& keyPath, bool unique, WebIDBCallbacks* callbacks); + virtual WebIDBIndex* index(const WebString& name); + virtual void removeIndex(const WebString& name, WebIDBCallbacks* callbacks); + + private: + WTF::RefPtr<WebCore::IDBObjectStore> m_objectStore; +}; + +} // namespace WebKit + +#endif // WebIDBObjectStoreImpl_h diff --git a/WebKit/chromium/src/WebImageCG.cpp b/WebKit/chromium/src/WebImageCG.cpp index 60b2449..045c8be 100644 --- a/WebKit/chromium/src/WebImageCG.cpp +++ b/WebKit/chromium/src/WebImageCG.cpp @@ -89,14 +89,16 @@ WebSize WebImage::size() const WebImage::WebImage(const PassRefPtr<Image>& image) : m_imageRef(0) { - if (image.get()) - assign(image->nativeImageForCurrentFrame()); + NativeImagePtr p; + if (image.get() && (p = image->nativeImageForCurrentFrame())) + assign(p); } WebImage& WebImage::operator=(const PassRefPtr<Image>& image) { - if (image.get()) - assign(image->nativeImageForCurrentFrame()); + NativeImagePtr p; + if (image.get() && (p = image->nativeImageForCurrentFrame())) + assign(p); else reset(); return *this; diff --git a/WebKit/chromium/src/WebIndexedDatabaseImpl.cpp b/WebKit/chromium/src/WebIndexedDatabaseImpl.cpp index 00122ad..27a6247 100644 --- a/WebKit/chromium/src/WebIndexedDatabaseImpl.cpp +++ b/WebKit/chromium/src/WebIndexedDatabaseImpl.cpp @@ -57,9 +57,9 @@ WebIndexedDatabaseImpl::~WebIndexedDatabaseImpl() { } -void WebIndexedDatabaseImpl::open(const WebString& name, const WebString& description, WebIDBCallbacks* callbacks, const WebSecurityOrigin& origin, WebFrame*, int& exceptionCode) +void WebIndexedDatabaseImpl::open(const WebString& name, const WebString& description, WebIDBCallbacks* callbacks, const WebSecurityOrigin& origin, WebFrame*) { - m_indexedDatabase->open(name, description, IDBCallbacksProxy::create(callbacks), origin, 0, exceptionCode); + m_indexedDatabase->open(name, description, IDBCallbacksProxy::create(callbacks), origin, 0); } } // namespace WebKit diff --git a/WebKit/chromium/src/WebIndexedDatabaseImpl.h b/WebKit/chromium/src/WebIndexedDatabaseImpl.h index 072a92b..76781e5 100644 --- a/WebKit/chromium/src/WebIndexedDatabaseImpl.h +++ b/WebKit/chromium/src/WebIndexedDatabaseImpl.h @@ -41,7 +41,7 @@ public: WebIndexedDatabaseImpl(); virtual ~WebIndexedDatabaseImpl(); - virtual void open(const WebString& name, const WebString& description, WebIDBCallbacks*, const WebSecurityOrigin&, WebFrame*, int& exceptionCode); + virtual void open(const WebString& name, const WebString& description, WebIDBCallbacks*, const WebSecurityOrigin&, WebFrame*); private: WTF::RefPtr<WebCore::IndexedDatabase> m_indexedDatabase; diff --git a/WebKit/chromium/src/WebInputElement.cpp b/WebKit/chromium/src/WebInputElement.cpp index 68bb91e..18bafd6 100644 --- a/WebKit/chromium/src/WebInputElement.cpp +++ b/WebKit/chromium/src/WebInputElement.cpp @@ -85,6 +85,21 @@ WebString WebInputElement::value() const return constUnwrap<HTMLInputElement>()->value(); } +void WebInputElement::setPlaceholder(const WebString& value) +{ + unwrap<HTMLInputElement>()->setPlaceholder(value); +} + +WebString WebInputElement::placeholder() const +{ + return constUnwrap<HTMLInputElement>()->placeholder(); +} + +bool WebInputElement::isAutofilled() const +{ + return constUnwrap<HTMLInputElement>()->isAutofilled(); +} + void WebInputElement::setAutofilled(bool autoFilled) { unwrap<HTMLInputElement>()->setAutofilled(autoFilled); diff --git a/WebKit/chromium/src/WebPluginContainerImpl.cpp b/WebKit/chromium/src/WebPluginContainerImpl.cpp index 5807a79..d099048 100644 --- a/WebKit/chromium/src/WebPluginContainerImpl.cpp +++ b/WebKit/chromium/src/WebPluginContainerImpl.cpp @@ -60,6 +60,7 @@ #include "KeyboardEvent.h" #include "MouseEvent.h" #include "Page.h" +#include "RenderBox.h" #include "ScrollView.h" #include "WheelEvent.h" diff --git a/WebKit/chromium/src/WebSearchableFormData.cpp b/WebKit/chromium/src/WebSearchableFormData.cpp index 601a497..14ece13 100644 --- a/WebKit/chromium/src/WebSearchableFormData.cpp +++ b/WebKit/chromium/src/WebSearchableFormData.cpp @@ -187,8 +187,8 @@ bool HasSuitableTextElement(const HTMLFormElement* form, Vector<char>* encodedSt if (!formElement->appendFormData(dataList, false)) continue; - const Vector<FormDataList::Item>& itemList = dataList.list(); - if (isTextElement && !itemList.isEmpty()) { + const BlobItemList& items = dataList.items(); + if (isTextElement && !items.isEmpty()) { if (textElement) { // The auto-complete bar only knows how to fill in one value. // This form has multiple fields; don't treat it as searchable. @@ -196,20 +196,22 @@ bool HasSuitableTextElement(const HTMLFormElement* form, Vector<char>* encodedSt } textElement = static_cast<HTMLInputElement*>(formElement); } - for (Vector<FormDataList::Item>::const_iterator j(itemList.begin()); j != itemList.end(); ++j) { + for (BlobItemList::const_iterator j(items.begin()); j != items.end(); ++j) { + const StringBlobItem* item = (*j)->toStringBlobItem(); + ASSERT(item); // Handle ISINDEX / <input name=isindex> specially, but only if it's // the first entry. - if (!encodedString->isEmpty() || j->data() != "isindex") { + if (!encodedString->isEmpty() || item->cstr() != "isindex") { if (!encodedString->isEmpty()) encodedString->append('&'); - FormDataBuilder::encodeStringAsFormData(*encodedString, j->data()); + FormDataBuilder::encodeStringAsFormData(*encodedString, item->cstr()); encodedString->append('='); } ++j; if (formElement == textElement) encodedString->append("{searchTerms}", 13); else - FormDataBuilder::encodeStringAsFormData(*encodedString, j->data()); + FormDataBuilder::encodeStringAsFormData(*encodedString, item->cstr()); } } diff --git a/WebKit/chromium/src/WebSettingsImpl.cpp b/WebKit/chromium/src/WebSettingsImpl.cpp index 946782b..7e89a77 100644 --- a/WebKit/chromium/src/WebSettingsImpl.cpp +++ b/WebKit/chromium/src/WebSettingsImpl.cpp @@ -271,7 +271,7 @@ void WebSettingsImpl::setShowDebugBorders(bool show) void WebSettingsImpl::setEditingBehavior(EditingBehavior behavior) { - m_settings->setEditingBehavior(static_cast<WebCore::EditingBehavior>(behavior)); + m_settings->setEditingBehaviorType(static_cast<WebCore::EditingBehaviorType>(behavior)); } void WebSettingsImpl::setAcceleratedCompositingEnabled(bool enabled) diff --git a/WebKit/chromium/src/WebURLResponse.cpp b/WebKit/chromium/src/WebURLResponse.cpp index 1aba54e..d5ba707 100644 --- a/WebKit/chromium/src/WebURLResponse.cpp +++ b/WebKit/chromium/src/WebURLResponse.cpp @@ -287,6 +287,16 @@ void WebURLResponse::setWasNpnNegotiated(bool value) m_private->m_resourceResponse->setWasNpnNegotiated(value); } +bool WebURLResponse::wasFetchedViaProxy() const +{ + return m_private->m_resourceResponse->wasFetchedViaProxy(); +} + +void WebURLResponse::setWasFetchedViaProxy(bool value) +{ + m_private->m_resourceResponse->setWasFetchedViaProxy(value); +} + bool WebURLResponse::isMultipartPayload() const { return m_private->m_resourceResponse->isMultipartPayload(); diff --git a/WebKit/chromium/src/WebViewImpl.cpp b/WebKit/chromium/src/WebViewImpl.cpp index a38995e..5adc35c 100644 --- a/WebKit/chromium/src/WebViewImpl.cpp +++ b/WebKit/chromium/src/WebViewImpl.cpp @@ -681,7 +681,7 @@ bool WebViewImpl::sendContextMenuEvent(const WebKeyboardEvent& event) Node* focusedNode = focusedFrame->document()->focusedNode(); Position start = mainFrameImpl->selection()->selection().start(); - if (focusedFrame->editor() && focusedFrame->editor()->canEdit() && start.node()) { + if (start.node()) { RenderObject* renderer = start.node()->renderer(); if (!renderer) return false; @@ -827,6 +827,45 @@ bool WebViewImpl::mapKeyCodeForScroll(int keyCode, return true; } +// Computes the distance from a point outside a rect to the nearest edge of the rect. +static IntSize distanceToRect(const IntPoint& point, const IntRect& rect) +{ + int dx = 0, dy = 0; + if (point.x() < rect.x()) + dx = point.x() - rect.x(); + else if (rect.right() < point.x()) + dx = point.x() - rect.right(); + if (point.y() < rect.y()) + dy = point.y() - rect.y(); + else if (rect.bottom() < point.y()) + dy = point.y() - rect.bottom(); + return IntSize(dx, dy); +} + +void WebViewImpl::scrollForDragging(const WebPoint& clientPoint) +{ + // This margin approximates Safari behavior, derived from an observation. + static const int scrollMargin = 30; + + FrameView* view = mainFrameImpl()->frameView(); + if (!view) + return; + + IntRect bounds(0, 0, view->visibleWidth(), view->visibleHeight()); + bounds.setY(bounds.y() + scrollMargin); + bounds.setHeight(bounds.height() - scrollMargin * 2); + bounds.setX(bounds.x() + scrollMargin); + bounds.setWidth(bounds.width() - scrollMargin * 2); + + IntPoint point = clientPoint; + if (bounds.contains(point)) + return; + + IntSize toScroll = distanceToRect(point, bounds); + if (!toScroll.isZero()) + view->scrollBy(toScroll); +} + void WebViewImpl::hideSelectPopup() { if (m_selectPopup.get()) @@ -1539,6 +1578,14 @@ void WebViewImpl::dragSourceEndedAt( static_cast<DragOperation>(operation)); } +void WebViewImpl::dragSourceMovedTo( + const WebPoint& clientPoint, + const WebPoint& screenPoint, + WebDragOperation operation) +{ + scrollForDragging(clientPoint); +} + void WebViewImpl::dragSourceSystemDragEnded() { // It's possible for us to get this callback while not doing a drag if @@ -1659,6 +1706,9 @@ WebDragOperation WebViewImpl::dragTargetDragEnterOrOver(const WebPoint& clientPo } else m_dragOperation = static_cast<WebDragOperation>(effect); + if (dragAction == DragOver) + scrollForDragging(clientPoint); + return m_dragOperation; } @@ -1736,10 +1786,10 @@ void WebViewImpl::applyAutoFillSuggestions( const WebNode& node, const WebVector<WebString>& names, const WebVector<WebString>& labels, - int defaultSuggestionIndex) + int separatorIndex) { ASSERT(names.size() == labels.size()); - ASSERT(defaultSuggestionIndex < static_cast<int>(names.size())); + ASSERT(separatorIndex < static_cast<int>(names.size())); if (names.isEmpty()) { hideSuggestionsPopup(); @@ -1764,7 +1814,7 @@ void WebViewImpl::applyAutoFillSuggestions( m_autoFillPopupClient.set(new AutoFillPopupMenuClient); m_autoFillPopupClient->initialize(inputElem, names, labels, - defaultSuggestionIndex); + separatorIndex); if (m_suggestionsPopupClient != m_autoFillPopupClient.get()) { hideSuggestionsPopup(); @@ -1781,7 +1831,7 @@ void WebViewImpl::applyAutoFillSuggestions( m_suggestionsPopup = m_autoFillPopup.get(); if (m_suggestionsPopupShowing) { - m_autoFillPopupClient->setSuggestions(names, labels); + m_autoFillPopupClient->setSuggestions(names, labels, separatorIndex); refreshSuggestionsPopup(); } else { m_suggestionsPopup->show(focusedNode->getRect(), diff --git a/WebKit/chromium/src/WebViewImpl.h b/WebKit/chromium/src/WebViewImpl.h index b2fc680..8b15f8a 100644 --- a/WebKit/chromium/src/WebViewImpl.h +++ b/WebKit/chromium/src/WebViewImpl.h @@ -132,6 +132,10 @@ public: const WebPoint& clientPoint, const WebPoint& screenPoint, WebDragOperation operation); + virtual void dragSourceMovedTo( + const WebPoint& clientPoint, + const WebPoint& screenPoint, + WebDragOperation operation); virtual void dragSourceSystemDragEnded(); virtual WebDragOperation dragTargetDragEnter( const WebDragData& dragData, int identity, @@ -162,7 +166,7 @@ public: const WebNode&, const WebVector<WebString>& names, const WebVector<WebString>& labels, - int defaultSuggestionIndex); + int separatorIndex); virtual void applyAutocompleteSuggestions( const WebNode&, const WebVector<WebString>& suggestions, @@ -347,6 +351,8 @@ private: // Returns true if the view was scrolled. bool scrollViewWithKeyboard(int keyCode, int modifiers); + void scrollForDragging(const WebPoint&); + void hideSelectPopup(); // Converts |pos| from window coordinates to contents coordinates and gets diff --git a/WebKit/chromium/src/gtk/WebInputEventFactory.cpp b/WebKit/chromium/src/gtk/WebInputEventFactory.cpp index f4db5ee..dc46b07 100644 --- a/WebKit/chromium/src/gtk/WebInputEventFactory.cpp +++ b/WebKit/chromium/src/gtk/WebInputEventFactory.cpp @@ -151,6 +151,60 @@ static int gdkEventToWindowsKeyCode(const GdkEventKey* event) GDK_period, // 0x3C: GDK_period GDK_slash, // 0x3D: GDK_slash 0, // 0x3E: GDK_Shift_R + 0, // 0x3F: + 0, // 0x40: + 0, // 0x41: + 0, // 0x42: + 0, // 0x43: + 0, // 0x44: + 0, // 0x45: + 0, // 0x46: + 0, // 0x47: + 0, // 0x48: + 0, // 0x49: + 0, // 0x4A: + 0, // 0x4B: + 0, // 0x4C: + 0, // 0x4D: + 0, // 0x4E: + 0, // 0x4F: + 0, // 0x50: + 0, // 0x51: + 0, // 0x52: + 0, // 0x53: + 0, // 0x54: + 0, // 0x55: + 0, // 0x56: + 0, // 0x57: + 0, // 0x58: + 0, // 0x59: + 0, // 0x5A: + 0, // 0x5B: + 0, // 0x5C: + 0, // 0x5D: + 0, // 0x5E: + 0, // 0x5F: + 0, // 0x60: + 0, // 0x61: + 0, // 0x62: + 0, // 0x63: + 0, // 0x64: + 0, // 0x65: + 0, // 0x66: + 0, // 0x67: + 0, // 0x68: + 0, // 0x69: + 0, // 0x6A: + 0, // 0x6B: + 0, // 0x6C: + 0, // 0x6D: + 0, // 0x6E: + 0, // 0x6F: + 0, // 0x70: + 0, // 0x71: + 0, // 0x72: + GDK_Super_L, // 0x73: GDK_Super_L + GDK_Super_R, // 0x74: GDK_Super_R }; // |windowsKeyCode| has to include a valid virtual-key code even when we diff --git a/WebKit/chromium/src/js/DebuggerAgent.js b/WebKit/chromium/src/js/DebuggerAgent.js index 67e54aa..8d2457f 100644 --- a/WebKit/chromium/src/js/DebuggerAgent.js +++ b/WebKit/chromium/src/js/DebuggerAgent.js @@ -181,7 +181,7 @@ devtools.DebuggerAgent.prototype.initUI = function() // pending addition into the UI. for (var scriptId in this.parsedScripts_) { var script = this.parsedScripts_[scriptId]; - WebInspector.parsedScriptSource(scriptId, script.getUrl(), undefined /* script source */, script.getLineOffset() + 1); + WebInspector.parsedScriptSource(scriptId, script.getUrl(), undefined /* script source */, script.getLineOffset() + 1, script.worldType()); this.restoreBreakpoints_(scriptId, script.getUrl()); } return; @@ -307,7 +307,7 @@ devtools.DebuggerAgent.prototype.addBreakpoint = function(sourceId, line, enable /** - * Changes given line of the script. + * Changes given line of the script. */ devtools.DebuggerAgent.prototype.editScriptSource = function(sourceId, newContent, callback) { @@ -319,12 +319,31 @@ devtools.DebuggerAgent.prototype.editScriptSource = function(sourceId, newConten var cmd = new devtools.DebugCommand("changelive", commandArguments); devtools.DebuggerAgent.sendCommand_(cmd); this.requestSeqToCallback_[cmd.getSequenceNumber()] = function(msg) { - if (!msg.isSuccess()) - WebInspector.log("Unable to modify source code within given scope. Only function bodies are editable at the moment.", WebInspector.ConsoleMessage.MessageLevel.Warning); - this.resolveScriptSource(sourceId, callback); - if (WebInspector.panels.scripts.paused) - this.requestBacktrace_(); + if (!msg.isSuccess()) { + callback(false, "Unable to modify source code within given scope. Only function bodies are editable at the moment.", null); + return; + } + + this.resolveScriptSource(sourceId, requestBacktrace.bind(this)); }.bind(this); + + + function requestBacktrace(newScriptSource) { + if (WebInspector.panels.scripts.paused) + this.requestBacktrace_(handleBacktraceResponse.bind(this, newScriptSource)); + else + reportDidCommitEditing(newScriptSource); + } + + function handleBacktraceResponse(newScriptSource, msg) { + this.updateCallFramesFromBacktraceResponse_(msg); + reportDidCommitEditing(newScriptSource, this.callFrames_); + } + + function reportDidCommitEditing(newScriptSource, callFrames) { + callback(true, newScriptSource, callFrames); + } + RemoteDebuggerAgent.processDebugCommands(); }; @@ -679,12 +698,14 @@ devtools.DebuggerAgent.prototype.requestClearBreakpoint_ = function(breakpointId /** * Sends "backtrace" request to v8. */ -devtools.DebuggerAgent.prototype.requestBacktrace_ = function() +devtools.DebuggerAgent.prototype.requestBacktrace_ = function(opt_customHandler) { var cmd = new devtools.DebugCommand("backtrace", { "compactFormat":true }); devtools.DebuggerAgent.sendCommand_(cmd); + var responseHandler = opt_customHandler ? opt_customHandler : this.handleBacktraceResponse_.bind(this); + this.requestSeqToCallback_[cmd.getSequenceNumber()] = responseHandler; }; @@ -800,7 +821,7 @@ devtools.DebuggerAgent.prototype.handleDebuggerOutput_ = function(output) else if (msg.getCommand() === "clearbreakpoint") this.handleClearBreakpointResponse_(msg); else if (msg.getCommand() === "backtrace") - this.handleBacktraceResponse_(msg); + this.invokeCallbackForResponse_(msg); else if (msg.getCommand() === "lookup") this.invokeCallbackForResponse_(msg); else if (msg.getCommand() === "evaluate") @@ -948,17 +969,17 @@ devtools.DebuggerAgent.prototype.handleAfterCompileEvent_ = function(msg) devtools.DebuggerAgent.prototype.addScriptInfo_ = function(script, msg) { var context = msg.lookup(script.context.ref); - var contextType; // Find the type from context data. The context data has the format // "type,id". var comma = context.data.indexOf(","); if (comma < 0) - return - contextType = context.data.substring(0, comma); - this.parsedScripts_[script.id] = new devtools.ScriptInfo(script.id, script.name, script.lineOffset, contextType); + return; + var contextType = context.data.substring(0, comma); + var info = new devtools.ScriptInfo(script.id, script.name, script.lineOffset, contextType); + this.parsedScripts_[script.id] = info; if (this.scriptsPanelInitialized_) { // Only report script as parsed after scripts panel has been shown. - WebInspector.parsedScriptSource(script.id, script.name, script.source, script.lineOffset + 1); + WebInspector.parsedScriptSource(script.id, script.name, script.source, script.lineOffset + 1, info.worldType()); this.restoreBreakpoints_(script.id, script.name); } }; @@ -991,13 +1012,20 @@ devtools.DebuggerAgent.prototype.handleBacktraceResponse_ = function(msg) */ devtools.DebuggerAgent.prototype.doHandleBacktraceResponse_ = function(msg) { + this.updateCallFramesFromBacktraceResponse_(msg); + WebInspector.pausedScript(this.callFrames_); + this.showPendingExceptionMessage_(); + InspectorFrontendHost.bringToFront(); +}; + + +devtools.DebuggerAgent.prototype.updateCallFramesFromBacktraceResponse_ = function(msg) +{ var frames = msg.getBody().frames; this.callFrames_ = []; for (var i = 0; i < frames.length; ++i) this.callFrames_.push(this.formatCallFrame_(frames[i])); - WebInspector.pausedScript(this.callFrames_); - this.showPendingExceptionMessage_(); - InspectorFrontendHost.bringToFront(); + return this.callFrames_; }; @@ -1044,7 +1072,7 @@ devtools.DebuggerAgent.prototype.formatCallFrame_ = function(stackFrame) var existingScript = this.parsedScripts_[sourceId]; if (!existingScript) { this.parsedScripts_[sourceId] = new devtools.ScriptInfo(sourceId, null /* name */, 0 /* line */, "unknown" /* type */, true /* unresolved */); - WebInspector.parsedScriptSource(sourceId, null, null, 0); + WebInspector.parsedScriptSource(sourceId, null, null, 0, WebInspector.Script.WorldType.MAIN_WORLD); } var funcName = func.name || func.inferredName || "(anonymous function)"; @@ -1257,6 +1285,14 @@ devtools.ScriptInfo.prototype.isUnresolved = function() }; +devtools.ScriptInfo.prototype.worldType = function() +{ + if (this.contextType_ === "injected") + return WebInspector.Script.WorldType.EXTENSIONS_WORLD; + return WebInspector.Script.WorldType.MAIN_WORLD; +}; + + /** * @param {number} line 0-based line number in the script. * @return {?devtools.BreakpointInfo} Information on a breakpoint at the diff --git a/WebKit/chromium/src/js/DebuggerScript.js b/WebKit/chromium/src/js/DebuggerScript.js index 7e5b430..3ff3eb7 100644 --- a/WebKit/chromium/src/js/DebuggerScript.js +++ b/WebKit/chromium/src/js/DebuggerScript.js @@ -28,7 +28,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -function debuggerScriptConstructor() { +(function () { var DebuggerScript = {}; DebuggerScript._breakpoints = {}; @@ -39,6 +39,11 @@ DebuggerScript.PauseOnExceptionsState = { PauseOnUncaughtExceptions: 2 }; +DebuggerScript.ScriptWorldType = { + MainWorld : 0, + ExtensionsWorld : 1 +}; + DebuggerScript._pauseOnExceptionsState = DebuggerScript.PauseOnExceptionsState.DontPauseOnExceptions; Debug.clearBreakOnException(); Debug.clearBreakOnUncaughtException(); @@ -50,11 +55,21 @@ DebuggerScript.getAfterCompileScript = function(eventData) DebuggerScript.getScripts = function(contextData) { - var scripts = Debug.scripts(); var result = []; + + if (!contextData) + return result; + var comma = contextData.indexOf(","); + if (comma === -1) + return result; + // Context data is a string in the following format: + // ("page"|"injected")","<page id> + var idSuffix = contextData.substring(comma); // including the comma + + var scripts = Debug.scripts(); for (var i = 0; i < scripts.length; ++i) { var script = scripts[i]; - if (contextData === script.context_data) + if (script.context_data && script.context_data.lastIndexOf(idSuffix) != -1) result.push(DebuggerScript._formatScript(script)); } return result; @@ -62,13 +77,16 @@ DebuggerScript.getScripts = function(contextData) DebuggerScript._formatScript = function(script) { + var scriptWorldType = DebuggerScript.ScriptWorldType.MainWorld; + if (script.context_data && script.context_data.indexOf("injected") == 0) + scriptWorldType = DebuggerScript.ScriptWorldType.ExtensionsWorld; return { id: script.id, name: script.name, source: script.source, lineOffset: script.line_offset, lineCount: script.lineCount(), - contextData: script.context_data + scriptWorldType: scriptWorldType }; } @@ -152,6 +170,24 @@ DebuggerScript.stepOutOfFunction = function(execState) execState.prepareStep(Debug.StepAction.StepOut, 1); } +DebuggerScript.editScriptSource = function(scriptId, newSource) +{ + var scripts = Debug.scripts(); + var scriptToEdit = null; + for (var i = 0; i < scripts.length; i++) { + if (scripts[i].id == scriptId) { + scriptToEdit = scripts[i]; + break; + } + } + if (!scriptToEdit) + throw("Script not found"); + + var changeLog = []; + Debug.LiveEdit.SetScriptSource(scriptToEdit, newSource, changeLog); + return scriptToEdit.source; +} + DebuggerScript.clearBreakpoints = function(execState, args) { for (var key in DebuggerScript._breakpoints) { @@ -239,4 +275,4 @@ DebuggerScript._v8ToWebkitLineNumber = function(line) return DebuggerScript; -} +})(); diff --git a/WebKit/chromium/src/js/DevTools.js b/WebKit/chromium/src/js/DevTools.js index 6e9c090..398d358 100644 --- a/WebKit/chromium/src/js/DevTools.js +++ b/WebKit/chromium/src/js/DevTools.js @@ -183,8 +183,8 @@ WebInspector.loaded = function() Preferences.heapProfilerPresent = true; Preferences.debuggerAlwaysEnabled = true; Preferences.profilerAlwaysEnabled = true; - RemoteDebuggerAgent.setDebuggerScriptSource("(" + debuggerScriptConstructor + ")();"); - + Preferences.canEditScriptSource = true; + oldLoaded.call(this); InspectorFrontendHost.loaded(); @@ -210,42 +210,6 @@ document.addEventListener("DOMContentLoaded", devtools.domContentLoaded, false); if (!window.v8ScriptDebugServerEnabled) { -/** - * This override is necessary for adding script source asynchronously. - * @override - */ -WebInspector.ScriptView.prototype.setupSourceFrameIfNeeded = function() -{ - if (!this._frameNeedsSetup) - return; - - this.attach(); - - if (this.script.source) - this.didResolveScriptSource_(); - else { - var self = this; - devtools.tools.getDebuggerAgent().resolveScriptSource( - this.script.sourceID, - function(source) { - self.script.source = source || WebInspector.UIString("<source is not available>"); - self.didResolveScriptSource_(); - }); - } -}; - - -/** - * Performs source frame setup when script source is aready resolved. - */ -WebInspector.ScriptView.prototype.didResolveScriptSource_ = function() -{ - this.sourceFrame.setContent("text/javascript", this._prependWhitespace(this.script.source)); - this._sourceFrameSetup = true; - delete this._frameNeedsSetup; -}; - - (function() { var oldShow = WebInspector.ScriptsPanel.prototype.show; @@ -296,6 +260,21 @@ InjectedScriptAccess.prototype.getCompletions = function(expressionString, inclu }; })(); +// Highlight extension content scripts in the scripts list. +(function () { + var original = WebInspector.ScriptsPanel.prototype._addScriptToFilesMenu; + WebInspector.ScriptsPanel.prototype._addScriptToFilesMenu = function(script) + { + var result = original.apply(this, arguments); + var debuggerAgent = devtools.tools.getDebuggerAgent(); + var type = debuggerAgent.getScriptContextType(script.sourceID); + var option = script.filesSelectOption; + if (type === "injected" && option) + option.addStyleClass("injected"); + return result; + }; +})(); + } @@ -349,22 +328,6 @@ WebInspector.UIString = function(string) })(); -// Highlight extension content scripts in the scripts list. -(function () { - var original = WebInspector.ScriptsPanel.prototype._addScriptToFilesMenu; - WebInspector.ScriptsPanel.prototype._addScriptToFilesMenu = function(script) - { - var result = original.apply(this, arguments); - var debuggerAgent = devtools.tools.getDebuggerAgent(); - var type = debuggerAgent.getScriptContextType(script.sourceID); - var option = script.filesSelectOption; - if (type === "injected" && option) - option.addStyleClass("injected"); - return result; - }; -})(); - - /** Pending WebKit upstream by apavlov). Fixes iframe vs drag problem. */ (function() { diff --git a/WebKit/chromium/src/js/DevToolsHostStub.js b/WebKit/chromium/src/js/DevToolsHostStub.js index cae4a1e..da5929a 100644 --- a/WebKit/chromium/src/js/DevToolsHostStub.js +++ b/WebKit/chromium/src/js/DevToolsHostStub.js @@ -55,10 +55,6 @@ RemoteDebuggerAgentStub.prototype.processDebugCommands = function() }; -RemoteDebuggerAgentStub.prototype.setDebuggerScriptSource = function(source) -{ -}; - /** * @constructor diff --git a/WebKit/chromium/src/js/InspectorControllerImpl.js b/WebKit/chromium/src/js/InspectorControllerImpl.js index 86f885a..327ca8f 100644 --- a/WebKit/chromium/src/js/InspectorControllerImpl.js +++ b/WebKit/chromium/src/js/InspectorControllerImpl.js @@ -61,13 +61,16 @@ devtools.InspectorBackendImpl = function() this.installInspectorControllerDelegate_("getResourceContent"); this.installInspectorControllerDelegate_("highlightDOMNode"); this.installInspectorControllerDelegate_("hideDOMNodeHighlight"); + this.installInspectorControllerDelegate_("performSearch"); this.installInspectorControllerDelegate_("releaseWrapperObjectGroup"); this.installInspectorControllerDelegate_("removeAllScriptsToEvaluateOnLoad"); this.installInspectorControllerDelegate_("reloadPage"); this.installInspectorControllerDelegate_("removeAttribute"); this.installInspectorControllerDelegate_("removeDOMStorageItem"); this.installInspectorControllerDelegate_("removeNode"); - this.installInspectorControllerDelegate_("saveFrontendSettings"); + this.installInspectorControllerDelegate_("saveApplicationSettings"); + this.installInspectorControllerDelegate_("saveSessionSettings"); + this.installInspectorControllerDelegate_("searchCanceled"); this.installInspectorControllerDelegate_("setAttribute"); this.installInspectorControllerDelegate_("setDOMStorageItem"); this.installInspectorControllerDelegate_("setInjectedScriptSource"); @@ -93,6 +96,8 @@ devtools.InspectorBackendImpl = function() if (window.v8ScriptDebugServerEnabled) { this.installInspectorControllerDelegate_("disableDebugger"); + this.installInspectorControllerDelegate_("editScriptSource"); + this.installInspectorControllerDelegate_("getScriptSource"); this.installInspectorControllerDelegate_("enableDebugger"); this.installInspectorControllerDelegate_("setBreakpoint"); this.installInspectorControllerDelegate_("removeBreakpoint"); @@ -143,12 +148,22 @@ devtools.InspectorBackendImpl.prototype.removeBreakpoint = function(sourceID, li devtools.InspectorBackendImpl.prototype.editScriptSource = function(callID, sourceID, newContent) { - devtools.tools.getDebuggerAgent().editScriptSource(sourceID, newContent, function(newFullBody) { - WebInspector.didEditScriptSource(callID, newFullBody); + devtools.tools.getDebuggerAgent().editScriptSource(sourceID, newContent, function(success, newBodyOrErrorMessage, callFrames) { + WebInspector.didEditScriptSource(callID, success, newBodyOrErrorMessage, callFrames); }); }; +devtools.InspectorBackendImpl.prototype.getScriptSource = function(callID, sourceID) +{ + devtools.tools.getDebuggerAgent().resolveScriptSource( + sourceID, + function(source) { + WebInspector.didGetScriptSource(callID, source); + }); +}; + + devtools.InspectorBackendImpl.prototype.activateBreakpoints = function() { devtools.tools.getDebuggerAgent().setBreakpointsActivated(true); diff --git a/WebKit/chromium/src/js/Tests.js b/WebKit/chromium/src/js/Tests.js index 758b8c0..fa910ab 100644 --- a/WebKit/chromium/src/js/Tests.js +++ b/WebKit/chromium/src/js/Tests.js @@ -1279,8 +1279,8 @@ TestSuite.prototype.testStepIn = function() }, { functionsOnStack: ["fact","d","a","(anonymous function)"], - lineNumber: 15, - lineText: " return r;" + lineNumber: 10, + lineText: " var r = 1;" }, function() { test.releaseControl(); diff --git a/WebKit/chromium/src/js/devTools.css b/WebKit/chromium/src/js/devTools.css index 2cb4ab3..0e6d284 100755 --- a/WebKit/chromium/src/js/devTools.css +++ b/WebKit/chromium/src/js/devTools.css @@ -1,7 +1,3 @@ -#scripts-files option.injected { - color: rgb(70, 134, 240); -} - .data-grid table { line-height: 120%; } diff --git a/WebKit/chromium/tests/PopupMenuTest.cpp b/WebKit/chromium/tests/PopupMenuTest.cpp index c98ea74..2756f9d 100644 --- a/WebKit/chromium/tests/PopupMenuTest.cpp +++ b/WebKit/chromium/tests/PopupMenuTest.cpp @@ -59,6 +59,8 @@ public: { m_selectIndex = listIndex; } + virtual void selectionChanged(unsigned, bool) {} + virtual void selectionCleared() {} virtual String itemText(unsigned listIndex) const { |