Skip to content

Commit

Permalink
Merge branch 'main' into 1870232
Browse files Browse the repository at this point in the history
  • Loading branch information
mergify[bot] committed Jan 5, 2024
2 parents ac72c92 + 24f60f2 commit 92e2ffb
Show file tree
Hide file tree
Showing 78 changed files with 2,493 additions and 791 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -72,6 +72,7 @@ fastlane/
.nimbus
.wallpaper_url
.pocket_consumer_key
fenix/app/src/**/res/values/fenix_firebase_push_credentials.xml

# Python Byte-compiled / optimized / DLL files
__pycache__/
Expand Down
Expand Up @@ -19,6 +19,7 @@ import mozilla.components.browser.engine.gecko.mediaquery.from
import mozilla.components.browser.engine.gecko.mediaquery.toGeckoValue
import mozilla.components.browser.engine.gecko.profiler.Profiler
import mozilla.components.browser.engine.gecko.serviceworker.GeckoServiceWorkerDelegate
import mozilla.components.browser.engine.gecko.translate.GeckoTranslationUtils.intoTranslationError
import mozilla.components.browser.engine.gecko.util.SpeculativeSessionFactory
import mozilla.components.browser.engine.gecko.webextension.GeckoWebExtension
import mozilla.components.browser.engine.gecko.webextension.GeckoWebExtensionException
Expand Down Expand Up @@ -46,6 +47,7 @@ import mozilla.components.concept.engine.translate.Language
import mozilla.components.concept.engine.translate.LanguageModel
import mozilla.components.concept.engine.translate.LanguageSetting
import mozilla.components.concept.engine.translate.ModelManagementOptions
import mozilla.components.concept.engine.translate.TranslationError
import mozilla.components.concept.engine.translate.TranslationSupport
import mozilla.components.concept.engine.translate.TranslationsRuntime
import mozilla.components.concept.engine.utils.EngineVersion
Expand Down Expand Up @@ -652,7 +654,7 @@ class GeckoEngine(
) {
val flags = data.types.toLong()
if (host != null) {
runtime.storageController.clearDataFromHost(host, flags)
runtime.storageController.clearDataFromBaseDomain(host, flags)
} else {
runtime.storageController.clearData(flags)
}.then(
Expand All @@ -668,16 +670,6 @@ class GeckoEngine(
)
}

/**
* Convenience method for handling unexpected null returns from GeckoView.
*
* @return A standard throwable for unexpected null values.
*/
private fun translationsUnexpectedNull(): Throwable {
val errorMessage = "Unexpectedly returned a null value."
return IllegalStateException(errorMessage)
}

/**
* See [Engine.isTranslationsEngineSupported].
*/
Expand All @@ -690,12 +682,12 @@ class GeckoEngine(
if (it != null) {
onSuccess(it)
} else {
onError(translationsUnexpectedNull())
onError(TranslationError.UnexpectedNull())
}
GeckoResult<Void>()
},
{ throwable ->
onError(throwable)
onError(throwable.intoTranslationError())
GeckoResult<Void>()
},
)
Expand All @@ -715,12 +707,12 @@ class GeckoEngine(
if (it != null) {
onSuccess(it)
} else {
onError(translationsUnexpectedNull())
onError(TranslationError.UnexpectedNull())
}
GeckoResult<Void>()
},
{ throwable ->
onError(throwable)
onError(throwable.intoTranslationError())
GeckoResult<Void>()
},
)
Expand All @@ -747,12 +739,12 @@ class GeckoEngine(
}
onSuccess(listOfModels)
} else {
onError(translationsUnexpectedNull())
onError(TranslationError.UnexpectedNull())
}
GeckoResult<Void>()
},
{ throwable ->
onError(throwable)
onError(throwable.intoTranslationError())
GeckoResult<Void>()
},
)
Expand Down Expand Up @@ -785,12 +777,12 @@ class GeckoEngine(

onSuccess(TranslationSupport(listOfFromLanguages, listOfToLanguages))
} else {
onError(translationsUnexpectedNull())
onError(TranslationError.UnexpectedNull())
}
GeckoResult<Void>()
},
{ throwable ->
onError(throwable)
onError(throwable.intoTranslationError())
GeckoResult<Void>()
},
)
Expand All @@ -817,7 +809,7 @@ class GeckoEngine(
GeckoResult<Void>()
},
{ throwable ->
onError(throwable)
onError(throwable.intoTranslationError())
GeckoResult<Void>()
},
)
Expand All @@ -835,13 +827,13 @@ class GeckoEngine(
if (it != null) {
onSuccess(it)
} else {
onError(translationsUnexpectedNull())
onError(TranslationError.UnexpectedNull())
}

GeckoResult<Void>()
},
{ throwable ->
onError(throwable)
onError(throwable.intoTranslationError())
GeckoResult<Void>()
},
)
Expand Down Expand Up @@ -875,16 +867,16 @@ class GeckoEngine(
try {
onSuccess(LanguageSetting.fromValue(it))
} catch (e: IllegalArgumentException) {
onError(e)
onError(e.intoTranslationError())
}
} else {
onError(translationsUnexpectedNull())
onError(TranslationError.UnexpectedNull())
}

