Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
b5142bb
Issue #1395: Introduce FocusRepo
psymoon Apr 17, 2019
7e9568c
Issue #1395: Add all required repos to FocusRepo
psymoon Apr 22, 2019
8383425
Issue #1395: Add updateNavUrlInputFocus()
psymoon Apr 22, 2019
48b3155
Issue #1395: Add GlobalFocusChangeListener
psymoon Apr 22, 2019
7bdddac
Issue #1395: Introduce FocusRepo state
psymoon Apr 23, 2019
d8b9607
Issue #1395: Add FocusNode and remove android View references
psymoon Apr 23, 2019
da3ac34
Issue #1395: Implement the rest of NavigationOverlay focusTree updates
psymoon Apr 23, 2019
7cb5504
Issue #1395: Add public focusUpdate Observable
psymoon Apr 24, 2019
6553178
Issue #1395: Add appropriate observables to NavigationOverlayVM
psymoon Apr 24, 2019
861ddd6
Issue #1395: Deprecate updateFocusableViews()
psymoon Apr 24, 2019
a7d8009
Issue #1395: Add NavigationOverlay rootView reference
psymoon Apr 24, 2019
9193a2f
Issue #1395: Fix tilesContainer isEmpty visibility focus state
psymoon Apr 24, 2019
1684f6e
Issue #1395: Fix PocketErrorMegatile focus issues
psymoon Apr 24, 2019
b38e25c
Issue #1395: Update tilesContainer isEmpty case with Rx
psymoon Apr 24, 2019
5ebbfcc
Issue #1395: Add FocusRepo.Event
psymoon Apr 25, 2019
c697068
Issue #1395: Add transition to Pocket default focus for Overlay
psymoon Apr 25, 2019
d1d0ff5
Issue #1395: Add transition to WebRender default focus for Overlay
psymoon Apr 25, 2019
1cf3901
Issue #1395: Handle default focus for Overlay
psymoon Apr 25, 2019
ded4d2a
Issue #1395: Move defaultFocusMap update to when NavOverlay is active
psymoon Apr 25, 2019
c0eafee
Issue #1395: Handle checkIfTilesFocusNeedRefresh() in FocusRepo
psymoon Apr 25, 2019
4020966
Issue #1395: Handle PocketTryAgain lost focus
psymoon Apr 25, 2019
d80694a
Issue #1395: Handle lost focus case
psymoon Apr 25, 2019
5cf6784
Issue #1395: Remove all remaining deprecated focus logic in overlay f…
psymoon Apr 25, 2019
f87b8d3
Issue #1395: Add WebRenderViewModel
psymoon Apr 25, 2019
ff18874
Issue #1395: Hook up WebRenderVM to FocusRepo
psymoon Apr 26, 2019
a8ed3e4
Issue #1395: Remove activeScreen reference from FocusRepo.State
psymoon Apr 26, 2019
60bc056
hacked up possible alternate focus repo approach
severinrudie Apr 27, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions app/src/main/java/org/mozilla/tv/firefox/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ import android.view.KeyEvent
import android.view.View
import androidx.lifecycle.Observer
import io.sentry.Sentry
import kotlinx.android.synthetic.main.activity_main.container_navigation_overlay
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.fragment_navigation_overlay_top_nav.navButtonBack
import kotlinx.android.synthetic.main.overlay_debug.debugLog
import mozilla.components.browser.session.Session
import mozilla.components.concept.engine.EngineView
Expand Down Expand Up @@ -104,7 +105,7 @@ class MainActivity : LocaleAwareAppCompatActivity(), OnUrlEnteredListener, Media
serviceLocator.intentLiveData.value = Consumable.from(intentData)

// Debug logging display for non public users
// TODO: refactor out the debug variant visibility check in #1953
// TODO: refactor out the debug variant visibility check in #1953\
BuildConstants.debugLogStr?.apply {
debugLog.visibility = View.VISIBLE
debugLog.text = this
Expand Down Expand Up @@ -170,13 +171,15 @@ class MainActivity : LocaleAwareAppCompatActivity(), OnUrlEnteredListener, Media
super.onStart()
// TODO when MainActivity has a VM, route this call through it
serviceLocator.pocketRepo.startBackgroundUpdates()
rootView.viewTreeObserver.addOnGlobalFocusChangeListener(serviceLocator.focusRepo)
}

