Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions e2e/android/app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,9 @@ dependencies {
testImplementation("io.opentelemetry:opentelemetry-sdk-testing:1.51.0")
testImplementation(testFixtures(project(":observability-android")))

// Used for testing webviews masking
implementation("org.mozilla.geckoview:geckoview:130.0.20240913135723")

androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
androidTestImplementation(platform(libs.androidx.compose.bom))
Expand Down
7 changes: 7 additions & 0 deletions e2e/android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,13 @@
android:name=".smoothie.SmoothieListActivity"
android:exported="false"
android:theme="@style/Theme.AndroidObservability" />
<activity
android:name=".masking.ComposeWebActivity"
android:exported="false" />
<activity
android:name=".masking.XMLWebActivity"
android:exported="false" />

<service
android:name=".ObservabilityForegroundService"
android:exported="false" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,11 +53,12 @@ open class BaseApplication : Application() {
options = ReplayOptions(
privacyProfile = PrivacyProfile(
maskText = false,
maskWebViews = true,
maskViews = listOf(
view(ImageView::class.java),
view("android.widget.TextView")
),
maskXMLViewIds = listOf("smoothieTitle"))
),
maskXMLViewIds = listOf("smoothieTitle")
)
)
)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.example.androidobservability

import android.app.Activity
import android.content.Context
import android.content.Intent
import android.os.Bundle
import androidx.activity.ComponentActivity
Expand Down Expand Up @@ -40,8 +42,10 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.graphics.Color
import com.example.androidobservability.masking.ComposeMaskingActivity
import com.example.androidobservability.masking.ComposeUserFormActivity
import com.example.androidobservability.masking.ComposeWebActivity
import com.example.androidobservability.masking.XMLUserFormActivity
import com.example.androidobservability.masking.XMLMaskingActivity
import com.example.androidobservability.masking.XMLWebActivity
import com.example.androidobservability.smoothie.SmoothieListActivity
import com.example.androidobservability.ui.theme.AndroidObservabilityTheme
import com.example.androidobservability.ui.theme.DangerRed
Expand Down Expand Up @@ -192,7 +196,7 @@ private fun InstrumentationButtons(viewModel: ViewModel) {
onClick = {
viewModel.triggerCrash()
},
colors = androidx.compose.material3.ButtonDefaults.buttonColors(
colors = ButtonDefaults.buttonColors(
containerColor = DangerRed,
contentColor = Color.White
)
Expand All @@ -206,124 +210,72 @@ private fun InstrumentationButtons(viewModel: ViewModel) {
private fun MaskingButtons() {
val context = LocalContext.current

MaskingRow(
name = "User Form",
ctx = context,
activity1 = XMLUserFormActivity::class.java,
activity2 = ComposeUserFormActivity::class.java
)

// Three-column layout: Name | XML | Compose
// User Form
Row(
modifier = Modifier
.fillMaxWidth()
.padding(bottom = 8.dp),
horizontalArrangement = Arrangement.spacedBy(12.dp),
verticalAlignment = Alignment.CenterVertically
) {
Text(
text = "User Form",
modifier = Modifier.weight(1f)
)
Button(
onClick = {
context.startActivity(
Intent(
context,
XMLUserFormActivity::class.java
)
)
},
modifier = Modifier.weight(1f),
contentPadding = PaddingValues(horizontal = 16.dp, vertical = 6.dp)
) {
Text("XML")
}
Button(
onClick = {
context.startActivity(
Intent(
context,
ComposeUserFormActivity::class.java
)
)
},
modifier = Modifier.weight(1f),
contentPadding = PaddingValues(horizontal = 16.dp, vertical = 6.dp)
) {
Text("Compose")
}
}
// Smoothies
MaskingRow(
name = "Smoothies",
ctx = context,
activity1 = SmoothieListActivity::class.java,
activity2 = null
)

MaskingRow(
name = "Check",
ctx = context,
activity1 = XMLMaskingActivity::class.java,
activity2 = ComposeMaskingActivity::class.java
)

MaskingRow(
name = "Webviews",
ctx = context,
activity1 = XMLWebActivity::class.java,
activity2 = ComposeWebActivity::class.java
)
}

@Composable
private fun MaskingRow(name: String, ctx: Context, activity1: Class<out Activity>??, activity2: Class<out Activity>??) {
Row(
modifier = Modifier
.fillMaxWidth()
.padding(bottom = 8.dp),
.padding(bottom = 16.dp),
horizontalArrangement = Arrangement.spacedBy(12.dp),
verticalAlignment = Alignment.CenterVertically
) {
Text(
text = "Smoothies",
text = name,
modifier = Modifier.weight(1f)
)
Button(
onClick = {
context.startActivity(
Intent(
context,
SmoothieListActivity::class.java
)
)
},
onClick = { goToActivity(ctx, activity1) },
enabled = activity1 != null,
modifier = Modifier.weight(1f),
contentPadding = PaddingValues(horizontal = 16.dp, vertical = 6.dp)
) {
Text("XML")
}
Button(
onClick = { /* Compose Smoothies not implemented */ },
enabled = false,
onClick = { goToActivity(ctx, activity2) },
enabled = activity2 != null,
modifier = Modifier.weight(1f),
contentPadding = PaddingValues(horizontal = 16.dp, vertical = 6.dp)
) {
Text("Compose")
}
}
// Check
Row(
modifier = Modifier
.fillMaxWidth()
.padding(bottom = 16.dp),
horizontalArrangement = Arrangement.spacedBy(12.dp),
verticalAlignment = Alignment.CenterVertically
) {
Text(
text = "Check",
modifier = Modifier.weight(1f)
}

private fun goToActivity(ctx: Context, activity: Class<out Activity>??){
activity?.let {
ctx.startActivity(
Intent(ctx, it)
)
Button(
onClick = {
context.startActivity(
Intent(
context,
XMLMaskingActivity::class.java
)
)
},
modifier = Modifier.weight(1f),
contentPadding = PaddingValues(horizontal = 16.dp, vertical = 6.dp)
) {
Text("XML")
}
Button(
onClick = {
context.startActivity(
Intent(
context,
ComposeMaskingActivity::class.java
)
)
},
modifier = Modifier.weight(1f),
contentPadding = PaddingValues(horizontal = 16.dp, vertical = 6.dp)
) {
Text("Compose")
}
}
}

Expand Down Expand Up @@ -460,5 +412,4 @@ private fun CustomerApiButtons(viewModel: ViewModel) {
Text("Evaluate boolean flag")
}


}
Loading
Loading