fix file upload
This commit is contained in:
+41
@@ -16,6 +16,7 @@ import android.view.LayoutInflater
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.FrameLayout
|
import android.widget.FrameLayout
|
||||||
|
import androidx.activity.result.ActivityResult
|
||||||
import androidx.activity.result.ActivityResultLauncher
|
import androidx.activity.result.ActivityResultLauncher
|
||||||
import androidx.activity.result.contract.ActivityResultContracts
|
import androidx.activity.result.contract.ActivityResultContracts
|
||||||
import androidx.annotation.CallSuper
|
import androidx.annotation.CallSuper
|
||||||
@@ -34,6 +35,7 @@ import mozilla.components.feature.downloads.temporary.ShareResourceFeature
|
|||||||
import mozilla.components.feature.media.fullscreen.MediaSessionFullscreenFeature
|
import mozilla.components.feature.media.fullscreen.MediaSessionFullscreenFeature
|
||||||
import mozilla.components.feature.privatemode.feature.SecureWindowFeature
|
import mozilla.components.feature.privatemode.feature.SecureWindowFeature
|
||||||
import mozilla.components.feature.prompts.PromptFeature
|
import mozilla.components.feature.prompts.PromptFeature
|
||||||
|
import mozilla.components.feature.prompts.file.AndroidPhotoPicker
|
||||||
import mozilla.components.feature.session.FullScreenFeature
|
import mozilla.components.feature.session.FullScreenFeature
|
||||||
import mozilla.components.feature.session.PictureInPictureFeature
|
import mozilla.components.feature.session.PictureInPictureFeature
|
||||||
import mozilla.components.feature.session.SessionFeature
|
import mozilla.components.feature.session.SessionFeature
|
||||||
@@ -43,6 +45,7 @@ import mozilla.components.feature.sitepermissions.SitePermissionsRules
|
|||||||
import mozilla.components.feature.sitepermissions.SitePermissionsRules.AutoplayAction
|
import mozilla.components.feature.sitepermissions.SitePermissionsRules.AutoplayAction
|
||||||
import mozilla.components.feature.webauthn.WebAuthnFeature
|
import mozilla.components.feature.webauthn.WebAuthnFeature
|
||||||
import mozilla.components.support.base.feature.ActivityResultHandler
|
import mozilla.components.support.base.feature.ActivityResultHandler
|
||||||
|
import mozilla.components.support.base.feature.PermissionsFeature
|
||||||
import mozilla.components.support.base.feature.UserInteractionHandler
|
import mozilla.components.support.base.feature.UserInteractionHandler
|
||||||
import mozilla.components.support.base.feature.ViewBoundFeatureWrapper
|
import mozilla.components.support.base.feature.ViewBoundFeatureWrapper
|
||||||
import mozilla.components.support.base.log.logger.Logger
|
import mozilla.components.support.base.log.logger.Logger
|
||||||
@@ -74,6 +77,20 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Activit
|
|||||||
|
|
||||||
private var pictureInPictureFeature: PictureInPictureFeature? = null
|
private var pictureInPictureFeature: PictureInPictureFeature? = null
|
||||||
|
|
||||||
|
// Registers a photo picker activity launcher in single-select mode.
|
||||||
|
private val singleMediaPicker =
|
||||||
|
AndroidPhotoPicker.singleMediaPicker(
|
||||||
|
{ this },
|
||||||
|
{ promptFeature.get() },
|
||||||
|
)
|
||||||
|
|
||||||
|
// Registers a photo picker activity launcher in multi-select mode.
|
||||||
|
private val multipleMediaPicker =
|
||||||
|
AndroidPhotoPicker.multipleMediaPicker(
|
||||||
|
{ this },
|
||||||
|
{ promptFeature.get() },
|
||||||
|
)
|
||||||
|
|
||||||
private val sessionId: String?
|
private val sessionId: String?
|
||||||
get() = arguments?.getString(SESSION_ID_KEY)
|
get() = arguments?.getString(SESSION_ID_KEY)
|
||||||
|
|
||||||
@@ -224,6 +241,11 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Activit
|
|||||||
onNeedToRequestPermissions = { permissions ->
|
onNeedToRequestPermissions = { permissions ->
|
||||||
requestPromptsPermissionsLauncher.launch(permissions)
|
requestPromptsPermissionsLauncher.launch(permissions)
|
||||||
},
|
},
|
||||||
|
androidPhotoPicker = AndroidPhotoPicker(
|
||||||
|
requireContext(),
|
||||||
|
singleMediaPicker,
|
||||||
|
multipleMediaPicker,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
owner = this,
|
owner = this,
|
||||||
view = view,
|
view = view,
|
||||||
@@ -392,6 +414,21 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Activit
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Suppress("OVERRIDE_DEPRECATION")
|
||||||
|
final override fun onRequestPermissionsResult(
|
||||||
|
requestCode: Int,
|
||||||
|
permissions: Array<String>,
|
||||||
|
grantResults: IntArray,
|
||||||
|
) {
|
||||||
|
val feature: PermissionsFeature? = when (requestCode) {
|
||||||
|
REQUEST_CODE_DOWNLOAD_PERMISSIONS -> downloadsFeature.get()
|
||||||
|
REQUEST_CODE_PROMPT_PERMISSIONS -> promptFeature.get()
|
||||||
|
REQUEST_CODE_APP_PERMISSIONS -> sitePermissionsFeature.get()
|
||||||
|
else -> null
|
||||||
|
}
|
||||||
|
feature?.onPermissionsResult(permissions, grantResults)
|
||||||
|
}
|
||||||
|
|
||||||
@CallSuper
|
@CallSuper
|
||||||
override fun onActivityResult(requestCode: Int, data: Intent?, resultCode: Int): Boolean {
|
override fun onActivityResult(requestCode: Int, data: Intent?, resultCode: Int): Boolean {
|
||||||
return activityResultHandler.any { it.onActivityResult(requestCode, data, resultCode) }
|
return activityResultHandler.any { it.onActivityResult(requestCode, data, resultCode) }
|
||||||
@@ -400,6 +437,10 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Activit
|
|||||||
companion object {
|
companion object {
|
||||||
private const val SESSION_ID_KEY = "session_id"
|
private const val SESSION_ID_KEY = "session_id"
|
||||||
|
|
||||||
|
private const val REQUEST_CODE_DOWNLOAD_PERMISSIONS = 1
|
||||||
|
private const val REQUEST_CODE_PROMPT_PERMISSIONS = 2
|
||||||
|
private const val REQUEST_CODE_APP_PERMISSIONS = 3
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
protected fun Bundle.putSessionId(sessionId: String?) {
|
protected fun Bundle.putSessionId(sessionId: String?) {
|
||||||
putString(SESSION_ID_KEY, sessionId)
|
putString(SESSION_ID_KEY, sessionId)
|
||||||
|
|||||||
+7
@@ -10,6 +10,7 @@ import android.content.Context
|
|||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import androidx.annotation.CallSuper
|
||||||
import eu.weblibre.flutter_mozilla_components.addons.WebExtensionActionPopupActivity
|
import eu.weblibre.flutter_mozilla_components.addons.WebExtensionActionPopupActivity
|
||||||
import eu.weblibre.flutter_mozilla_components.feature.ReadabilityExtractFeature
|
import eu.weblibre.flutter_mozilla_components.feature.ReadabilityExtractFeature
|
||||||
import eu.weblibre.flutter_mozilla_components.feature.WebExtensionToolbarFeature
|
import eu.weblibre.flutter_mozilla_components.feature.WebExtensionToolbarFeature
|
||||||
@@ -39,6 +40,12 @@ class BrowserFragment() : BaseBrowserFragment(), UserInteractionHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated("Deprecated in Java")
|
||||||
|
@CallSuper
|
||||||
|
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||||
|
super<BaseBrowserFragment>.onActivityResult(requestCode, data, resultCode)
|
||||||
|
}
|
||||||
|
|
||||||
@Suppress("LongMethod")
|
@Suppress("LongMethod")
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
|||||||
+1
-1
@@ -70,7 +70,7 @@ object EngineProvider {
|
|||||||
builder.aboutConfigEnabled(true)
|
builder.aboutConfigEnabled(true)
|
||||||
builder.extensionsProcessEnabled(true)
|
builder.extensionsProcessEnabled(true)
|
||||||
builder.extensionsWebAPIEnabled(true)
|
builder.extensionsWebAPIEnabled(true)
|
||||||
builder.debugLogging(components.logLevel == Log.Priority.DEBUG)
|
//builder.debugLogging(components.logLevel == Log.Priority.DEBUG)
|
||||||
builder.consoleOutput(components.logLevel == Log.Priority.DEBUG)
|
builder.consoleOutput(components.logLevel == Log.Priority.DEBUG)
|
||||||
builder.contentBlocking(contentBlocking.build())
|
builder.contentBlocking(contentBlocking.build())
|
||||||
|
|
||||||
|
|||||||
+6
-1
@@ -46,8 +46,11 @@ import mozilla.components.feature.addons.update.DefaultAddonUpdater
|
|||||||
import mozilla.components.feature.customtabs.store.CustomTabsServiceStore
|
import mozilla.components.feature.customtabs.store.CustomTabsServiceStore
|
||||||
import mozilla.components.feature.downloads.DownloadMiddleware
|
import mozilla.components.feature.downloads.DownloadMiddleware
|
||||||
import mozilla.components.feature.media.MediaSessionFeature
|
import mozilla.components.feature.media.MediaSessionFeature
|
||||||
|
import mozilla.components.feature.media.middleware.LastMediaAccessMiddleware
|
||||||
import mozilla.components.feature.media.middleware.RecordingDevicesMiddleware
|
import mozilla.components.feature.media.middleware.RecordingDevicesMiddleware
|
||||||
|
import mozilla.components.feature.prompts.PromptMiddleware
|
||||||
import mozilla.components.feature.prompts.file.FileUploadsDirCleaner
|
import mozilla.components.feature.prompts.file.FileUploadsDirCleaner
|
||||||
|
import mozilla.components.feature.prompts.file.FileUploadsDirCleanerMiddleware
|
||||||
import mozilla.components.feature.readerview.ReaderViewMiddleware
|
import mozilla.components.feature.readerview.ReaderViewMiddleware
|
||||||
import mozilla.components.feature.session.HistoryDelegate
|
import mozilla.components.feature.session.HistoryDelegate
|
||||||
import mozilla.components.feature.session.middleware.LastAccessMiddleware
|
import mozilla.components.feature.session.middleware.LastAccessMiddleware
|
||||||
@@ -166,9 +169,11 @@ class Core(private val context: Context,
|
|||||||
ReaderViewMiddleware(),
|
ReaderViewMiddleware(),
|
||||||
UndoMiddleware(),
|
UndoMiddleware(),
|
||||||
LastAccessMiddleware(),
|
LastAccessMiddleware(),
|
||||||
// PromptMiddleware(),
|
|
||||||
SessionPrioritizationMiddleware(),
|
SessionPrioritizationMiddleware(),
|
||||||
RecordingDevicesMiddleware(context, components.notificationsDelegate),
|
RecordingDevicesMiddleware(context, components.notificationsDelegate),
|
||||||
|
PromptMiddleware(),
|
||||||
|
FileUploadsDirCleanerMiddleware(fileUploadsDirCleaner),
|
||||||
|
LastMediaAccessMiddleware(),
|
||||||
) + EngineMiddleware.create(
|
) + EngineMiddleware.create(
|
||||||
engine,
|
engine,
|
||||||
// We are disabling automatic suspending of engine sessions under memory pressure.
|
// We are disabling automatic suspending of engine sessions under memory pressure.
|
||||||
|
|||||||
Reference in New Issue
Block a user