/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ package org.mozilla.fenix.settings.about import android.view.View import android.widget.Toast import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleObserver import androidx.lifecycle.OnLifecycleEvent import org.mozilla.fenix.R import org.mozilla.fenix.utils.Settings /** * Triggers the "secret" debug menu when logoView is tapped 5 times. */ class SecretDebugMenuTrigger( logoView: View, private val settings: Settings ) : View.OnClickListener, LifecycleObserver { private var secretDebugMenuClicks = 0 private var lastDebugMenuToast: Toast? = null init { if (!settings.showSecretDebugMenuThisSession) { logoView.setOnClickListener(this) } } /** * Reset the [secretDebugMenuClicks] counter. */ @OnLifecycleEvent(Lifecycle.Event.ON_RESUME) fun clearClickCounter() { secretDebugMenuClicks = 0 } override fun onClick(v: View) { // Because the user will mostly likely tap the logo in rapid succession, // we ensure only 1 toast is shown at any given time. lastDebugMenuToast?.cancel() secretDebugMenuClicks += 1 when (secretDebugMenuClicks) { in 2 until SECRET_DEBUG_MENU_CLICKS -> { val clicksLeft = SECRET_DEBUG_MENU_CLICKS - secretDebugMenuClicks val toast = Toast.makeText( v.context, v.context.getString(R.string.about_debug_menu_toast_progress, clicksLeft), Toast.LENGTH_SHORT ) toast.show() lastDebugMenuToast = toast } SECRET_DEBUG_MENU_CLICKS -> { Toast.makeText( v.context, R.string.about_debug_menu_toast_done, Toast.LENGTH_LONG ).show() settings.showSecretDebugMenuThisSession = true } } } companion object { // Number of clicks on the app logo to enable the "secret" debug menu. private const val SECRET_DEBUG_MENU_CLICKS = 5 } }