2
0
mirror of https://github.com/fork-maintainers/iceraven-browser synced 2024-11-19 09:25:34 +00:00
Commit Graph

44 Commits

Author SHA1 Message Date
Jonathan Almeida
27280e6683 Issue #19809: Remove Grid layout info banner in tabs tray 2021-06-04 22:26:22 +04:00
Jonathan Almeida
dc11c334b6 Issue #19112: Remove old tab tray code 2021-06-04 02:18:37 +04:00
Jonathan Almeida
fc46ab2804 Close #19731: Track metrics before we dismiss the tabs tray 2021-05-31 21:46:13 +04:00
Jonathan Almeida
758700cbb0 Issue #19647: Navigate to browser from home via Synced Tabs page 2021-05-27 05:21:57 +04:00
Mugurell
3fb40e1f40 For #19475 - Introduce a DefaultTabsTrayInteractor
Refactored the TabsTrayFragment to not implement the TabsTrayInteractor which
among other advantages allowed for easier testing.
2021-05-26 15:45:54 +03:00
Mugurell
dc26272381 For #19475 - Cleanup - respect naming scheme in TabsTrayController
In our current MVI implementation the View Interactors are first called in
response to a direct user action and contain methods following the
"onXXHappened" naming scheme and then delegate other Interactors / Controllers
for specific actions.

Controllers contain the business logic for actually updating the app's state
and offer methods following the "handleXXAction" naming scheme.
2021-05-26 15:45:54 +03:00
Jonathan Almeida
ede909e858
Issue #19176: Exit select mode when removing tab (#19486) 2021-05-13 09:31:04 +03:00
Jonathan Almeida
f0d352f47e Issue #19002: Correct naming of pager viewholders 2021-05-11 19:40:14 +04:00
Jonathan Almeida
a95a26b2c6 Issue #19002: Use a single BrowserTrayList for normal/private list
We now have a BrowserTrayList.
 - Renamed from `BaseBrowserTrayList`.
 - Removed the abstract `configuration` and used a `lateinit var`
 instead.
 - Removed `NormalBrowserTrayList` and `PrivateBrowserTrayList`.
2021-05-11 19:40:14 +04:00
Jonathan Almeida
bd753d3f94 Issue #19002: Correct browser viewholder naming 2021-05-11 19:40:14 +04:00
Jonathan Almeida
809c82a9f9 Issue #19002: Move TabsTrayViewHolder to browser package 2021-05-11 19:40:14 +04:00
Jonathan Almeida
392ace67d6 Issue #19175: Fix SyncTabs list not updating on changes
The main cause for this is that the `LifecycleProvider` needs to be set
to `State.RESUMED` to avoid the account manager's internal
`ObserverRegistry` from putting the UI observers into the paused state.

The rest of the changes is to rely the internal (safe) logic to
correctly sync and then update the tabs list.
2021-05-10 21:37:32 +04:00
Jonathan Almeida
f421f82f2c Close #19259: Pass CoroutineContext to nav interactor constructor 2021-05-04 20:13:10 +04:00
Roger Yang
cd37f398f1
Closes #18816: Disable TabsTray FAB on accessibility enabled (#19170) 2021-04-22 12:48:10 -04:00
Jonathan Almeida
69efd3a089 Close #19094: Open sign-in flow if no account is created for tabs tray 2021-04-19 23:18:37 +04:00
Jonathan Almeida
8b6d06e551 Close #19064: Focus on tab page with the BrowsingModeManager 2021-04-17 04:30:38 +04:00
Roger Yang
cba68faac6 Closes #18946: Add undo toast for tabstray 2021-04-17 02:30:39 +04:00
codrut.topliceanu
3b7ba340e1 For #19023 - Expands tabsTray when tabs over certain number
TabsTray should be collapsed when there are only a few tabs on screen, otherwise it should go straight to STATE_EXPANDED.
2021-04-16 23:35:14 +04:00
Kate Glazko
ae157e5679 For #18520: Add Empty Tab State To Browser Tray List 2021-04-16 05:22:44 +04:00
Jonathan Almeida
2ef04c2a9e Close #19024: Fix intermittent test failure in NavigationInteractor 2021-04-16 02:34:23 +04:00
Jonathan Almeida
6c8b1a7e8f Close #19045: Dismiss tabstray when last tab in a page is closed 2021-04-16 02:31:13 +04:00
Roger Yang
bde54dc30f
Closes #19003: Add account setting to tabstray synced tab menu (#19034) 2021-04-15 00:46:26 -04:00
Roger Yang
8246f81c97
Closes #18948: Update tabstray telemetry (#19004) 2021-04-14 15:32:45 -04:00
Jonathan Almeida
b9881372ef Close #19011: Always have a click listener in TabTrayViewHolder 2021-04-14 19:08:39 +04:00
Jonathan Almeida
0a4927a495 Issue #18934: Do not nullify adapter on window detached
Previously, to fix a memory leak, we were removing the adapter reference
entirely in order to have the `onDetachedFromRecyclerView` callback
invoked. This causes a side-effect where we can no longer reference the
adapter any more when we re-attach.

