diff options
Diffstat (limited to 'mobile/android/android-components/components/feature/session/README.md')
-rw-r--r-- | mobile/android/android-components/components/feature/session/README.md | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/mobile/android/android-components/components/feature/session/README.md b/mobile/android/android-components/components/feature/session/README.md new file mode 100644 index 0000000000..785420bfa5 --- /dev/null +++ b/mobile/android/android-components/components/feature/session/README.md @@ -0,0 +1,67 @@ +# [Android Components](../../../README.md) > Feature > Session + +A component that connects an (concept) engine implementation with the browser session module. +A HistoryTrackingDelegate implementation is also provided, which allows tying together +an engine implementation with a storage module. + +## Usage + +### Setting up the dependency + +Use Gradle to download the library from [maven.mozilla.org](https://maven.mozilla.org/) ([Setup repository](../../../README.md#maven-repository)): + +```Groovy +implementation "org.mozilla.components:feature-session:{latest-version}" +``` + +### SwipeRefreshFeature +Sample code can be found in [Sample Browser app](https://github.com/mozilla-mobile/android-components/tree/main/samples/browser). + +Class to add pull to refresh functionality to browsers. You should pass it a reference to a [`SwipeRefreshLayout`](https://developer.android.com/reference/kotlin/androidx/swiperefreshlayout/widget/SwipeRefreshLayout.html) and the SessionManager. + +Your layout should have a `SwipeRefreshLayout` with an `EngineView` as its only child view. + +```xml +<androidx.swiperefreshlayout.widget.SwipeRefreshLayout + android:id="@+id/swipeRefreshLayout" + android:layout_width="match_parent" + android:layout_height="match_parent"> + <mozilla.components.concept.engine.EngineView + android:id="@+id/engineView" + android:layout_width="match_parent" + android:layout_height="match_parent" /> +</androidx.swiperefreshlayout.widget.SwipeRefreshLayout> +``` + +In your fragment code, use `SwipeRefreshFeature` to connect the `SwipeRefreshLayout` with your `SessionManager` and `ReloadUrlUseCase`. + +```kotlin + val feature = BrowserSwipeRefresh(sessionManager, sessionUseCases.reload, swipeRefreshLayout) + lifecycle.addObserver(feature) +``` + +`SwipeRefreshFeature` provides its own [`SwipeRefreshLayout.OnChildScrollUpCallback`](https://developer.android.com/reference/kotlin/androidx/swiperefreshlayout/widget/SwipeRefreshLayout.OnChildScrollUpCallback.html) and [`SwipeRefreshLayout.OnRefreshListener`](https://developer.android.com/reference/kotlin/androidx/swiperefreshlayout/widget/SwipeRefreshLayout.OnRefreshListener.html) implementations that you should not override. + +### ThumbnailsFeature + +Feature implementation for automatically taking thumbnails of sites. The feature will take a screenshot when the page finishes loading, and will add it to the `Session.thumbnail` property. + +```kotlin + val feature = ThumbnailsFeature(context, engineView, sessionManager) + lifecycle.addObserver(feature) +``` + +If the OS is under low memory conditions, the screenshot will be not taken. Ideally, this should be used in conjunction with [SessionManager.onLowMemory](https://github.com/mozilla-mobile/android-components/blob/024e3de456e3b46e9bf6718db9500ecc52da3d29/components/browser/session/src/main/java/mozilla/components/browser/session/SessionManager.kt#L472) to allow free up some `Session.thumbnail` from memory. + + ```kotlin + // Wherever you implement ComponentCallbacks2 + override fun onTrimMemory(level: Int) { + sessionManager.onLowMemory() + } +``` + +## License + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/ |