@@ -38,6 +38,13 @@ private Q_SLOTS:
3838 // SIGNAL method, because QtDBus doesn't know about PropertiesChanged.
3939 // So we connect the hard way for the benefit of any tests that want
4040 // to watch.
41+ QDBusConnection::sessionBus().connect(
42+ "com.canonical.UnityGreeter",
43+ "/",
44+ "org.freedesktop.DBus.Properties",
45+ "PropertiesChanged",
46+ this,
47+ SIGNAL(PropertiesChangedRelay(const QString&, const QVariantMap&, const QStringList&)));
4148 QDBusConnection::sessionBus().connect(
4249 "com.canonical.UnityGreeter",
4350 "/list",
@@ -57,6 +64,12 @@ private Q_SLOTS:
5764 view->show();
5865 QTest::qWaitForWindowExposed(view);
5966
67+ dbusMain = new QDBusInterface("com.canonical.UnityGreeter",
68+ "/",
69+ "com.canonical.UnityGreeter",
70+ QDBusConnection::sessionBus(), view);
71+ QVERIFY(dbusMain->isValid());
72+
6073 dbusList = new QDBusInterface("com.canonical.UnityGreeter",
6174 "/list",
6275 "com.canonical.UnityGreeter.List",
@@ -155,9 +168,29 @@ private Q_SLOTS:
155168 QVERIFY(arguments.at(1).toMap()["EntryIsLocked"] == false);
156169 }
157170
171+ void testIsActive()
172+ {
173+ QVERIFY(!greeter->isActive());
174+ QVERIFY(!dbusMain->property("IsActive").toBool());
175+
176+ QSignalSpy spy(this, SIGNAL(PropertiesChangedRelay(QString, QVariantMap, QStringList)));
177+ greeter->setIsActive(true);
178+ spy.wait();
179+
180+ QVERIFY(greeter->isActive());
181+ QVERIFY(dbusMain->property("IsActive").toBool());
182+
183+ QCOMPARE(spy.count(), 1);
184+ QList<QVariant> arguments = spy.takeFirst();
185+ QCOMPARE(arguments.at(0).toString(), QString("com.canonical.UnityGreeter"));
186+ QVERIFY(arguments.at(1).toMap().contains("IsActive"));
187+ QVERIFY(arguments.at(1).toMap()["IsActive"].toBool());
188+ }
189+
158190private:
159191 QQuickView *view;
160192 Greeter *greeter;
193+ QDBusInterface *dbusMain;
161194 QDBusInterface *dbusList;
162195};
163196