diff options
Diffstat (limited to 'src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp')
-rw-r--r-- | src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp | 212 |
1 files changed, 90 insertions, 122 deletions
diff --git a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp index 5fbc876a8e..139499d119 100644 --- a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp +++ b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp @@ -50,17 +50,16 @@ namespace WebCore { static const QLatin1String settingStoragePrefix("Qt/QtWebKit/QWebInspector/"); static const QLatin1String settingStorageTypeSuffix(".type"); -static InspectorController::Setting variantToSetting(const QVariant& qvariant); -static QVariant settingToVariant(const InspectorController::Setting& icSetting); +static String variantToSetting(const QVariant& qvariant); +static QVariant settingToVariant(const String& value); class InspectorClientWebPage : public QWebPage { Q_OBJECT friend class InspectorClientQt; public: InspectorClientWebPage(QObject* parent = 0) - : QWebPage(parent) + : QWebPage(parent) { - settings()->setAttribute(QWebSettings::DeveloperExtrasEnabled, false); } QWebPage* createWindow(QWebPage::WebWindowType) @@ -82,190 +81,159 @@ void InspectorClientQt::inspectorDestroyed() delete this; } -Page* InspectorClientQt::createPage() + +void InspectorClientQt::openInspectorFrontend(WebCore::InspectorController*) { QWebView* inspectorView = new QWebView; InspectorClientWebPage* inspectorPage = new InspectorClientWebPage(inspectorView); inspectorView->setPage(inspectorPage); - m_inspectorView.set(inspectorView); - inspectorPage->mainFrame()->load(QString::fromLatin1("qrc:/webkit/inspector/inspector.html")); + QUrl inspectorUrl = m_inspectedWebPage->settings()->inspectorUrl(); + if (!inspectorUrl.isValid()) + inspectorUrl = QUrl("qrc:/webkit/inspector/inspector.html"); + inspectorView->page()->mainFrame()->load(inspectorUrl); m_inspectedWebPage->d->inspectorFrontend = inspectorView; m_inspectedWebPage->d->getOrCreateInspector()->d->setFrontend(inspectorView); - return m_inspectorView->page()->d->page; + inspectorView->page()->d->page->inspectorController()->setInspectorFrontendClient(new InspectorFrontendClientQt(m_inspectedWebPage, inspectorView)); } -String InspectorClientQt::localizedStringsURL() +void InspectorClientQt::highlight(Node*) { notImplemented(); - return String(); } -String InspectorClientQt::hiddenPanels() +void InspectorClientQt::hideHighlight() { notImplemented(); - return String(); } -void InspectorClientQt::showWindow() +void InspectorClientQt::populateSetting(const String& key, String* setting) { - updateWindowTitle(); + QSettings qsettings; + if (qsettings.status() == QSettings::AccessError) { + // QCoreApplication::setOrganizationName and QCoreApplication::setApplicationName haven't been called + qWarning("QWebInspector: QSettings couldn't read configuration setting [%s].", + qPrintable(static_cast<QString>(key))); + return; + } - m_inspectedWebPage->d->inspectorController()->setWindowVisible(true, true); - // We don't allow the inspector to ask for widget visibility itself because showWindow is - // not always called when we want. - // Inspecting an element or calling QWebInspector::show() should already have made the - // widget visible. + QString settingKey(settingStoragePrefix + QString(key)); + QString storedValueType = qsettings.value(settingKey + settingStorageTypeSuffix).toString(); + QVariant storedValue = qsettings.value(settingKey); + storedValue.convert(QVariant::nameToType(storedValueType.toAscii().data())); + *setting = variantToSetting(storedValue); } -void InspectorClientQt::closeWindow() +void InspectorClientQt::storeSetting(const String& key, const String& setting) { - if (m_inspectedWebPage->d->inspector) - m_inspectedWebPage->d->inspector->close(); -} + QSettings qsettings; + if (qsettings.status() == QSettings::AccessError) { + qWarning("QWebInspector: QSettings couldn't persist configuration setting [%s].", + qPrintable(static_cast<QString>(key))); + return; + } -void InspectorClientQt::attachWindow() -{ - notImplemented(); + QVariant valueToStore = settingToVariant(setting); + QString settingKey(settingStoragePrefix + QString(key)); + qsettings.setValue(settingKey, valueToStore); + qsettings.setValue(settingKey + settingStorageTypeSuffix, QVariant::typeToName(valueToStore.type())); } -void InspectorClientQt::detachWindow() +static String variantToSetting(const QVariant& qvariant) { - notImplemented(); + String retVal; + + switch (qvariant.type()) { + case QVariant::Bool: + retVal = qvariant.toBool() ? "true" : "false"; + case QVariant::String: + retVal = qvariant.toString(); + } + + return retVal; } -void InspectorClientQt::setAttachedWindowHeight(unsigned) +static QVariant settingToVariant(const String& setting) { - notImplemented(); + QVariant retVal; + retVal.setValue(static_cast<QString>(setting)); + return retVal; } -void InspectorClientQt::highlight(Node*) +InspectorFrontendClientQt::InspectorFrontendClientQt(QWebPage* inspectedWebPage, PassOwnPtr<QWebView> inspectorView) + : InspectorFrontendClientLocal(inspectedWebPage->d->page->inspectorController(), inspectorView->page()->d->page) + , m_inspectedWebPage(inspectedWebPage) + , m_inspectorView(inspectorView) + , m_destroyingInspectorView(false) { - notImplemented(); } -void InspectorClientQt::hideHighlight() +void InspectorFrontendClientQt::frontendLoaded() { - notImplemented(); + InspectorFrontendClientLocal::frontendLoaded(); + setAttachedWindow(true); } -void InspectorClientQt::inspectedURLChanged(const String& newURL) +String InspectorFrontendClientQt::localizedStringsURL() { - m_inspectedURL = newURL; - updateWindowTitle(); + notImplemented(); + return String(); } -void InspectorClientQt::inspectorWindowObjectCleared() +String InspectorFrontendClientQt::hiddenPanels() { notImplemented(); + return String(); } -void InspectorClientQt::updateWindowTitle() +void InspectorFrontendClientQt::bringToFront() { - if (m_inspectedWebPage->d->inspector) { - QString caption = QCoreApplication::translate("QWebPage", "Web Inspector - %2").arg(m_inspectedURL); - m_inspectedWebPage->d->inspector->setWindowTitle(caption); - } + updateWindowTitle(); } -void InspectorClientQt::populateSetting(const String& key, InspectorController::Setting& setting) +void InspectorFrontendClientQt::closeWindow() { - QSettings qsettings; - if (qsettings.status() == QSettings::AccessError) { - // QCoreApplication::setOrganizationName and QCoreApplication::setApplicationName haven't been called - qWarning("QWebInspector: QSettings couldn't read configuration setting [%s].", - qPrintable(static_cast<QString>(key))); + if (m_destroyingInspectorView) return; - } + m_destroyingInspectorView = true; - QString settingKey(settingStoragePrefix + QString(key)); - QString storedValueType = qsettings.value(settingKey + settingStorageTypeSuffix).toString(); - QVariant storedValue = qsettings.value(settingKey); - storedValue.convert(QVariant::nameToType(storedValueType.toAscii().data())); - setting = variantToSetting(storedValue); + // Clear reference from QWebInspector to the frontend view. + m_inspectedWebPage->d->getOrCreateInspector()->d->setFrontend(0); +#if ENABLE(INSPECTOR) + m_inspectedWebPage->d->inspectorController()->disconnectFrontend(); +#endif + // Clear pointer before deleting WebView to avoid recursive calls to its destructor. + delete m_inspectorView.release(); } -void InspectorClientQt::storeSetting(const String& key, const InspectorController::Setting& setting) +void InspectorFrontendClientQt::attachWindow() { - QSettings qsettings; - if (qsettings.status() == QSettings::AccessError) { - qWarning("QWebInspector: QSettings couldn't persist configuration setting [%s].", - qPrintable(static_cast<QString>(key))); - return; - } - - QVariant valueToStore = settingToVariant(setting); - QString settingKey(settingStoragePrefix + QString(key)); - qsettings.setValue(settingKey, valueToStore); - qsettings.setValue(settingKey + settingStorageTypeSuffix, QVariant::typeToName(valueToStore.type())); + notImplemented(); } -void InspectorClientQt::removeSetting(const String&) +void InspectorFrontendClientQt::detachWindow() { notImplemented(); } -static InspectorController::Setting variantToSetting(const QVariant& qvariant) +void InspectorFrontendClientQt::setAttachedWindowHeight(unsigned) { - InspectorController::Setting retVal; - - switch (qvariant.type()) { - case QVariant::Bool: - retVal.set(qvariant.toBool()); - break; - case QVariant::Double: - retVal.set(qvariant.toDouble()); - break; - case QVariant::Int: - retVal.set((long)qvariant.toInt()); - break; - case QVariant::String: - retVal.set(qvariant.toString()); - break; - case QVariant::StringList: { - QStringList qsList = qvariant.toStringList(); - int listCount = qsList.count(); - Vector<String> vector(listCount); - for (int i = 0; i < listCount; ++i) - vector[i] = qsList[i]; - retVal.set(vector); - break; - } - } - - return retVal; + notImplemented(); } -static QVariant settingToVariant(const InspectorController::Setting& icSetting) +void InspectorFrontendClientQt::inspectedURLChanged(const String& newURL) { - QVariant retVal; + m_inspectedURL = newURL; + updateWindowTitle(); +} - switch (icSetting.type()) { - case InspectorController::Setting::StringType: - retVal.setValue(static_cast<QString>(icSetting.string())); - break; - case InspectorController::Setting::StringVectorType: { - const Vector<String>& vector = icSetting.stringVector(); - Vector<String>::const_iterator iter; - QStringList qsList; - for (iter = vector.begin(); iter != vector.end(); ++iter) - qsList << *iter; - retVal.setValue(qsList); - break; - } - case InspectorController::Setting::DoubleType: - retVal.setValue(icSetting.doubleValue()); - break; - case InspectorController::Setting::IntegerType: - retVal.setValue((int)icSetting.integerValue()); - break; - case InspectorController::Setting::BooleanType: - retVal.setValue(icSetting.booleanValue()); - break; +void InspectorFrontendClientQt::updateWindowTitle() +{ + if (m_inspectedWebPage->d->inspector) { + QString caption = QCoreApplication::translate("QWebPage", "Web Inspector - %2").arg(m_inspectedURL); + m_inspectedWebPage->d->inspector->setWindowTitle(caption); } - - return retVal; } } |