summaryrefslogtreecommitdiff
path: root/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp')
-rw-r--r--src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp212
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;
}
}