For #15430: Fix StrictMode death on opening app from widget voice search.

upstream-sync
mcarare 4 years ago committed by Mihai Adrian Carare
parent 5b0bdda974
commit 142d7a418c

@ -5,6 +5,7 @@
package org.mozilla.fenix.home.intent package org.mozilla.fenix.home.intent
import android.content.Intent import android.content.Intent
import android.os.StrictMode
import androidx.navigation.NavController import androidx.navigation.NavController
import org.mozilla.fenix.BrowserDirection import org.mozilla.fenix.BrowserDirection
import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.HomeActivity
@ -26,13 +27,14 @@ class SpeechProcessingIntentProcessor(
override fun process(intent: Intent, navController: NavController, out: Intent): Boolean { override fun process(intent: Intent, navController: NavController, out: Intent): Boolean {
return if (intent.extras?.getBoolean(HomeActivity.OPEN_TO_BROWSER_AND_LOAD) == true) { return if (intent.extras?.getBoolean(HomeActivity.OPEN_TO_BROWSER_AND_LOAD) == true) {
out.putExtra(HomeActivity.OPEN_TO_BROWSER_AND_LOAD, false) out.putExtra(HomeActivity.OPEN_TO_BROWSER_AND_LOAD, false)
activity.components.strictMode.resetAfter(StrictMode.allowThreadDiskReads()) {
val searchEvent = MetricsUtils.createSearchEvent( val searchEvent = MetricsUtils.createSearchEvent(
activity.components.search.provider.getDefaultEngine(activity), activity.components.search.provider.getDefaultEngine(activity),
activity, activity,
Event.PerformedSearch.SearchAccessPoint.WIDGET Event.PerformedSearch.SearchAccessPoint.WIDGET
) )
searchEvent?.let { metrics.track(it) } searchEvent?.let { metrics.track(it) }
}
activity.openToBrowserAndLoad( activity.openToBrowserAndLoad(
searchTermOrURL = intent.getStringExtra(SPEECH_PROCESSING).orEmpty(), searchTermOrURL = intent.getStringExtra(SPEECH_PROCESSING).orEmpty(),

@ -7,12 +7,14 @@ package org.mozilla.fenix.widget
import android.content.ComponentName import android.content.ComponentName
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.os.StrictMode
import android.speech.RecognizerIntent import android.speech.RecognizerIntent
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import mozilla.components.support.locale.LocaleManager import mozilla.components.support.locale.LocaleManager
import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.IntentReceiverActivity import org.mozilla.fenix.IntentReceiverActivity
import org.mozilla.fenix.components.metrics.Event import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.metrics import org.mozilla.fenix.ext.metrics
/** /**
@ -62,8 +64,16 @@ class VoiceSearchActivity : AppCompatActivity() {
*/ */
private fun displaySpeechRecognizer() { private fun displaySpeechRecognizer() {
val intentSpeech = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH).apply { val intentSpeech = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH).apply {
putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM) putExtra(
putExtra(RecognizerIntent.EXTRA_LANGUAGE, LocaleManager.getCurrentLocale(this@VoiceSearchActivity)) RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM
)
putExtra(
RecognizerIntent.EXTRA_LANGUAGE,
components.strictMode.resetAfter(StrictMode.allowThreadDiskReads()) {
LocaleManager.getCurrentLocale(this@VoiceSearchActivity)
}
)
} }
metrics.track(Event.SearchWidgetVoiceSearchPressed) metrics.track(Event.SearchWidgetVoiceSearchPressed)

Loading…
Cancel
Save