* For #5577 - Adds button to add a new search engine
* For #5577 - Adds custom engine store
* For #5577 - Creates a custom SearchEngineProvider
* For #5577 - Gives the ability to delete search engines
* For #5577 - Adds the UI to add a custom search engine
* For #5577 - Adds form to create a custom search engine
* For #5577 - Adds the ability to add a custom search engine
* For #5577 - Adds the ability to delete custom search engines
* For #5577 - Selects the first element on the add custom search engine screen
* For #5577 - Prevents adding a search engine that already exists
* For #5577 - Styles the add search engine preference
* For #5577 - Makes the name check case-insensitive
* For #5577 - Fix bug where home screen doesnt see new search engines
* For #5577 - Moves Search URL validation to its own type
* For #5577 - Fixes linting errors
* For #5577 - Adds the ability to edit a custom search engine
* For #5577 - Allows the user to edit a serach engine even when it is the last item in the list
* For #5577 - Adds an undo snackbar when deleting a search engine
* For #5577 - Moves all of the strings to be translated
* For #5577 - Fixes bug when deleting your default search engine
* For #5577 - Puts adding search engines behind a feature flag
* For #5577 - Navigate to custom search engine SUMO article when tapping learn more
* For #5577 - Fixes nits
* For #5577 - Uses concept-fetch to validate search string
* For #5577 - Adds string resources for the cannot reach error state
* For #4844: add test cases for url elision
* For 4844: implement toShortUrl to pass test cases
* For 4844: update plumbing to use toShortUrl
* For 4844: adds/handles suggested url elision test case
Removed label from nav_graph that caused label to be set for each navigation
Removed title setting in onCreate() called for each navigation
Changed logic for checking current root when setting UI for normal mode
* For #4281: small ToolbarMenu refactor
This makes it easier to see how items are ordered in the menuItems list
* For 4281: add QAB buttons to menu
* For 4281: removed menu back button per mocks
I double checked with UX, and we'll be relying on the hardware back button for its functionality
* For 4281: add content descriptions for bookmarking
* For 4281: updated BrowserToolbarController for new functionality
* For 4281: provided simple dependencies to browser controller
More complex changes will be in a following commit, for review readability
* For 4281: move toolbar controller dependencies up to BaseBrowserFragment
The functionality they control is being moved into the toolbar menu, which is shared by both normal tabs and custom ones
* For 4281: removed (now unused) code related to QAB
* For 4281: fix test compilation after QAB removal
Tests still need to be expanded to include added functionality
* For 4281: updated menu to show if url is bookmarked
This sloppy workaround is required because TwoStateButton requires that `isInPrimaryState` be a synchronous call, and checking whether or not the current site is bookmarked is quite slow (10-50 MS, in my tests). After days of work and many attempted solutions, this was the least abhorrent among them.
https://github.com/mozilla-mobile/android-components/issues/4915 was opened against AC to evaluate potentially supporting async `isInPrimaryState` functions.
https://github.com/mozilla-mobile/fenix/issues/6370 was opened against Fenix to investigate the unexpectedly slow call to `BookmarkStorage`.
* For 4281: update reader mode switch
* For 4281: selectively show/hide menu items
* For 4281: add reader mode appearance
* For 4281: update bookmark button when it is clicked
* For 4281: removed unused QAB code
* For 4281: removed QAB robot, updated UI tests
* For 4281: removed QuickActionSheet metrics
Since this behavior now lives in the toolbar, it is tracked via Event.BrowserMenuItemTapped
* For 4281: fixed lint errors
* For 4281: add new strings for buttons added to menu
This is necessary because the location change (from QAB to toolbar menu) could affect the grammar in some languages
* For 4281: remove outdated TODOs
* For 4281: removed QAB container
* For 4281: removed back button reference from UI test
This button no longer exists
* For 4821: Fixes a visual defect (extra padding on top of toolbar)
* For 4281: update copy on reader mode
* For 4281: fixed review nits
* Added Vibration Effect On Scanning QR Code
Added Vibration Feature for the new feature Request
Vibrate phone upon successful pairing #2928
* Added Vibration Effect On Scanning QR Code
Added Vibration Feature for the new feature Request
Vibrate phone upon successful pairing #2928
* Update PairFragment.kt
Removed unwanted blank lines
* Update PairFragment.kt
Removed the Casting with !!
When bookmark fragment is opened from homeFragment, libraryFragment does not
exists so the popBackStack(R.id.libraryFragment, true) would have failed. So
the solution for this was to pop back stack to homeFragment when the
bookmarks/history fragments are opened from homeFragment.
This fixes an issue with Samsung devices where an invisible DeviceCredentialHandler because the executor was "null" (it wasn't actually)
You *must* reuse the biometric object instead of creating a new one.
- added engine hashmap so that we create each type of search provider once
(previously the providers to be added were checked by id, but since the id
is a UUID, it was always unique -> bug with multiple providers with same engine
but different id
- refactored update() flow so that it's more understandable + remove complex
method warning
Used runBlocking to ensure we wait for the code using coroutines to execute
instead of runBlockingTest and join() since this last option led to failed
tests in CI because of
"java.lang.IllegalStateException: This job has not completed yet".
Combined all Stores into one for all Views shown in on Fragment.
Used a static `createStore()` which will build the initial state residing
inside the Store and not in the Fragment as to decouple the Fragment from the
business logic needed to build all the needed initial States.
Added Interactors that handle a MVI View's business logic for
TrackingProtectionView and WebsitePermissionsView.
WebsiteInfoView doesn't register any user input events and does not have any
reason to change while it is displayed so it does not have an Interactor.
The two Interactors will delegate Fragment's QuickSettingsController for
complex Android interactions, communication with other app features or for
Store updates.
Also refactored the stubs from the previous commit so that with this commit the
the quicksettings feature should all be working now based on lib-state.
Refactored `fragment_quick_settings_dialog_sheet` to now be composed of of
FrameLayouts placeholders in which each independent View will inflate itself.
Refactored the QuickSettingsUIView and Component to 3 standalone Views with
their own lib-state components: Store, State, Actions, Reducer.
The problem was that the parameter 'selectedTabIds' was not taken into account
when initializing the variable 'selectedTabs'. So I made the initialization
based on both the selected tab and the number of open tabs.
- Moved toolbar coloring to extension method
- Refactored classes using it
- Removed selection mode colouring for EditBookmarkFragment toolbar,
making it only black and white (normal mode)
- added PRIVATE MODE intent extra to the notification action
(could use also the OPEN_FROM_NOTIFICATION, but I considered this one to
be more explicit. Kept the old one in case other checks will be done
filtering for it)
- added intent? param to the getPrivateModeFromIntent method, because
onNewIntent() method does not set the activities intent, and it was needed
to be used both in onCreate() and onNewIntent()
This reverts commit ed239ec250.
We're choosing to revert LeanPlum push messaging integration since we believe
that this has introduced a crash in Firebase push messaging. To verify
this assumption we're reverting this change, and when confirmed, we can
re-introduce Leamplum in a safer manner.
See #6250 and #6251 for related info.
5332: For #2483#2629: Close tab with no history on back press and return to parent if available r=ekager a=mawen7
Co-authored-by: mawen7 <mawen7@users.noreply.github.com>
* For #4596: move code from CollectionCreationComponent to CollectionCreationStore
Other than adding comments, no changes were made. The code will be updated in a following commit. This is in order to make the commit diff more readable.
* For 4596: update CollectionCreateStore to libstate
* For 4596: copied CollectionCreationUIView into CollectionCreationView
Otherwise, no code was changed. The next commit will update this code. This is in order to make the commit diff more readable.
* For 4596: update CollectionCreationView to LibState
Note that the minimal changes possible to enable migration were made. Refactoring will happen in a later commit.
* For 4596: updated CollectionCreationTabListAdapter to work with the new View
* For 4596: updated SaveCollectionListAdapter to work with the new View
* For 4596: implemented CollectionCreationController
For now, it has an identical interface to the interactor. In a later commit several of its responsibilities will be moved around, some to the interactor and some to the reducer
* For 4596: copied over previous reducer code
No other changes were made. The code will be updated in the following commit. This is done to make changes more readable for the reviewer
* For 4596: update reducer code param names
Otherwise, no changes at this time
* For 4596: add arguments to CreateCollectionFragment in nav_graph
These will be used to replace the current CreateCollectionViewModel, which shares data between fragments in a way that doesn't fit within our architecture.
* For 4596: pass arguments to collection via transaction instead of VM
The VM will be removed in a later commit
* For 4596: update BrowserToolbarController to share state to collection via its Direction
* For 4596: removed CreateCollectionViewModel
* For 4596: test tab retrieval in CreateCollectionFragment
* For 4596: fix crashing CreateCollectionFragmentTest
* For 4596: removed classes create collection classes used by old architecture
* For 4596: collection interactor rename + kdoc
* For 4596: moved collection interactor interface
* For 4596: renamed CreateCollectionFragment
All related classes followed the pattern of CollectionCreationX
* For 4596: kdoc CollectionCreationController
There's no effective difference between these calls and their interactor equivalent, so I linked to them
* For 4596: fix bug that caused rename to not work
* For 4596: removed unused collection actions
These were unused before the LibState refactor
* For 4596: kdoc StepChanged
* For 4596: removed todos about moving logic to the reducer
saveTabsToCollection: this could be moved, but that would involve creating a new action. SaveCollectionStep should probably be refactored out, so adding this layer of indirection seemed counterproductive
handleBackPress: needs to be able to call dismiss(). The reducer doesn't (and shouldn't) be able to do that, so this needs to live here
stepBack: called by handleBackPress. See above
* For 4596: wrote tests for CollectionCreationController#stepback
* For 4596: fixed tests broken by changes to collections
* For 4596: small readability refactor for CollectionController#stepBack
No change to functionality (see tests)
* For 4596: broke apart CollectionView#update
There's probably a lot more that could be done here, but smaller changes were made to reduce scope
* For 4596: remove unnecessary todos
It looks like we don't follow the suggested pattern in this project
* For 4596: test CollectionCreationController#normalSessionSize
* For 4596: updated naming in CollectionCreationController per review
* Closes mozilla-mobile#2435 Change edit icon to share icon on the bookmark toolbar
* Closes mozilla-mobile#2435 Changed raw string to string resources
* Pass bookmark arguments to share fragment
* Closes mozilla-mobile#2435 add orEmpty