Send transaction callbacks even when no BSL

The current transaction callback logic only accounts for 2 cases:
1. If there's a BSL in the transaction
2. If there are no layers in the transaction

However, this doesn't account for cases where there's other layer types
in the transaction that are not BSL. In those cases, we fail to invoke
the transaction callbacks.

Test: LayerCallbackTest
Fixes: 229578553
Change-Id: I7483235617218a759bc9b1ea335e9fef80275728
diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp
index d8a5601..3a92ca4 100644
--- a/services/surfaceflinger/Layer.cpp
+++ b/services/surfaceflinger/Layer.cpp
@@ -2664,6 +2664,18 @@
     mDrawingState.callbackHandles = {};
 }
 
+bool Layer::setTransactionCompletedListeners(const std::vector<sp<CallbackHandle>>& handles) {
+    if (handles.empty()) {
+        return false;
+    }
+
+    for (const auto& handle : handles) {
+        mFlinger->getTransactionCallbackInvoker().registerUnpresentedCallbackHandle(handle);
+    }
+
+    return true;
+}
+
 // ---------------------------------------------------------------------------
 
 std::ostream& operator<<(std::ostream& stream, const Layer::FrameRate& rate) {