Remove un-needed nullables (#13816)

pull/35/head
Tiger Oakes 4 years ago committed by GitHub
parent ff805e53ed
commit a8291bf641
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -65,7 +65,6 @@ import mozilla.components.feature.session.SwipeRefreshFeature
import mozilla.components.feature.session.behavior.EngineViewBottomBehavior import mozilla.components.feature.session.behavior.EngineViewBottomBehavior
import mozilla.components.feature.sitepermissions.SitePermissions import mozilla.components.feature.sitepermissions.SitePermissions
import mozilla.components.feature.sitepermissions.SitePermissionsFeature import mozilla.components.feature.sitepermissions.SitePermissionsFeature
import mozilla.components.feature.sitepermissions.SitePermissionsRules
import mozilla.components.lib.state.ext.flowScoped import mozilla.components.lib.state.ext.flowScoped
import mozilla.components.service.sync.logins.DefaultLoginValidationDelegate import mozilla.components.service.sync.logins.DefaultLoginValidationDelegate
import mozilla.components.support.base.feature.PermissionsFeature import mozilla.components.support.base.feature.PermissionsFeature
@ -82,6 +81,7 @@ import org.mozilla.fenix.OnBackLongPressedListener
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.browser.browsingmode.BrowsingMode import org.mozilla.fenix.browser.browsingmode.BrowsingMode
import org.mozilla.fenix.browser.readermode.DefaultReaderModeController import org.mozilla.fenix.browser.readermode.DefaultReaderModeController
import org.mozilla.fenix.components.Components
import org.mozilla.fenix.components.FenixSnackbar import org.mozilla.fenix.components.FenixSnackbar
import org.mozilla.fenix.components.FindInPageIntegration import org.mozilla.fenix.components.FindInPageIntegration
import org.mozilla.fenix.components.StoreProvider import org.mozilla.fenix.components.StoreProvider
@ -123,8 +123,10 @@ import java.lang.ref.WeakReference
@Suppress("TooManyFunctions", "LargeClass") @Suppress("TooManyFunctions", "LargeClass")
abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, SessionManager.Observer, abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, SessionManager.Observer,
OnBackLongPressedListener, AccessibilityManager.AccessibilityStateChangeListener { OnBackLongPressedListener, AccessibilityManager.AccessibilityStateChangeListener {
private lateinit var browserFragmentStore: BrowserFragmentStore private lateinit var browserFragmentStore: BrowserFragmentStore
private lateinit var browserAnimator: BrowserAnimator private lateinit var browserAnimator: BrowserAnimator
private lateinit var components: Components
private var _browserInteractor: BrowserToolbarViewInteractor? = null private var _browserInteractor: BrowserToolbarViewInteractor? = null
protected val browserInteractor: BrowserToolbarViewInteractor protected val browserInteractor: BrowserToolbarViewInteractor
@ -170,8 +172,7 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session
container: ViewGroup?, container: ViewGroup?,
savedInstanceState: Bundle? savedInstanceState: Bundle?
): View { ): View {
require(arguments != null) customTabSessionId = requireArguments().getString(EXTRA_SESSION_ID)
customTabSessionId = arguments?.getString(EXTRA_SESSION_ID)
// Diagnostic breadcrumb for "Display already aquired" crash: // Diagnostic breadcrumb for "Display already aquired" crash:
// https://github.com/mozilla-mobile/android-components/issues/7960 // https://github.com/mozilla-mobile/android-components/issues/7960
@ -193,6 +194,8 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session
) )
} }
components = requireComponents
return view return view
} }
@ -216,6 +219,7 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session
engineView = WeakReference(engineView), engineView = WeakReference(engineView),
swipeRefresh = WeakReference(swipeRefresh), swipeRefresh = WeakReference(swipeRefresh),
viewLifecycleScope = WeakReference(viewLifecycleOwner.lifecycleScope), viewLifecycleScope = WeakReference(viewLifecycleOwner.lifecycleScope),
settings = context.components.settings,
firstContentfulHappened = ::didFirstContentfulHappen firstContentfulHappened = ::didFirstContentfulHappen
).apply { ).apply {
beginAnimateInIfNecessary() beginAnimateInIfNecessary()
@ -587,9 +591,9 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session
context.settings().setSitePermissionSettingListener(viewLifecycleOwner) { context.settings().setSitePermissionSettingListener(viewLifecycleOwner) {
// If the user connects to WIFI while on the BrowserFragment, this will update the // If the user connects to WIFI while on the BrowserFragment, this will update the
// SitePermissionsRules (specifically autoplay) accordingly // SitePermissionsRules (specifically autoplay) accordingly
assignSitePermissionsRules(context) assignSitePermissionsRules()
} }
assignSitePermissionsRules(context) assignSitePermissionsRules()
fullScreenFeature.set( fullScreenFeature.set(
feature = FullScreenFeature( feature = FullScreenFeature(
@ -941,15 +945,13 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session
* Returns the layout [android.view.Gravity] for the quick settings and ETP dialog. * Returns the layout [android.view.Gravity] for the quick settings and ETP dialog.
*/ */
protected fun getAppropriateLayoutGravity(): Int = protected fun getAppropriateLayoutGravity(): Int =
context?.settings()?.toolbarPosition?.androidGravity ?: Gravity.BOTTOM components.settings.toolbarPosition.androidGravity
/** /**
* Updates the site permissions rules based on user settings. * Updates the site permissions rules based on user settings.
*/ */
private fun assignSitePermissionsRules(context: Context) { private fun assignSitePermissionsRules() {
val settings = context.settings() val rules = components.settings.getSitePermissionsCustomSettingsRules()
val rules: SitePermissionsRules = settings.getSitePermissionsCustomSettingsRules()
sitePermissionsFeature.withFeature { sitePermissionsFeature.withFeature {
it.sitePermissionsRules = rules it.sitePermissionsRules = rules
@ -995,7 +997,7 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session
* Returns the current session. * Returns the current session.
*/ */
protected fun getSessionById(): Session? { protected fun getSessionById(): Session? {
val sessionManager = context?.components?.core?.sessionManager ?: return null val sessionManager = components.core.sessionManager
val localCustomTabId = customTabSessionId val localCustomTabId = customTabSessionId
return if (localCustomTabId != null) { return if (localCustomTabId != null) {
sessionManager.findSessionById(localCustomTabId) sessionManager.findSessionById(localCustomTabId)
@ -1106,10 +1108,12 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session
} }
private fun didFirstContentfulHappen() = private fun didFirstContentfulHappen() =
if (!requireContext().settings().waitToShowPageUntilFirstPaint) true else if (components.settings.waitToShowPageUntilFirstPaint) {
context?.components?.core?.store?.state?.findTabOrCustomTabOrSelectedTab( val tab = components.core.store.state.findTabOrCustomTabOrSelectedTab(customTabSessionId)
customTabSessionId tab?.content?.firstContentfulPaint ?: false
)?.content?.firstContentfulPaint ?: false } else {
true
}
/* /*
* Dereference these views when the fragment view is destroyed to prevent memory leaks * Dereference these views when the fragment view is destroyed to prevent memory leaks

@ -18,6 +18,7 @@ import mozilla.components.concept.engine.EngineView
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.components.toolbar.ToolbarPosition import org.mozilla.fenix.components.toolbar.ToolbarPosition
import org.mozilla.fenix.ext.settings import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.utils.Settings
import java.lang.ref.WeakReference import java.lang.ref.WeakReference
/** /**
@ -29,6 +30,7 @@ class BrowserAnimator(
private val engineView: WeakReference<EngineView>, private val engineView: WeakReference<EngineView>,
private val swipeRefresh: WeakReference<View>, private val swipeRefresh: WeakReference<View>,
private val viewLifecycleScope: WeakReference<LifecycleCoroutineScope>, private val viewLifecycleScope: WeakReference<LifecycleCoroutineScope>,
private val settings: Settings,
private val firstContentfulHappened: () -> Boolean private val firstContentfulHappened: () -> Boolean
) { ) {
@ -39,7 +41,7 @@ class BrowserAnimator(
get() = swipeRefresh.get() get() = swipeRefresh.get()
fun beginAnimateInIfNecessary() { fun beginAnimateInIfNecessary() {
if (unwrappedSwipeRefresh?.context?.settings()?.waitToShowPageUntilFirstPaint == true) { if (settings.waitToShowPageUntilFirstPaint) {
if (firstContentfulHappened()) { if (firstContentfulHappened()) {
viewLifecycleScope.get()?.launch { viewLifecycleScope.get()?.launch {
delay(ANIMATION_DELAY) delay(ANIMATION_DELAY)

@ -113,8 +113,11 @@ class SearchFragment : Fragment(), UserInteractionHandler {
searchController searchController
) )
awesomeBarView = AwesomeBarView(requireContext(), searchInteractor, awesomeBarView = AwesomeBarView(
view.findViewById(R.id.awesomeBar)) activity,
searchInteractor,
view.findViewById(R.id.awesomeBar)
)
setShortcutsChangedListener(CustomSearchEngineStore.PREF_FILE_SEARCH_ENGINES) setShortcutsChangedListener(CustomSearchEngineStore.PREF_FILE_SEARCH_ENGINES)
setShortcutsChangedListener(FenixSearchEngineProvider.PREF_FILE_SEARCH_ENGINES) setShortcutsChangedListener(FenixSearchEngineProvider.PREF_FILE_SEARCH_ENGINES)

@ -4,7 +4,6 @@
package org.mozilla.fenix.search.awesomebar package org.mozilla.fenix.search.awesomebar
import android.content.Context
import androidx.appcompat.content.res.AppCompatResources.getDrawable import androidx.appcompat.content.res.AppCompatResources.getDrawable
import androidx.core.graphics.BlendModeColorFilterCompat.createBlendModeColorFilterCompat import androidx.core.graphics.BlendModeColorFilterCompat.createBlendModeColorFilterCompat
import androidx.core.graphics.BlendModeCompat.SRC_IN import androidx.core.graphics.BlendModeCompat.SRC_IN
@ -25,7 +24,7 @@ import mozilla.components.feature.tabs.TabsUseCases
import mozilla.components.support.ktx.android.content.getColorFromAttr import mozilla.components.support.ktx.android.content.getColorFromAttr
import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.ext.asActivity import org.mozilla.fenix.browser.browsingmode.BrowsingMode
import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.components
import org.mozilla.fenix.search.SearchEngineSource import org.mozilla.fenix.search.SearchEngineSource
import org.mozilla.fenix.search.SearchFragmentState import org.mozilla.fenix.search.SearchFragmentState
@ -34,7 +33,7 @@ import org.mozilla.fenix.search.SearchFragmentState
* View that contains and configures the BrowserAwesomeBar * View that contains and configures the BrowserAwesomeBar
*/ */
class AwesomeBarView( class AwesomeBarView(
private val context: Context, private val activity: HomeActivity,
val interactor: AwesomeBarInteractor, val interactor: AwesomeBarInteractor,
val view: BrowserAwesomeBar val view: BrowserAwesomeBar
) { ) {
@ -90,18 +89,20 @@ class AwesomeBarView(
init { init {
view.itemAnimator = null view.itemAnimator = null
val components = context.components val components = activity.components
val primaryTextColor = context.getColorFromAttr(R.attr.primaryText) val primaryTextColor = activity.getColorFromAttr(R.attr.primaryText)
val engineForSpeculativeConnects = val engineForSpeculativeConnects = when (activity.browsingModeManager.mode) {
if (!isBrowsingModePrivate()) components.core.engine else null BrowsingMode.Normal -> components.core.engine
BrowsingMode.Private -> null
}
sessionProvider = sessionProvider =
SessionSuggestionProvider( SessionSuggestionProvider(
context.resources, activity.resources,
components.core.store, components.core.store,
selectTabUseCase, selectTabUseCase,
components.core.icons, components.core.icons,
getDrawable(context, R.drawable.ic_search_results_tab), getDrawable(activity, R.drawable.ic_search_results_tab),
excludeSelectedSession = true excludeSelectedSession = true
) )
@ -118,17 +119,17 @@ class AwesomeBarView(
bookmarksStorage = components.core.bookmarksStorage, bookmarksStorage = components.core.bookmarksStorage,
loadUrlUseCase = loadUrlUseCase, loadUrlUseCase = loadUrlUseCase,
icons = components.core.icons, icons = components.core.icons,
indicatorIcon = getDrawable(context, R.drawable.ic_search_results_bookmarks), indicatorIcon = getDrawable(activity, R.drawable.ic_search_results_bookmarks),
engine = engineForSpeculativeConnects engine = engineForSpeculativeConnects
) )
val searchBitmap = getDrawable(context, R.drawable.ic_search)!!.apply { val searchBitmap = getDrawable(activity, R.drawable.ic_search)!!.apply {
colorFilter = createBlendModeColorFilterCompat(primaryTextColor, SRC_IN) colorFilter = createBlendModeColorFilterCompat(primaryTextColor, SRC_IN)
}.toBitmap() }.toBitmap()
defaultSearchSuggestionProvider = defaultSearchSuggestionProvider =
SearchSuggestionProvider( SearchSuggestionProvider(
context = context, context = activity,
searchEngineManager = components.search.searchEngineManager, searchEngineManager = components.search.searchEngineManager,
searchUseCase = searchUseCase, searchUseCase = searchUseCase,
fetchClient = components.core.client, fetchClient = components.core.client,
@ -143,7 +144,7 @@ class AwesomeBarView(
defaultSearchActionProvider = defaultSearchActionProvider =
SearchActionProvider( SearchActionProvider(
searchEngineGetter = suspend { searchEngineGetter = suspend {
components.search.searchEngineManager.getDefaultSearchEngineAsync(context) components.search.searchEngineManager.getDefaultSearchEngineAsync(activity)
}, },
searchUseCase = searchUseCase, searchUseCase = searchUseCase,
icon = searchBitmap, icon = searchBitmap,
@ -153,7 +154,7 @@ class AwesomeBarView(
shortcutsEnginePickerProvider = shortcutsEnginePickerProvider =
ShortcutsSuggestionProvider( ShortcutsSuggestionProvider(
searchEngineProvider = components.search.provider, searchEngineProvider = components.search.provider,
context = context, context = activity,
selectShortcutEngine = interactor::onSearchShortcutEngineSelected, selectShortcutEngine = interactor::onSearchShortcutEngineSelected,
selectShortcutEngineSettings = interactor::onClickSearchEngineSettings selectShortcutEngineSettings = interactor::onClickSearchEngineSettings
) )
@ -218,7 +219,7 @@ class AwesomeBarView(
providersToAdd.addAll(getSelectedSearchSuggestionProvider(state)) providersToAdd.addAll(getSelectedSearchSuggestionProvider(state))
} }
if (!isBrowsingModePrivate()) { if (activity.browsingModeManager.mode == BrowsingMode.Normal) {
providersToAdd.add(sessionProvider) providersToAdd.add(sessionProvider)
} }
@ -242,18 +243,13 @@ class AwesomeBarView(
providersToRemove.addAll(getSelectedSearchSuggestionProvider(state)) providersToRemove.addAll(getSelectedSearchSuggestionProvider(state))
} }
if (isBrowsingModePrivate()) { if (activity.browsingModeManager.mode == BrowsingMode.Private) {
providersToRemove.add(sessionProvider) providersToRemove.add(sessionProvider)
} }
return providersToRemove return providersToRemove
} }
private fun isBrowsingModePrivate(): Boolean {
return (context.asActivity() as? HomeActivity)?.browsingModeManager?.mode?.isPrivate
?: false
}
private fun getSelectedSearchSuggestionProvider(state: SearchFragmentState): List<AwesomeBar.SuggestionProvider> { private fun getSelectedSearchSuggestionProvider(state: SearchFragmentState): List<AwesomeBar.SuggestionProvider> {
return when (state.searchEngineSource) { return when (state.searchEngineSource) {
is SearchEngineSource.Default -> listOf( is SearchEngineSource.Default -> listOf(
@ -275,18 +271,20 @@ class AwesomeBarView(
private fun getSuggestionProviderForEngine(engine: SearchEngine): List<AwesomeBar.SuggestionProvider> { private fun getSuggestionProviderForEngine(engine: SearchEngine): List<AwesomeBar.SuggestionProvider> {
return searchSuggestionProviderMap.getOrPut(engine) { return searchSuggestionProviderMap.getOrPut(engine) {
val components = context.components val components = activity.components
val primaryTextColor = context.getColorFromAttr(R.attr.primaryText) val primaryTextColor = activity.getColorFromAttr(R.attr.primaryText)
val searchBitmap = getDrawable(context, R.drawable.ic_search)?.apply { val searchBitmap = getDrawable(activity, R.drawable.ic_search)!!.apply {
colorFilter = createBlendModeColorFilterCompat(primaryTextColor, SRC_IN) colorFilter = createBlendModeColorFilterCompat(primaryTextColor, SRC_IN)
}?.toBitmap() }.toBitmap()
val engineForSpeculativeConnects = val engineForSpeculativeConnects = when (activity.browsingModeManager.mode) {
if (!isBrowsingModePrivate()) components.core.engine else null BrowsingMode.Normal -> components.core.engine
BrowsingMode.Private -> null
}
val searchEngine = val searchEngine =
components.search.provider.installedSearchEngines(context).list.find { it.name == engine.name } components.search.provider.installedSearchEngines(activity).list.find { it.name == engine.name }
?: components.search.provider.getDefaultEngine(context) ?: components.search.provider.getDefaultEngine(activity)
listOf( listOf(
SearchActionProvider( SearchActionProvider(

@ -99,12 +99,13 @@ class SearchDialogFragment : AppCompatDialogFragment(), UserInteractionHandler {
): View? { ): View? {
val args by navArgs<SearchDialogFragmentArgs>() val args by navArgs<SearchDialogFragmentArgs>()
val view = inflater.inflate(R.layout.fragment_search_dialog, container, false) val view = inflater.inflate(R.layout.fragment_search_dialog, container, false)
val activity = requireActivity() as HomeActivity
requireComponents.analytics.metrics.track(Event.InteractWithSearchURLArea) requireComponents.analytics.metrics.track(Event.InteractWithSearchURLArea)
store = SearchDialogFragmentStore( store = SearchDialogFragmentStore(
createInitialSearchFragmentState( createInitialSearchFragmentState(
activity as HomeActivity, activity,
requireComponents, requireComponents,
tabId = args.sessionId, tabId = args.sessionId,
pastedText = args.pastedText, pastedText = args.pastedText,
@ -114,7 +115,7 @@ class SearchDialogFragment : AppCompatDialogFragment(), UserInteractionHandler {
interactor = SearchDialogInteractor( interactor = SearchDialogInteractor(
SearchDialogController( SearchDialogController(
activity = requireActivity() as HomeActivity, activity = activity,
sessionManager = requireComponents.core.sessionManager, sessionManager = requireComponents.core.sessionManager,
store = store, store = store,
navController = findNavController(), navController = findNavController(),
@ -137,7 +138,7 @@ class SearchDialogFragment : AppCompatDialogFragment(), UserInteractionHandler {
).also(::addSearchButton) ).also(::addSearchButton)
awesomeBarView = AwesomeBarView( awesomeBarView = AwesomeBarView(
requireContext(), activity,
interactor, interactor,
view.awesome_bar view.awesome_bar
) )

@ -118,8 +118,8 @@ class SitePermissionsExceptionsFragment :
} }
} }
override fun onClick(view: View?) { override fun onClick(view: View) {
val sitePermissions = view?.tag as SitePermissions val sitePermissions = view.tag as SitePermissions
val directions = SitePermissionsExceptionsFragmentDirections val directions = SitePermissionsExceptionsFragmentDirections
.actionSitePermissionsToExceptionsToSitePermissionsDetails(sitePermissions) .actionSitePermissionsToExceptionsToSitePermissionsDetails(sitePermissions)
nav(R.id.sitePermissionsExceptionsFragment, directions) nav(R.id.sitePermissionsExceptionsFragment, directions)

Loading…
Cancel
Save