Debugger: Change in response for message "destroyObject".

Response for "destroyObject" now has the debugId of the
destroyed object. This is used to fetch the parent object rather
than querying the engine context.

Change-Id: I2e5b7650cbe847117cce6952206dd479ee696f0e
Reviewed-by: Aurindam Jana <aurindam.jana@nokia.com>
This commit is contained in:
Simjees Abraham
2012-05-25 09:33:02 +02:00
committed by Aurindam Jana
parent 30a6beaec0
commit bd5fe5243b
6 changed files with 32 additions and 8 deletions

View File

@@ -83,7 +83,7 @@ signals:
void designModeBehaviorChanged(bool inDesignMode); void designModeBehaviorChanged(bool inDesignMode);
void showAppOnTopChanged(bool showAppOnTop); void showAppOnTopChanged(bool showAppOnTop);
void reloaded(); // the server has reloaded the document void reloaded(); // the server has reloaded the document
void destroyedObject(); void destroyedObject(int);
void logActivity(QString client, QString message); void logActivity(QString client, QString message);

View File

@@ -35,10 +35,11 @@
//INSPECTOR SERVICE PROTOCOL //INSPECTOR SERVICE PROTOCOL
// <HEADER><COMMAND><DATA> // <HEADER><COMMAND><DATA>
// <HEADER> : <type{request, response, event}><requestId/eventId>[<response_success_bool>] // <HEADER> : <type{request, response, event}><requestId/eventId>[<response_success_bool>]
// <COMMAND> : {"enable", "disable", "select", "setAnimationSpeed", // <COMMAND> : {"enable", "disable", "select", "reload", "setAnimationSpeed",
// "showAppOnTop", "createObject", "destroyObject", "moveObject", // "showAppOnTop", "createObject", "destroyObject", "moveObject",
// "clearCache"} // "clearCache"}
// <DATA> : select: <debugIds_int_list> // <DATA> : select: <debugIds_int_list>
// reload: <hash<changed_filename_string, filecontents_bytearray>>
// setAnimationSpeed: <speed_real> // setAnimationSpeed: <speed_real>
// showAppOnTop: <set_bool> // showAppOnTop: <set_bool>
// createObject: <qml_string><parentId_int><imports_string_list><filename_string> // createObject: <qml_string><parentId_int><imports_string_list><filename_string>
@@ -88,8 +89,12 @@ void QmlToolsClient::messageReceived(const QByteArray &message)
if ((m_reloadQueryId != -1) && (m_reloadQueryId == requestId) && success) if ((m_reloadQueryId != -1) && (m_reloadQueryId == requestId) && success)
emit reloaded(); emit reloaded();
if ((m_destroyObjectQueryId != -1) && (m_destroyObjectQueryId == requestId) && success) if ((m_destroyObjectQueryId != -1) && (m_destroyObjectQueryId == requestId)
emit destroyedObject(); && success && !ds.atEnd()) {
int objectDebugId;
ds >> objectDebugId;
emit destroyedObject(objectDebugId);
}
log(LogReceive, type, QString(QLatin1String("requestId: %1 success: %2")) log(LogReceive, type, QString(QLatin1String("requestId: %1 success: %2"))
.arg(QString::number(requestId)).arg(QString::number(success))); .arg(QString::number(requestId)).arg(QString::number(success)));

View File

@@ -201,7 +201,7 @@ void QmlInspectorAdapter::toolsClientStatusChanged(QmlDebug::ClientStatus status
connect(client, SIGNAL(logActivity(QString,QString)), connect(client, SIGNAL(logActivity(QString,QString)),
m_debugAdapter, SLOT(logServiceActivity(QString,QString))); m_debugAdapter, SLOT(logServiceActivity(QString,QString)));
connect(client, SIGNAL(reloaded()), SLOT(onReloaded())); connect(client, SIGNAL(reloaded()), SLOT(onReloaded()));
connect(client, SIGNAL(destroyedObject()), SLOT(onDestroyedObject())); connect(client, SIGNAL(destroyedObject(int)), SLOT(onDestroyedObject(int)));
// only enable zoom action for Qt 4.x/old client // only enable zoom action for Qt 4.x/old client
// (zooming is integrated into selection tool in Qt 5). // (zooming is integrated into selection tool in Qt 5).
@@ -595,9 +595,9 @@ void QmlInspectorAdapter::onReloaded()
} }
} }
void QmlInspectorAdapter::onDestroyedObject() void QmlInspectorAdapter::onDestroyedObject(int objectDebugId)
{ {
m_agent->queryEngineContext(); m_agent->fetchObject(m_agent->parentIdForObject(objectDebugId));
} }
} // namespace Internal } // namespace Internal

View File

@@ -98,7 +98,7 @@ private slots:
void onUpdateOnSaveChanged(const QVariant &value); void onUpdateOnSaveChanged(const QVariant &value);
void onReload(); void onReload();
void onReloaded(); void onReloaded();
void onDestroyedObject(); void onDestroyedObject(int);
private: private:
void setActiveEngineClient(QmlDebug::BaseEngineDebugClient *client); void setActiveEngineClient(QmlDebug::BaseEngineDebugClient *client);

View File

@@ -254,6 +254,8 @@ QHash<int,QString> QmlInspectorAgent::rootObjectIds() const
QHash<int,QString> rIds; QHash<int,QString> rIds;
foreach (const QByteArray &in, m_debugIdToIname) { foreach (const QByteArray &in, m_debugIdToIname) {
const WatchData *data = m_debuggerEngine->watchHandler()->findData(in); const WatchData *data = m_debuggerEngine->watchHandler()->findData(in);
if (!data)
continue;
int debugId = data->id; int debugId = data->id;
QString className = data->type; QString className = data->type;
rIds.insert(debugId, className); rIds.insert(debugId, className);
@@ -467,6 +469,22 @@ void QmlInspectorAgent::reloadEngines()
m_engineQueryId = m_engineClient->queryAvailableEngines(); m_engineQueryId = m_engineClient->queryAvailableEngines();
} }
int QmlInspectorAgent::parentIdForObject(int objectDebugId)
{
int pid = -1;
if (m_debugIdToIname.contains(objectDebugId)) {
QByteArray iname = m_debugIdToIname.value(objectDebugId);
if (iname.count('.') > 1) {
int offset = iname.lastIndexOf('.');
QTC_ASSERT(offset > 0, return pid);
iname = iname.left(offset);
pid = m_debugIdToIname.key(iname);
}
}
return pid;
}
void QmlInspectorAgent::queryEngineContext() void QmlInspectorAgent::queryEngineContext()
{ {
if (debug) if (debug)

View File

@@ -89,6 +89,7 @@ public:
void setEngineClient(QmlDebug::BaseEngineDebugClient *client); void setEngineClient(QmlDebug::BaseEngineDebugClient *client);
QString displayName(int objectDebugId) const; QString displayName(int objectDebugId) const;
int parentIdForObject(int objectDebugId);
public slots: public slots:
void fetchContextObjectsForLocation(const QString &file, void fetchContextObjectsForLocation(const QString &file,