void Ut_NotificationPreviewPresenter::testRemoveNotification() { NotificationPreviewPresenter presenter; QSignalSpy changedSpy(&presenter, SIGNAL(notificationChanged())); // Create two notifications createNotification(1); createNotification(2); presenter.updateNotification(1); presenter.updateNotification(2); // Remove the first one presenter.removeNotification(1); // Check that an empty notification is signaled onwards QCOMPARE(changedSpy.count(), 2); QCOMPARE(presenter.notification(), (LipstickNotification *)0); // Show and remove the second one presenter.showNextNotification(); presenter.removeNotification(2); // Check that an empty notification is signaled onwards QCOMPARE(changedSpy.count(), 4); QCOMPARE(presenter.notification(), (LipstickNotification *)0); // Check that the window is not yet hidden QCOMPARE(homeWindowVisible[homeWindows.first()], true); // Check that the window is hidden when it's time to show the next notification (which doesn't exist) presenter.showNextNotification(); QCOMPARE(homeWindowVisible[homeWindows.first()], false); }
void Ut_NotificationPreviewPresenter::testUpdateNotificationRemovesNotificationFromQueueIfNotShowable() { NotificationPreviewPresenter presenter; // Create two notifications LipstickNotification *notification1 = createNotification(1); LipstickNotification *notification2 = createNotification(2); presenter.updateNotification(1); presenter.updateNotification(2); // Update the notifications to have no summary or body QSignalSpy changedSpy(&presenter, SIGNAL(notificationChanged())); QSignalSpy presentedSpy(&presenter, SIGNAL(notificationPresented(uint))); notification1->setHints(QVariantHash()); notification2->setHints(QVariantHash()); presenter.updateNotification(1); presenter.updateNotification(2); // Check that the current notification is not removed QCOMPARE(changedSpy.count(), 0); // The notifications should be considered presented QCOMPARE(presentedSpy.count(), 2); // Check that the other notification is removed from the queue presenter.showNextNotification(); QCOMPARE(changedSpy.count(), 1); QCOMPARE(presenter.notification(), (LipstickNotification *)0); QCOMPARE(presentedSpy.count(), 2); }
void Ut_NotificationPreviewPresenter::testCriticalNotificationIsMarkedAfterShowing() { NotificationPreviewPresenter presenter; createNotification(1, Critical); createNotification(2); createNotification(3); QTest::qWait(0); presenter.updateNotification(1); presenter.updateNotification(2); presenter.updateNotification(3); QCOMPARE(notificationManagerDisplayedNotificationIds.count(), 0); QCOMPARE(notificationManagerCloseNotificationIds.count(), 0); presenter.showNextNotification(); QCOMPARE(notificationManagerDisplayedNotificationIds.count(), 1); QCOMPARE(notificationManagerDisplayedNotificationIds.at(0), (uint)1); QCOMPARE(notificationManagerCloseNotificationIds.count(), 0); presenter.showNextNotification(); QCOMPARE(notificationManagerDisplayedNotificationIds.count(), 2); QCOMPARE(notificationManagerDisplayedNotificationIds.at(1), (uint)2); QCOMPARE(notificationManagerCloseNotificationIds.count(), 0); presenter.showNextNotification(); QCOMPARE(notificationManagerDisplayedNotificationIds.count(), 3); QCOMPARE(notificationManagerDisplayedNotificationIds.at(2), (uint)3); QCOMPARE(notificationManagerCloseNotificationIds.count(), 0); }
void Ut_NotificationPreviewPresenter::testAddNotificationWhenWindowAlreadyOpen() { NotificationPreviewPresenter presenter; QSignalSpy changedSpy(&presenter, SIGNAL(notificationChanged())); QSignalSpy presentedSpy(&presenter, SIGNAL(notificationPresented(uint))); // Create a notification: this will create a window createNotification(1); presenter.updateNotification(1); // Reset stubs to see what happens next homeWindows.clear(); // Create another notification LipstickNotification *notification = createNotification(2); presenter.updateNotification(2); // The second notification should not be signaled onwards yet since the first one is being presented QCOMPARE(changedSpy.count(), 1); QCOMPARE(presentedSpy.count(), 1); QCOMPARE(presentedSpy.last().at(0).toUInt(), (uint)1); // Show the next notification presenter.showNextNotification(); // Check that the window was not unnecessarily created again QCOMPARE(homeWindows.isEmpty(), true); // Check that the expected notification is signaled onwards QCOMPARE(changedSpy.count(), 2); QCOMPARE(presenter.notification(), notification); QCOMPARE(presentedSpy.count(), 2); QCOMPARE(presentedSpy.last().at(0).toUInt(), (uint)2); }
void Ut_NotificationPreviewPresenter::testAddNotificationWhenWindowNotOpen() { NotificationPreviewPresenter presenter; QSignalSpy changedSpy(&presenter, SIGNAL(notificationChanged())); QSignalSpy presentedSpy(&presenter, SIGNAL(notificationPresented(uint))); // Check that the window is not automatically created QCOMPARE(homeWindows.isEmpty(), true); // Check that the window is created when a notification is added LipstickNotification *notification = createNotification(1); presenter.updateNotification(1); QCOMPARE(homeWindows.count(), 1); // Check window properties QCOMPARE(homeWindowTitle[homeWindows.first()], QString("Notification")); QCOMPARE(homeWindowContextProperties[homeWindows.first()].value("initialSize").toSize(), QGuiApplication::primaryScreen()->size()); QCOMPARE(homeWindowContextProperties[homeWindows.first()].value("notificationPreviewPresenter"), QVariant::fromValue(static_cast<QObject *>(&presenter))); QCOMPARE(homeWindowCategories[homeWindows.first()], QString("notification")); // Check that the window was shown QCOMPARE(homeWindowVisible[homeWindows.first()], true); // Check that the expected notification is signaled onwards QCOMPARE(changedSpy.count(), 1); QCOMPARE(presenter.notification(), notification); QCOMPARE(presentedSpy.count(), 1); QCOMPARE(presentedSpy.last().at(0).toUInt(), (uint)1); }
void Ut_NotificationPreviewPresenter::testCriticalNotificationIsClosedAfterShowing() { NotificationPreviewPresenter presenter; createNotification(1, 2); createNotification(2); createNotification(3); presenter.updateNotification(1); presenter.updateNotification(2); presenter.updateNotification(3); QCOMPARE(notificationManagerCloseNotificationIds.count(), 0); presenter.showNextNotification(); QCOMPARE(notificationManagerCloseNotificationIds.count(), 1); QCOMPARE(notificationManagerCloseNotificationIds.at(0), (uint)1); presenter.showNextNotification(); QCOMPARE(notificationManagerCloseNotificationIds.count(), 1); }
void Ut_NotificationFeedbackPlayer::testWithoutFeedbackId() { // Create a notification LipstickNotification *notification = createNotification(1); notification->setHints(QVariantHash()); player->addNotification(1); // Check that NGFAdapter::play() was not called for the feedback QCOMPARE(gClientStub->stubCallCount("play"), 0); }
static std::vector<Notification> createNotifications(std::size_t notificationCount, const std::int64_t topicId) { std::vector<Notification> notifications; notifications.reserve(notificationCount); for (size_t i = 0; i < notificationCount; ++i) { notifications.push_back(createNotification(topicId)); } return notifications; }
void Ut_NotificationPreviewPresenter::testUpdateNotification() { NotificationPreviewPresenter presenter; // Create two notifications createNotification(1); createNotification(2); presenter.updateNotification(1); presenter.updateNotification(2); // Update both notifications QSignalSpy changedSpy(&presenter, SIGNAL(notificationChanged())); QSignalSpy presentedSpy(&presenter, SIGNAL(notificationPresented(uint))); presenter.updateNotification(1); presenter.updateNotification(2); // Check that no signals were sent QCOMPARE(changedSpy.count(), 0); QCOMPARE(presentedSpy.count(), 0); }
void Ut_NotificationFeedbackPlayer::testUpdateNotificationIsNotPossibleAfterRestart() { delete player; // Create a notification createNotification(1); player = new NotificationFeedbackPlayer(presenter); // Update the notification player->addNotification(1); // Check that NGFAdapter::play() was not called QCOMPARE(gClientStub->stubCallCount("play"), 0); }
void Ut_NotificationFeedbackPlayer::testNotificationPreviewsDisabled() { QFETCH(QWaylandSurface *, surface); QFETCH(QVariantMap, windowProperties); QFETCH(int, urgency); QFETCH(int, playCount); gLipstickCompositorStub->stubSetReturnValue("surfaceForId", surface); qWaylandSurfaceWindowProperties = windowProperties; createNotification(1, urgency); player->addNotification(1); QCOMPARE(gClientStub->stubCallCount("play"), playCount); }
void Ut_NotificationPreviewPresenter::testNotificationPreviewsDisabled() { QFETCH(QWaylandSurface *, surface); QFETCH(QVariantMap, windowProperties); QFETCH(int, urgency); QFETCH(int, showCount); gLipstickCompositorStub->stubSetReturnValue("surfaceForId", surface); qWaylandSurfaceWindowProperties = windowProperties; NotificationPreviewPresenter presenter; createNotification(1, urgency); presenter.updateNotification(1); QCOMPARE(homeWindows.count(), showCount); }
void Ut_NotificationFeedbackPlayer::testUpdateNotificationIsNotPossible() { // Create a notification LipstickNotification *notification = createNotification(1); player->addNotification(1); // Update the notification QVariantHash hints; hints.insert(NotificationManager::HINT_FEEDBACK, "feedback2"); notification->setHints(hints); player->addNotification(1); // Check that NGFAdapter::play() was only called for the first feedback QCOMPARE(gClientStub->stubCallCount("play"), 1); QCOMPARE(gClientStub->stubLastCallTo("play").parameter<QString>(0), QString("feedback")); }
void Ut_NotificationPreviewPresenter::testNotificationNotShownIfTouchScreenIsLockedAndDisplayIsOff() { QFETCH(MeeGo::QmDisplayState::DisplayState, displayState); QFETCH(MeeGo::QmLocks::State, lockState); QFETCH(int, notifications); QFETCH(int, presentedCount); gQmDisplayStateStub->stubSetReturnValue("get", displayState); gQmLocksStub->stubSetReturnValue("getState", lockState); NotificationPreviewPresenter presenter; QSignalSpy changedSpy(&presenter, SIGNAL(notificationChanged())); QSignalSpy presentedSpy(&presenter, SIGNAL(notificationPresented(uint))); createNotification(1, 2); presenter.updateNotification(1); QCOMPARE(homeWindows.count(), notifications); QCOMPARE(changedSpy.count(), notifications); QCOMPARE(presentedSpy.count(), presentedCount); }
void FdoSelectionManagerPrivate::handleMessageData(const XClientMessageEvent &event) { const WId winId = event.window; const char *messageData = event.data.b; if (!messageRequests.contains(winId)) { kDebug() << "Unexpected message data from" << winId; return; } MessageRequest &request = messageRequests[winId]; const int messageSize = qMin(request.bytesRemaining, 20l); request.bytesRemaining -= messageSize; request.message += QByteArray(messageData, messageSize); if (request.bytesRemaining == 0) { createNotification(winId); messageRequests.remove(winId); } }
void Ut_NotificationFeedbackPlayer::testAddAndRemoveNotification() { gClientStub->stubSetReturnValue("play", (quint32)1); // Create a notification createNotification(1); player->addNotification(1); // Check that NGFAdapter::play() was called for the feedback QCOMPARE(gClientStub->stubCallCount("play"), 1); QCOMPARE(gClientStub->stubLastCallTo("play").parameter<QString>(0), QString("feedback")); // Remove the notification player->removeNotification(1); // Check that NGFAdapter::stop() was called for the notification QCOMPARE(gClientStub->stubCallCount("stop"), 1); QCOMPARE(gClientStub->stubLastCallTo("stop").parameter<quint32>(0), (quint32)1); // Check that NGFAdapter::stop() is not called for an already stopped notification player->removeNotification(1); QCOMPARE(gClientStub->stubCallCount("stop"), 1); }
QJsonRpcMessage QJsonRpcMessage::createNotification(const QString &method, const QVariant ¶m) { return createNotification(method, QVariantList() << param); }
QJsonRpcMessage QJsonRpcMessage::createNotification(const QString &method, const QJsonValue ¶m) { QJsonArray params; params.append(param); return createNotification(method, params); }