override fun onStop() {
super.onStop()
// TODO when MainActivity has a VM, route this call through it
serviceLocator.pocketRepo.stopBackgroundUpdates()
TelemetryIntegration.INSTANCE.stopMainActivity()
rootView.viewTreeObserver.removeOnGlobalFocusChangeListener(serviceLocator.focusRepo)
}

override fun onDestroy() {
Expand Down
2 changes: 0 additions & 2 deletions app/src/main/java/org/mozilla/tv/firefox/ScreenController.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import android.view.KeyEvent
import androidx.fragment.app.FragmentManager
import io.reactivex.Observable
import io.reactivex.subjects.BehaviorSubject
import kotlinx.android.synthetic.main.fragment_navigation_overlay.navUrlInput
import mozilla.components.browser.session.Session
import org.mozilla.tv.firefox.ScreenControllerStateMachine.ActiveScreen
import org.mozilla.tv.firefox.ScreenControllerStateMachine.Transition
Expand Down Expand Up @@ -143,7 +142,6 @@ class ScreenController(private val sessionRepo: SessionRepo) {

transaction.show(overlayFragment)
MenuInteractionMonitor.menuOpened()
overlayFragment.navUrlInput.requestFocus()
// TODO: Disabled until Overlay refactor is complete #1666
// overlayFragment.navOverlayScrollView.updateOverlayForHomescreen(isOnHomeUrl(fragmentManager))
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import org.mozilla.tv.firefox.navigationoverlay.ToolbarViewModel
import org.mozilla.tv.firefox.settings.SettingsViewModel
import org.mozilla.tv.firefox.utils.ServiceLocator
import org.mozilla.tv.firefox.webrender.WebRenderHintViewModel
import org.mozilla.tv.firefox.webrender.WebRenderViewModel
import org.mozilla.tv.firefox.webrender.cursor.CursorViewModel

/**
Expand Down Expand Up @@ -62,19 +63,26 @@ class ViewModelFactory(
) as T

NavigationOverlayViewModel::class.java -> NavigationOverlayViewModel(
serviceLocator.sessionRepo
serviceLocator.sessionRepo,
serviceLocator.focusRepo,
serviceLocator.screenController.currentActiveScreen
) as T

OverlayHintViewModel::class.java -> OverlayHintViewModel(
serviceLocator.sessionRepo,
hintContentFactory.getCloseMenuHint()
serviceLocator.sessionRepo,
hintContentFactory.getCloseMenuHint()
) as T

WebRenderHintViewModel::class.java -> WebRenderHintViewModel(
serviceLocator.sessionRepo,
serviceLocator.cursorEventRepo,
serviceLocator.screenController,
hintContentFactory.getOpenMenuHint()
serviceLocator.sessionRepo,
serviceLocator.cursorEventRepo,
serviceLocator.screenController,
hintContentFactory.getOpenMenuHint()
) as T

WebRenderViewModel::class.java -> WebRenderViewModel(
serviceLocator.focusRepo,
serviceLocator.screenController.currentActiveScreen
) as T

// This class needs to either return a ViewModel or throw, so we have no good way of silently handling
Expand Down
11 changes: 11 additions & 0 deletions app/src/main/java/org/mozilla/tv/firefox/ext/View.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,14 @@ val View.isEffectivelyVisible: Boolean get() {
}
return true
}

// TODO test this. likely off by 1 error here
fun View.itAndAncestorsAreVisible(generationsUp: Int = Int.MAX_VALUE): Boolean {
var generations = generationsUp
var node: View? = this
while (node != null && generations-- > 0) {
if (node.visibility != View.VISIBLE) return false
node = node.parent as? View
}
return true
}
Loading