summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/webkit/WebCore/inspector/InspectorController.cpp
diff options
context:
space:
mode:
authorJocelyn Turcotte <jocelyn.turcotte@nokia.com>2009-09-24 12:56:11 (GMT)
committerJocelyn Turcotte <jocelyn.turcotte@nokia.com>2009-09-24 12:56:11 (GMT)
commit512d332d21860b1d08e86d6de96b80ce12d742bf (patch)
tree339a6f5962b587b198f2ed21bf9f64ac338b66eb /src/3rdparty/webkit/WebCore/inspector/InspectorController.cpp
parentcb89aab6b29fd5761f3b9d41354abcde11e103dc (diff)
downloadQt-512d332d21860b1d08e86d6de96b80ce12d742bf.zip
Qt-512d332d21860b1d08e86d6de96b80ce12d742bf.tar.gz
Qt-512d332d21860b1d08e86d6de96b80ce12d742bf.tar.bz2
Updated WebKit from /home/joce/dev/qtwebkit3/ to qtwebkit-4.6-snapshot-24092009 ( 75c44947a340d74a9e0098a3dfffabce0c9512ef )
Changes in WebKit/qt since the last update: ++ b/WebKit/qt/ChangeLog 2009-09-24 Martin Smith <msmith@trolltech.com> Reviewed by Simon Hausmann. qdoc: Added \brief texts to all the since 4.6 functions. * Api/qwebhistory.cpp: 2009-09-23 J-P Nurmi <jpnurmi@gmail.com> Reviewed by Simon Hausmann. Prevent QWebPage::setView() from changing the viewport size on the fly in case the view doesn't actually change. QWebPage::setView() is called upon every QWebGraphicsItem::hoverMoveEvent(), which forced the viewport size to be equal to the size of the whole graphics view. https://bugs.webkit.org/show_bug.cgi?id=29676 * Api/qwebpage.cpp: (QWebPage::setView): 2009-09-23 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> Reviewed by Simon Hausmann. [Qt] Crash fix in QWebHistory back and forward methods. QWebHistory::back() and QWebHistory::forward() were crashing on ASSERT in WebCore::BackForwardList. The methods should check canGoBack() and canGoForward() at the beginning. https://bugs.webkit.org/show_bug.cgi?id=29675 * Api/qwebhistory.cpp: (QWebHistory::back): (QWebHistory::forward): 2009-09-23 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> Reviewed by Simon Hausmann. [Qt] Bug fix. QWebHistory should call QWebPage::updateNavigationActions In QWebHistory's methods that change item count or current item call to QWebPage::updateNavigationActions should be executed. QWebHistory::clear() and QWebHistory::restorState() were changed. New helper method, QWebPagePrivate accesor, were created in QWebHistoryPrivate class. Two autotest were developed. https://bugs.webkit.org/show_bug.cgi?id=29246 * Api/qwebhistory.cpp: (QWebHistory::clear): (QWebHistory::restoreState): (QWebHistoryPrivate::page): * Api/qwebhistory_p.h: * tests/qwebhistory/tst_qwebhistory.cpp: (tst_QWebHistory::saveAndRestore_1): (tst_QWebHistory::clear): 2009-09-23 Norbert Leser <norbert.leser@nokia.com> Reviewed by Tor Arne Vestbø. Need to guard QX11Info include with Q_WS_X11. That class may not be available (in QT 4.5 for Symbian, for instance). Completes fixes in r48627 and r48604. * Api/qwebgraphicsitem.cpp: * Api/qwebview.cpp: 2009-09-22 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> Reviewed by Simon Hausmann. [Qt] Add default timeout while waiting for signals in QWebPage auto tests. https://bugs.webkit.org/show_bug.cgi?id=29637 * tests/qwebpage/tst_qwebpage.cpp: (waitForSignal): 2009-09-22 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> Reivewed by Simon Hausmann. Fix the Qt/Mac build after r48604 (Implement new QWebPageClient class) There's no QWidget::x11Info() on Mac, and setPlatformPluginWidget() takes a QWidget*, not a QWebPageClient* * Api/qwebgraphicsitem.cpp: (QWebGraphicsItemPrivate::screenNumber): * Api/qwebview.cpp: (QWebViewPrivate::screenNumber): 2009-09-21 Kenneth Rohde Christiansen <kenneth@webkit.org> Reviewed by Simon Hausmann. For Qt, platformPageClient() will now return a class derived from the QWebPageClient, so the patch adapts our Qt hooks to go though this class and not depend on the QWebView. * Api/qwebgraphicsitem.cpp: (QWebGraphicsItemPrivate::scroll): (QWebGraphicsItemPrivate::update): (QWebGraphicsItemPrivate::cursor): (QWebGraphicsItemPrivate::updateCursor): (QWebGraphicsItemPrivate::screenNumber): (QWebGraphicsItemPrivate::winId): (QWebGraphicsItem::event): (QWebGraphicsItem::setPage): * Api/qwebgraphicsitem.h: * Api/qwebpage.cpp: (QWebPagePrivate::QWebPagePrivate): * Api/qwebpage_p.h: * Api/qwebview.cpp: (QWebViewPrivate::scroll): (QWebViewPrivate::update): (QWebViewPrivate::cursor): (QWebViewPrivate::updateCursor): (QWebViewPrivate::screenNumber): (QWebViewPrivate::winId): (QWebView::setPage): (QWebView::event): * WebCoreSupport/ChromeClientQt.cpp: (WebCore::ChromeClientQt::repaint): (WebCore::ChromeClientQt::scroll): (WebCore::ChromeClientQt::platformPageClient): 2009-09-21 Yael Aharon <yael.aharon@nokia.com> Reviewed by Simon Hausmann. https://bugs.webkit.org/show_bug.cgi?id=29609 Build fix for windows when using Qt 4.5.0. * Api/qwebpage.cpp: (QWebPage::userAgentForUrl): 2009-09-19 Benjamin Poulain <benjamin.poulain@nokia.com> Reviewed by Simon Hausmann. https://bugs.webkit.org/show_bug.cgi?id=29345 The tests of QWebFrame did not use QTRY_VERIFY for tests involving the event loop. * tests/qwebframe/tst_qwebframe.cpp: * tests/util.h: Added. Copy of tests/shared/util.h of Qt 2009-09-19 Jakub Wieczorek <faw217@gmail.com> Reviewed by Simon Hausmann. [Qt] Add an autotest stub for QWebGraphicsItem. It just calls all the functions and makes sure they don't crash. * tests/qwebgraphicsitem/qwebgraphicsitem.pro: Added. * tests/qwebgraphicsitem/tst_qwebgraphicsitem.cpp: Added. (tst_QWebGraphicsItem::qwebgraphicsitem): * tests/tests.pro: 2009-09-18 Norbert Leser <norbert.leser@nokia.com> Reviewed by Eric Seidel. Corrected the Symbian specific UID3 values to be assigned from the "unprotected" pool that permits self-signing of those test and demo executables. (Added new UID3 values where they were missing for new components.) * QGVLauncher/QGVLauncher.pro: * QtLauncher/QtLauncher.pro: * tests/benchmarks/loading/tst_loading.pro: * tests/benchmarks/painting/tst_painting.pro: * tests/qwebelement/qwebelement.pro: * tests/qwebframe/qwebframe.pro: * tests/qwebhistory/qwebhistory.pro: * tests/qwebhistoryinterface/qwebhistoryinterface.pro: * tests/qwebpage/qwebpage.pro: * tests/qwebplugindatabase/qwebplugindatabase.pro: * tests/qwebview/qwebview.pro: 2009-09-17 Kenneth Rohde Christiansen <kenneth@webkit.org> Reviewed by Simon Hausmann. Make PlatformWindow return something else than PlatformWidget https://bugs.webkit.org/show_bug.cgi?id=29085 Reflect the rename of platformWindow and it's return type. * WebCoreSupport/ChromeClientQt.cpp: (WebCore::ChromeClientQt::platformPageClient): * WebCoreSupport/ChromeClientQt.h: 2009-09-18 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> Reviewed by Simon Hausmann. [Qt] Add persistence support for configuration options in the inspector. * Api/qwebinspector.cpp: * QtLauncher/main.cpp: (main): * WebCoreSupport/InspectorClientQt.cpp: (WebCore::InspectorClientQt::populateSetting): (WebCore::InspectorClientQt::storeSetting): (WebCore::variantToSetting): (WebCore::settingToVariant): 2009-09-17 Kenneth Rohde Christiansen <kenneth@webkit.org> Reviewed by Simon Hausmann. Improve documentation for Page Cache. * Api/qwebsettings.cpp: 2009-09-17 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> Reviewed by Simon Hausmann. [Qt] Update QWebSettings::setUserStyleSheetUrl() docs and test https://bugs.webkit.org/show_bug.cgi?id=29081 The documentation now specifies that the URL has to be a local file or a a data-URL (with utf-8 and base64-encoded data), as these are the only two schemes that the current code path accepts. The auto-test has been updated to reflect this limitation. At a later point we should concider adding API for the new way of doing both user defined stylesheets and scripts. * Api/qwebsettings.cpp: * tests/qwebpage/tst_qwebpage.cpp:
Diffstat (limited to 'src/3rdparty/webkit/WebCore/inspector/InspectorController.cpp')
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/InspectorController.cpp101
1 files changed, 92 insertions, 9 deletions
diff --git a/src/3rdparty/webkit/WebCore/inspector/InspectorController.cpp b/src/3rdparty/webkit/WebCore/inspector/InspectorController.cpp
index 6498d84..69a7e60 100644
--- a/src/3rdparty/webkit/WebCore/inspector/InspectorController.cpp
+++ b/src/3rdparty/webkit/WebCore/inspector/InspectorController.cpp
@@ -39,6 +39,7 @@
#include "CookieJar.h"
#include "Document.h"
#include "DocumentLoader.h"
+#include "DOMWindow.h"
#include "Element.h"
#include "FloatConversion.h"
#include "FloatQuad.h"
@@ -643,6 +644,10 @@ void InspectorController::populateScriptObjects()
if (!m_frontend)
return;
+ // Initialize dom agent and reset injected script state first.
+ if (m_domAgent->setDocument(m_inspectedPage->mainFrame()->document()))
+ resetInjectedScript();
+
ResourcesMap::iterator resourcesEnd = m_resources.end();
for (ResourcesMap::iterator it = m_resources.begin(); it != resourcesEnd; ++it)
it->second->createScriptObject(m_frontend.get());
@@ -662,8 +667,6 @@ void InspectorController::populateScriptObjects()
(*it)->bind(m_frontend.get());
#endif
- if (m_domAgent->setDocument(m_inspectedPage->mainFrame()->document()))
- resetInjectedScript();
m_frontend->populateInterface();
}
@@ -731,6 +734,9 @@ void InspectorController::didCommitLoad(DocumentLoader* loader)
m_currentUserInitiatedProfileNumber = 1;
m_nextUserInitiatedProfileNumber = 1;
#endif
+ // resetScriptObjects should be called before database and DOM storage
+ // resources are cleared so that it has a chance to unbind them.
+ resetScriptObjects();
#if ENABLE(DATABASE)
m_databaseResources.clear();
#endif
@@ -739,8 +745,6 @@ void InspectorController::didCommitLoad(DocumentLoader* loader)
#endif
if (m_frontend) {
- resetScriptObjects();
-
if (!loader->frameLoader()->isLoadingFromCachedPage()) {
ASSERT(m_mainResource && m_mainResource->isSameLoader(loader));
// We don't add the main resource until its load is committed. This is
@@ -1108,6 +1112,86 @@ void InspectorController::didUseDOMStorage(StorageArea* storageArea, bool isLoca
if (m_frontend)
resource->bind(m_frontend.get());
}
+
+void InspectorController::selectDOMStorage(Storage* storage)
+{
+ ASSERT(storage);
+ if (!m_frontend)
+ return;
+
+ Frame* frame = storage->frame();
+ bool isLocalStorage = (frame->domWindow()->localStorage() == storage);
+ int storageResourceId = 0;
+ DOMStorageResourcesSet::iterator domStorageEnd = m_domStorageResources.end();
+ for (DOMStorageResourcesSet::iterator it = m_domStorageResources.begin(); it != domStorageEnd; ++it) {
+ if ((*it)->isSameHostAndType(frame, isLocalStorage)) {
+ storageResourceId = (*it)->id();
+ break;
+ }
+ }
+ if (storageResourceId)
+ m_frontend->selectDOMStorage(storageResourceId);
+}
+
+void InspectorController::getDOMStorageEntries(int callId, int storageId)
+{
+ if (!m_frontend)
+ return;
+
+ ScriptArray jsonArray = m_frontend->newScriptArray();
+ InspectorDOMStorageResource* storageResource = getDOMStorageResourceForId(storageId);
+ if (storageResource) {
+ storageResource->startReportingChangesToFrontend();
+ Storage* domStorage = storageResource->domStorage();
+ for (unsigned i = 0; i < domStorage->length(); ++i) {
+ String name(domStorage->key(i));
+ String value(domStorage->getItem(name));
+ ScriptArray entry = m_frontend->newScriptArray();
+ entry.set(0, name);
+ entry.set(1, value);
+ jsonArray.set(i, entry);
+ }
+ }
+ m_frontend->didGetDOMStorageEntries(callId, jsonArray);
+}
+
+void InspectorController::setDOMStorageItem(long callId, long storageId, const String& key, const String& value)
+{
+ if (!m_frontend)
+ return;
+
+ bool success = false;
+ InspectorDOMStorageResource* storageResource = getDOMStorageResourceForId(storageId);
+ if (storageResource) {
+ ExceptionCode exception = 0;
+ storageResource->domStorage()->setItem(key, value, exception);
+ success = (exception == 0);
+ }
+ m_frontend->didSetDOMStorageItem(callId, success);
+}
+
+void InspectorController::removeDOMStorageItem(long callId, long storageId, const String& key)
+{
+ if (!m_frontend)
+ return;
+
+ bool success = false;
+ InspectorDOMStorageResource* storageResource = getDOMStorageResourceForId(storageId);
+ if (storageResource) {
+ storageResource->domStorage()->removeItem(key);
+ success = true;
+ }
+ m_frontend->didRemoveDOMStorageItem(callId, success);
+}
+
+InspectorDOMStorageResource* InspectorController::getDOMStorageResourceForId(int storageId)
+{
+ DOMStorageResourcesSet::iterator domStorageEnd = m_domStorageResources.end();
+ for (DOMStorageResourcesSet::iterator it = m_domStorageResources.begin(); it != domStorageEnd; ++it)
+ if ((*it)->id() == storageId)
+ return it->get();
+ return 0;
+}
#endif
void InspectorController::moveWindowBy(float x, float y) const
@@ -1531,18 +1615,17 @@ InspectorController::SpecialPanels InspectorController::specialPanelForJSName(co
ScriptValue InspectorController::wrapObject(const ScriptValue& quarantinedObject)
{
+ ScriptFunctionCall function(m_scriptState, m_injectedScriptObj, "createProxyObject");
+ function.appendArgument(quarantinedObject);
if (quarantinedObject.isObject()) {
long id = m_lastBoundObjectId++;
String objectId = String::format("object#%ld", id);
m_idToConsoleObject.set(objectId, quarantinedObject);
- ScriptFunctionCall function(m_scriptState, m_injectedScriptObj, "createProxyObject");
- function.appendArgument(quarantinedObject);
function.appendArgument(objectId);
- ScriptValue wrapper = function.call();
- return wrapper;
}
- return quarantinedObject;
+ ScriptValue wrapper = function.call();
+ return wrapper;
}
ScriptValue InspectorController::unwrapObject(const String& objectId)