GeckoResult<Void>()
},
{ throwable ->
onError(throwable)
onError(throwable.intoTranslationError())
GeckoResult<Void>()
},
)
Expand All @@ -905,7 +897,7 @@ class GeckoEngine(
GeckoResult<Void>()
},
{ throwable ->
onError(throwable)
onError(throwable.intoTranslationError())
GeckoResult<Void>()
},
)
Expand All @@ -928,15 +920,15 @@ class GeckoEngine(
}
onSuccess(result)
} catch (e: IllegalArgumentException) {
onError(e)
onError(e.intoTranslationError())
}
} else {
onError(translationsUnexpectedNull())
onError(TranslationError.UnexpectedNull())
}
GeckoResult<Void>()
},
{ throwable ->
onError(throwable)
onError(throwable.intoTranslationError())
GeckoResult<Void>()
},
)
Expand All @@ -955,15 +947,15 @@ class GeckoEngine(
try {
onSuccess(it)
} catch (e: IllegalArgumentException) {
onError(e)
onError(e.intoTranslationError())
}
} else {
onError(translationsUnexpectedNull())
onError(TranslationError.UnexpectedNull())
}
GeckoResult<Void>()
},
{ throwable ->
onError(throwable)
onError(throwable.intoTranslationError())
GeckoResult<Void>()
},
)
Expand All @@ -984,7 +976,7 @@ class GeckoEngine(
GeckoResult<Void>()
},
{ throwable ->
onError(throwable)
onError(throwable.intoTranslationError())
GeckoResult<Void>()
},
)
Expand Down
Expand Up @@ -21,6 +21,7 @@ import mozilla.components.browser.engine.gecko.mediasession.GeckoMediaSessionDel
import mozilla.components.browser.engine.gecko.permission.GeckoPermissionRequest
import mozilla.components.browser.engine.gecko.prompt.GeckoPromptDelegate
import mozilla.components.browser.engine.gecko.translate.GeckoTranslateSessionDelegate
import mozilla.components.browser.engine.gecko.translate.GeckoTranslationUtils.intoTranslationError
import mozilla.components.browser.engine.gecko.window.GeckoWindowRequest
import mozilla.components.browser.errorpages.ErrorType
import mozilla.components.concept.engine.EngineSession
Expand All @@ -42,6 +43,7 @@ import mozilla.components.concept.engine.shopping.Highlight
import mozilla.components.concept.engine.shopping.ProductAnalysis
import mozilla.components.concept.engine.shopping.ProductAnalysisStatus
import mozilla.components.concept.engine.shopping.ProductRecommendation
import mozilla.components.concept.engine.translate.TranslationError
import mozilla.components.concept.engine.translate.TranslationOperation
import mozilla.components.concept.engine.translate.TranslationOptions
import mozilla.components.concept.engine.window.WindowRequest
Expand Down Expand Up @@ -915,15 +917,6 @@ class GeckoEngineSession(
})
}

/**
* Convenience method for the error when session translation is not available.
*/
private fun sessionTranslationNotAvailable(): Throwable {
val errorMessage = "A translation session coordinator is not available."
logger.error(errorMessage)
return IllegalStateException(errorMessage)
}