The simpler solution is to just invoke the needed callback directly
instead.
2021-04-14 19:00:51 +04:00
MarcLeclair
990bfa7e6d
16900 make navgraph inflation asynchronous (#18889)
* For #16900: implement async navgraph inflation

For #16900: removed nav graph from xml

For #16900: inflate navGraph programatically

For #16900: Made NavGraph inflation asynchronous

For #16900: Changed to block with runBlocking

For #16900: Refactored blocking call into a function

For 16900: NavGraph inflation is now async

We now attach the nav graph (or check if its attached) on every nav call ( an extension function for NavController).
This is done by checking the value of the job stored in PerfNavController.map which keeps track of the job with the NavController as a Key.
If the job hasn't been completed, it will block the main thread until the job is done. The job itself is responsible for attaching the navgraph
to the navcontroller (and the inflation of the latter too)

For 16900: rebased upstream master

For 16900: Rebase on master

For #16900: Fixed Async Navgraph navigation per review comments.

1)The Asynchronous method is now found in NavGraphProvider.kt. It creates a job on the IO dispatcher
2)The Job is tracked through a WeakHashMap from Controller --> NavGraph
3)The Coroutine scope doesn't use MainScope() anymore
4)The Coroutine is cancelled if the Activity is destroyed
5)The tests mockk the blockForNavGraphInflation method through the FenixReoboelectricTestApplication instead of calling the mock every setup()

For #16900: inflateNavGraphAsync now takes navController

For #16900: Pass lifecycleScope to NavGraphProvider

For #16900: removed unused mock

For #16900: Added linter rules for navigate calls

We need linting rules to make sure no one calls the NavController.navigate() methods

For #16900: Added TestRule to help abstract the mocks in the code

For 16900: Fix linting problems

For #16900: Cleaned duplicated code in tests

For #16900: cleaned up NavGraphTestRule for finished test

For #16900: had to revert an accidentally edited file

For #16900: rebased master

* For #16900: Review nits for async navgraph

This is composed of squash commits, the original messages can be found below:

-> DisableNavGraphProviderAssertionRule + kdoc.

Use test rule in RobolectricApplication.

Fix failing CrashReporterControllerTest

Fix blame by -> navigate in tests.

This commit was generated by the following commands only:
```
find app/src/test -type f -exec sed -i '' "/import org.mozilla.fenix.ext.navigateBlockingForAsyncNavGraph/d" {} \;
find app/src/test -type f -exec sed -i "" "s/navigateBlockingForAsyncNavGraph/navigate/g" {} \;
git checkout app/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker
```

Fix various blame

This is expected to be squashed into the first commit so, if so, it'd
fix the blame.

Move test rule to helpers pkg.

add missing license header

Add import change I missed

fix unused imports

Replace robolectricTestrunner with test rule.

Improve navGraphProvider docs

Remove unnecessary rule as defined by robolectric.

add clarifying comment to robolectric

remove unnecessary space

* For #16900: nit fixes for MozillaNavigateCheck and lint fixes

3 squash commits:
 *Changed violation message and fixed the lint rule for MozillaNavigateCheck
 *Added suppression to NavController.kt
 *Fixed detekt violations

* For 16900: Fixed failing tests

Co-authored-by: Michael Comella <michael.l.comella@gmail.com>
2021-04-13 20:48:45 -04:00
Jonathan Almeida
d342aeae48 Close #18931: Implement add to collections in interactor
We moved the collection dialog code out from the old fragment, because it
had nothing to do with tabs tray, and into the collections package to be
re-usable in other parts of the app.

