Skip to content
This repository has been archived by the owner on Jan 12, 2023. It is now read-only.

For #7503 - Show Start browsing cfr at fresh install #7705

Merged
merged 1 commit into from Oct 26, 2022
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.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions app/build.gradle
Expand Up @@ -293,6 +293,7 @@ dependencies {
implementation "org.mozilla.components:feature-webcompat-reporter:${AndroidComponents.VERSION}"
implementation "org.mozilla.components:support-webextensions:${AndroidComponents.VERSION}"
implementation "org.mozilla.components:support-locale:${AndroidComponents.VERSION}"
implementation "org.mozilla.components:compose-cfr:${AndroidComponents.VERSION}"

implementation project(':service-telemetry')

Expand Down
Expand Up @@ -48,6 +48,7 @@ class CustomTabTest {
@Before
fun setUp() {
featureSettingsHelper.setCfrForTrackingProtectionEnabled(false)
featureSettingsHelper.setShowStartBrowsingCfrEnabled(false)
webServer = MockWebServer().apply {
dispatcher = MockWebServerHelper.AndroidAssetDispatcher()
start()
Expand Down
Expand Up @@ -19,6 +19,10 @@ class FeatureSettingsHelper {
settings.shouldShowCfrForTrackingProtection = enabled
}

fun setShowStartBrowsingCfrEnabled(enabled: Boolean) {
settings.shouldShowStartBrowsingCfr = enabled
}

fun setSearchWidgetDialogEnabled(enabled: Boolean) {
if (enabled) {
settings.addClearBrowsingSessions(4)
Expand Down
Expand Up @@ -29,6 +29,7 @@ open class MainActivityFirstrunTestRule(
launchActivity: Boolean = true,
private val showFirstRun: Boolean,
private val showNewOnboarding: Boolean = true,
private val showStartBrowsingCfrVisibility: Boolean = false,
) : ActivityTestRule<MainActivity>(MainActivity::class.java, launchActivity) {
private val longTapUserPreference = getLongPressTimeout()
private val featureSettingsHelper = FeatureSettingsHelper()
Expand All @@ -37,6 +38,7 @@ open class MainActivityFirstrunTestRule(
override fun beforeActivityLaunched() {
super.beforeActivityLaunched()
updateFirstRun(showFirstRun)
featureSettingsHelper.setShowStartBrowsingCfrEnabled(showStartBrowsingCfrVisibility)
setNewOnboarding(showNewOnboarding)
setLongTapTimeout(3000)
}
Expand All @@ -61,14 +63,17 @@ open class MainActivityFirstrunTestRule(
}

// Test rule that allows usage of Espresso Intents
open class MainActivityIntentsTestRule(launchActivity: Boolean = true, private val showFirstRun: Boolean) :
open class MainActivityIntentsTestRule(launchActivity: Boolean = true, private val showFirstRun: Boolean, private val showStartBrowsingCfrVisibility: Boolean = false) :
IntentsTestRule<MainActivity>(MainActivity::class.java, launchActivity) {
private val longTapUserPreference = getLongPressTimeout()
private val featureSettingsHelper = FeatureSettingsHelper()

@CallSuper
override fun beforeActivityLaunched() {
super.beforeActivityLaunched()

updateFirstRun(showFirstRun)
featureSettingsHelper.setShowStartBrowsingCfrEnabled(showStartBrowsingCfrVisibility)
setLongTapTimeout(3000)
}

Expand Down
Expand Up @@ -35,7 +35,7 @@ public abstract class ScreenshotTest {
UiDevice device;

@Rule
public ActivityTestRule<MainActivity> mActivityTestRule = new MainActivityFirstrunTestRule(true, false, true) {
public ActivityTestRule<MainActivity> mActivityTestRule = new MainActivityFirstrunTestRule(true, false, true,false) {
@Override
protected void beforeActivityLaunched() {
super.beforeActivityLaunched();
Expand Down
Expand Up @@ -8,6 +8,9 @@ import android.graphics.Color
import android.widget.LinearLayout
import androidx.annotation.VisibleForTesting
import androidx.appcompat.content.res.AppCompatResources
import androidx.compose.material.Text
import androidx.compose.ui.res.colorResource
import androidx.compose.ui.unit.dp
import androidx.core.content.ContextCompat
import androidx.core.content.res.ResourcesCompat
import androidx.core.view.children
Expand All @@ -18,6 +21,8 @@ import mozilla.components.browser.state.selector.findCustomTabOrSelectedTab
import mozilla.components.browser.state.store.BrowserStore
import mozilla.components.browser.toolbar.BrowserToolbar
import mozilla.components.browser.toolbar.display.DisplayToolbar.Indicators
import mozilla.components.compose.cfr.CFRPopup
import mozilla.components.compose.cfr.CFRPopupProperties
import mozilla.components.feature.customtabs.CustomTabsToolbarFeature
import mozilla.components.feature.session.SessionUseCases
import mozilla.components.feature.tabs.CustomTabsUseCases
Expand All @@ -31,7 +36,6 @@ import mozilla.components.support.ktx.kotlinx.coroutines.flow.ifChanged
import org.mozilla.focus.GleanMetrics.TabCount
import org.mozilla.focus.GleanMetrics.TrackingProtection
import org.mozilla.focus.R
import org.mozilla.focus.compose.CFRPopup
import org.mozilla.focus.ext.components
import org.mozilla.focus.ext.isCustomTab
import org.mozilla.focus.ext.isTablet
Expand All @@ -41,6 +45,7 @@ import org.mozilla.focus.menu.browser.CustomTabMenu
import org.mozilla.focus.nimbus.FocusNimbus
import org.mozilla.focus.state.AppAction
import org.mozilla.focus.telemetry.TelemetryWrapper
import org.mozilla.focus.ui.theme.focusTypography

@Suppress("LongParameterList", "LargeClass", "TooManyFunctions")
class BrowserToolbarIntegration(
Expand Down Expand Up @@ -238,10 +243,34 @@ class BrowserToolbarIntegration(
.children
.last()
CFRPopup(
container = fragment.requireView(),
text = fragment.getString(R.string.cfr_for_toolbar_delete_icon2),
anchor = eraseActionView,
onDismiss = ::onDismissEraseTabsCfr,
properties = CFRPopupProperties(
popupWidth = 256.dp,
popupAlignment = CFRPopup.PopupAlignment.INDICATOR_CENTERED_IN_ANCHOR,
popupBodyColors = listOf(
ContextCompat.getColor(
fragment.requireContext(),
R.color.cfr_pop_up_shape_end_color,
),
ContextCompat.getColor(
fragment.requireContext(),
R.color.cfr_pop_up_shape_start_color,
),
),
dismissButtonColor = ContextCompat.getColor(
fragment.requireContext(),
R.color.cardview_light_background,
),
popupVerticalOffset = 0.dp,
),
onDismiss = { onDismissEraseTabsCfr() },
text = {
Text(
style = focusTypography.cfrTextStyle,
text = fragment.getString(R.string.cfr_for_toolbar_delete_icon2),
color = colorResource(R.color.cfr_text_color),
)
},
).apply {
show()
}
Expand All @@ -262,12 +291,36 @@ class BrowserToolbarIntegration(
.collect { showTrackingProtectionCfrForTab ->
if (showTrackingProtectionCfrForTab[store.state.selectedTabId] == true) {
CFRPopup(
container = fragment.requireView(),
text = fragment.getString(R.string.cfr_for_toolbar_shield_icon2),
anchor = toolbar.findViewById(
R.id.mozac_browser_toolbar_tracking_protection_indicator,
),
onDismiss = ::onDismissTrackingProtectionCfr,
properties = CFRPopupProperties(
popupWidth = 256.dp,
popupAlignment = CFRPopup.PopupAlignment.INDICATOR_CENTERED_IN_ANCHOR,
popupBodyColors = listOf(
ContextCompat.getColor(
fragment.requireContext(),
R.color.cfr_pop_up_shape_end_color,
),
ContextCompat.getColor(
fragment.requireContext(),
R.color.cfr_pop_up_shape_start_color,
),
),
dismissButtonColor = ContextCompat.getColor(
fragment.requireContext(),
R.color.cardview_light_background,
),
popupVerticalOffset = 0.dp,
),
onDismiss = { onDismissTrackingProtectionCfr() },
text = {
Text(
style = focusTypography.cfrTextStyle,
text = fragment.getString(R.string.cfr_for_toolbar_shield_icon2),
color = colorResource(R.color.cfr_text_color),
)
},
).apply {
show()
}
Expand Down