/**
* See [EngineSession.requestTranslate]
*/
Expand All @@ -934,7 +927,10 @@ class GeckoEngineSession(
) {
if (geckoSession.sessionTranslation == null) {
notifyObservers {
onTranslateException(TranslationOperation.TRANSLATE, sessionTranslationNotAvailable())
onTranslateException(
TranslationOperation.TRANSLATE,
TranslationError.MissingSessionCoordinator(),
)
}
return
}
Expand All @@ -955,7 +951,10 @@ class GeckoEngineSession(
throwable ->
logger.error("Request for translation failed: ", throwable)
notifyObservers {
onTranslateException(TranslationOperation.TRANSLATE, throwable)
onTranslateException(
TranslationOperation.TRANSLATE,
throwable.intoTranslationError(),
)
}
GeckoResult()
})
Expand All @@ -967,7 +966,10 @@ class GeckoEngineSession(
override fun requestTranslationRestore() {
if (geckoSession.sessionTranslation == null) {
notifyObservers {
onTranslateException(TranslationOperation.RESTORE, sessionTranslationNotAvailable())
onTranslateException(
TranslationOperation.RESTORE,
TranslationError.MissingSessionCoordinator(),
)
}
return
}
Expand All @@ -981,7 +983,7 @@ class GeckoEngineSession(
throwable ->
logger.error("Request for translation failed: ", throwable)
notifyObservers {
onTranslateException(TranslationOperation.RESTORE, throwable)
onTranslateException(TranslationOperation.RESTORE, throwable.intoTranslationError())
}
GeckoResult()
})
Expand All @@ -995,17 +997,16 @@ class GeckoEngineSession(
onException: (Throwable) -> Unit,
) {
if (geckoSession.sessionTranslation == null) {
onException(sessionTranslationNotAvailable())
onException(TranslationError.MissingSessionCoordinator())
return
}

geckoSession.sessionTranslation!!.neverTranslateSiteSetting.then({
response ->
if (response == null) {
val errorMessage = "Did not receive a site setting response."
logger.error(errorMessage)
logger.error("Did not receive a site setting response.")
onException(
java.lang.IllegalStateException(errorMessage),
TranslationError.UnexpectedNull(),
)
return@then GeckoResult()
}
Expand All @@ -1014,7 +1015,7 @@ class GeckoEngineSession(
}, {
throwable ->
logger.error("Request for site translation preference failed: ", throwable)
onException(throwable)
onException(throwable.intoTranslationError())
GeckoResult()
})
}
Expand All @@ -1028,7 +1029,7 @@ class GeckoEngineSession(
onException: (Throwable) -> Unit,
) {
if (geckoSession.sessionTranslation == null) {
onException(sessionTranslationNotAvailable())
onException(TranslationError.MissingSessionCoordinator())
return
}

Expand All @@ -1038,7 +1039,7 @@ class GeckoEngineSession(
}, {
throwable ->
logger.error("Request for setting site translation preference failed: ", throwable)
onException(throwable)
onException(throwable.intoTranslationError())
GeckoResult()
})
}
Expand Down
Expand Up @@ -82,7 +82,6 @@ open class NestedGeckoView(context: Context) : GeckoView(context), NestedScrolli

MotionEvent.ACTION_DOWN -> {
// A new gesture started. Ask GV if it can handle this.
inputResultDetail = InputResultDetail.newInstance(false)
parent?.requestDisallowInterceptTouchEvent(true)
updateInputResult(event)

Expand All @@ -98,6 +97,12 @@ open class NestedGeckoView(context: Context) : GeckoView(context), NestedScrolli

// We don't care about other touch events
MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> {
// inputResultDetail needs to be reset here and not in the next ACTION_DOWN, because
// its value is used by other features that poll for the value via
// `EngineView.getInputResultDetail`. Not resetting this in ACTION_CANCEL/ACTION_UP
// would then mean we send stale information to those features from a previous
// gesture's result.
inputResultDetail = InputResultDetail.newInstance(true)
stopNestedScroll()
}
}
Expand Down

0 comments on commit 92e2ffb

Please sign in to comment.