In addition, we also make use of it in the new tabs tray's
NavigationInteractor.
2021-04-14 01:48:35 +04:00
Jonathan Almeida
1944a5ef6b Issue #18885: Dismiss FAB icon when tabs tray is closed 2021-04-13 18:59:16 +04:00
Roger Yang
bc90e193a2 Closes #18522: Re-add call to action in tabs tray 2021-04-13 02:01:42 +04:00
Jonathan Almeida
f3df2c73d9
Close #18862: Add multi-select banner to tabs tray (#18932)
* Issue #18862: Add new addBookmark BookmarksUseCase

* Issue #18862: Add class for state binding features

* Issue #18862: Add delete multiple tabs to tray interactor

* Issue #18862: Add new actions to navigation interactor

* Issue #18862: Enable select mode from main tray menu

* Issue #18862: Add menu when in select mode

* Close #18862: Add multi-select banner to tabs tray

* Close #18862: Add select support for handle UI

We apply various layout changes to the "handle" UI in the tabs tray when
switching modes. It isn't quite clear to my, why we do this, if it's
really needed to meet the end result, and if there is a better way.

For now, we're simplying moving over that logic that we can re-evaluate
at a later time.
2021-04-12 14:57:01 -04:00
Jonathan Almeida
6d09a8757c Close #18845: Adds swipe-to-delete to tabs tray refactor
Copied the TabsTouchHelper from the `tabtray` package here so we don't
need to re-write our own because there's nothing more to add.

We can hook this up with our tabs tray here by putting it in the
`BaseBrowserTrayList` for our normal and private tabs list.
2021-04-09 06:50:05 +04:00
codrut.topliceanu
9219a1b35b For #18515 - Added Icon and sync functionality
Co-authored-by: Jonathan Almeida <jalmeida@mozilla.com>
2021-04-08 02:45:16 +04:00
Jonathan Almeida
2e3086ac40 No issue: Move menu to separate integrations class 2021-04-07 21:23:09 +04:00
Jonathan Almeida
dd3e95b4cf No issue: Add test for share tab in navigation interactor
Co-authored-by: Roger Yang <royang@mozilla.com>
2021-04-07 21:23:09 +04:00
Jonathan Almeida
729acdba39 No issue: Observe only normal tabs when updating counter 2021-04-07 21:23:09 +04:00
Jonathan Almeida
9078139e40 Close #18774: Migrate mutli-selection to store
Removes the recyclerview-selection library and replaces it with the
SelectionHolder/SelectionInteractor with a Store.

This is an implementation that's similar to what we have in other UI
lists (library).
2021-04-07 19:14:54 +04:00
Roger Yang
01568d5859
Closes #18513: Re-add menu to tabs tray (#18756) 2021-04-06 10:26:41 -04:00
Jonathan Almeida
a443509c8b Issue #18535: Set the span count for grid view 2021-04-06 09:57:33 +04:00
Jonathan Almeida
2c6395cafe Issue #18535: Do not animate first scroll to position
This looks less that ideal with a grid layout that swings by from the
normal tabs to private tabs.
2021-04-06 09:57:33 +04:00
Jonathan Almeida
92a99542e6
Close #17821: Add TabsTrayStore with actions and reducer (#18773) 2021-04-05 15:12:07 -04:00
Jonathan Almeida
af3a5b0a17
No issue - Make TabLayoutMediator lifecycle aware (#18779) 2021-04-05 15:10:29 -04:00
Jonathan Almeida
cb1fb95a3a Issue #18521: Focus on page corresponding to selected tab
This first part of #18521 is to focus on the correct pager item first
before we land a patch for `scrollToPosition` of the selected tab.
2021-03-30 03:08:01 +04:00
Jonathan Almeida
e41344aa1f Close #18668: Add stable ID cache for TabAdapter.getItemId 2021-03-30 02:58:54 +04:00
Jonathan Almeida
05aa948dc7 Issue #17822: Create a tabs tray layout and fragment
Co-authored-by: Kate Glazko <kglazko@Kates-MacBook-Pro.local>
2021-03-17 03:16:10 +04:00