summaryrefslogtreecommitdiff
path: root/quickstep
diff options
context:
space:
mode:
author Li Lin <llin@google.com> 2025-03-19 11:38:55 -0700
committer Li Lin <llin@google.com> 2025-03-19 11:57:18 -0700
commit5f5f5abb60f1bb747c1ba246b480cbe3dfce9c0e (patch)
tree9b6d85cb9860acebf1ae58275332ed95b89b2e19 /quickstep
parent4b40d05ebb683e3ab963c25367779eac21ff864d (diff)
Add action performers for Growth Framework.
The action performers will be used for performing actions that triggered by clicking on nudge buttons. Bug: 398033012 Test: Manual Flag: com.android.launcher3.enable_growth_nudge Change-Id: I6d80542b10fd6442e716126ceb3123bbc0d1cf07
Diffstat (limited to 'quickstep')
-rw-r--r--quickstep/src/com/android/launcher3/taskbar/growth/ActionPerformers.kt50
1 files changed, 50 insertions, 0 deletions
diff --git a/quickstep/src/com/android/launcher3/taskbar/growth/ActionPerformers.kt b/quickstep/src/com/android/launcher3/taskbar/growth/ActionPerformers.kt
new file mode 100644
index 0000000000..17c950993d
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/growth/ActionPerformers.kt
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.launcher3.taskbar.growth
+
+import android.content.Context
+import android.content.Intent
+import android.net.Uri
+
+object ActionPerformers {
+ fun interface DismissCallback {
+ fun invoke()
+ }
+
+ fun performActions(actions: List<Action>, context: Context, dismissCallback: DismissCallback) {
+ for (action in actions) {
+ performAction(action, context, dismissCallback)
+ }
+ }
+
+ private fun performAction(action: Action, context: Context, dismissCallback: DismissCallback) {
+ when (action) {
+ is Action.Dismiss -> {
+ // TODO: b/396239267 - Handle marking the campaign dismissed with dismissal
+ // retention.
+ dismissCallback.invoke()
+ }
+ is Action.OpenUrl -> openUrl(action.url, context)
+ // Handle other actions
+ }
+ }
+
+ fun openUrl(url: String, context: Context) {
+ val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+ context.startActivity(intent)
+ }
+}