Android-components: URL bar covers fixed elements at the bottom of the page

Created on 8 Apr 2019  路  2Comments  路  Source: mozilla-mobile/android-components

Most helpful comment

The GeckoView API was added in bug 1516048.

Here is a quick change I made to AC to test it with the sample browser, hopefully this will inspire :)

diff --git a/components/browser/engine-gecko-nightly/src/main/java/mozilla/components/browser/engine/gecko/GeckoEngineView.kt b/components/browser/engine-gecko-nightly/src/main/java/mozilla/components/browser/engine/gecko/GeckoEngineView.kt
index f68ee1326..369258903 100644
--- a/components/browser/engine-gecko-nightly/src/main/java/mozilla/components/browser/engine/gecko/GeckoEngineView.kt
+++ b/components/browser/engine-gecko-nightly/src/main/java/mozilla/components/browser/engine/gecko/GeckoEngineView.kt
@@ -103,4 +103,8 @@ class GeckoEngineView @JvmOverloads constructor(
             GeckoResult<Void>()
         })
     }
+
+    override fun setVerticalClipping(current: Int, max: Int) {
+        currentGeckoView.setVerticalClipping(current)
+    }
 }
diff --git a/components/concept/engine/src/main/java/mozilla/components/concept/engine/EngineView.kt b/components/concept/engine/src/main/java/mozilla/components/concept/engine/EngineView.kt
index 3ee565a38..7d53485ee 100644
--- a/components/concept/engine/src/main/java/mozilla/components/concept/engine/EngineView.kt
+++ b/components/concept/engine/src/main/java/mozilla/components/concept/engine/EngineView.kt
@@ -72,6 +72,8 @@ interface EngineView {
      * @param onFinish A callback to inform that process of capturing a thumbnail has finished.
      */
     fun captureThumbnail(onFinish: (Bitmap?) -> Unit)
+
+    fun setVerticalClipping(current: Int, max: Int) = Unit
 }

 /**
diff --git a/components/feature/session/src/main/java/mozilla/components/feature/session/CoordinateScrollingFeature.kt b/components/feature/session/src/main/java/mozilla/components/feature/session/CoordinateScrollingFeature.kt
index 150d13e82..9ea64754f 100644
--- a/components/feature/session/src/main/java/mozilla/components/feature/session/CoordinateScrollingFeature.kt
+++ b/components/feature/session/src/main/java/mozilla/components/feature/session/CoordinateScrollingFeature.kt
@@ -34,6 +34,12 @@ class CoordinateScrollingFeature(
      */
     override fun start() {
         observeSelected()
+        val appBarLayout = view.parent as AppBarLayout
+        appBarLayout.addOnOffsetChangedListener (object: AppBarLayout.OnOffsetChangedListener {
+            override fun onOffsetChanged(appBar: AppBarLayout?, offset: Int) {
+                engineView.setVerticalClipping(appBarLayout.totalScrollRange + offset, appBarLayout.totalScrollRange);
+            }
+        })
     }

     override fun onLoadingStateChanged(session: Session, loading: Boolean) {

All 2 comments

The GeckoView API was added in bug 1516048.

Here is a quick change I made to AC to test it with the sample browser, hopefully this will inspire :)

diff --git a/components/browser/engine-gecko-nightly/src/main/java/mozilla/components/browser/engine/gecko/GeckoEngineView.kt b/components/browser/engine-gecko-nightly/src/main/java/mozilla/components/browser/engine/gecko/GeckoEngineView.kt
index f68ee1326..369258903 100644
--- a/components/browser/engine-gecko-nightly/src/main/java/mozilla/components/browser/engine/gecko/GeckoEngineView.kt
+++ b/components/browser/engine-gecko-nightly/src/main/java/mozilla/components/browser/engine/gecko/GeckoEngineView.kt
@@ -103,4 +103,8 @@ class GeckoEngineView @JvmOverloads constructor(
             GeckoResult<Void>()
         })
     }
+
+    override fun setVerticalClipping(current: Int, max: Int) {
+        currentGeckoView.setVerticalClipping(current)
+    }
 }
diff --git a/components/concept/engine/src/main/java/mozilla/components/concept/engine/EngineView.kt b/components/concept/engine/src/main/java/mozilla/components/concept/engine/EngineView.kt
index 3ee565a38..7d53485ee 100644
--- a/components/concept/engine/src/main/java/mozilla/components/concept/engine/EngineView.kt
+++ b/components/concept/engine/src/main/java/mozilla/components/concept/engine/EngineView.kt
@@ -72,6 +72,8 @@ interface EngineView {
      * @param onFinish A callback to inform that process of capturing a thumbnail has finished.
      */
     fun captureThumbnail(onFinish: (Bitmap?) -> Unit)
+
+    fun setVerticalClipping(current: Int, max: Int) = Unit
 }

 /**
diff --git a/components/feature/session/src/main/java/mozilla/components/feature/session/CoordinateScrollingFeature.kt b/components/feature/session/src/main/java/mozilla/components/feature/session/CoordinateScrollingFeature.kt
index 150d13e82..9ea64754f 100644
--- a/components/feature/session/src/main/java/mozilla/components/feature/session/CoordinateScrollingFeature.kt
+++ b/components/feature/session/src/main/java/mozilla/components/feature/session/CoordinateScrollingFeature.kt
@@ -34,6 +34,12 @@ class CoordinateScrollingFeature(
      */
     override fun start() {
         observeSelected()
+        val appBarLayout = view.parent as AppBarLayout
+        appBarLayout.addOnOffsetChangedListener (object: AppBarLayout.OnOffsetChangedListener {
+            override fun onOffsetChanged(appBar: AppBarLayout?, offset: Int) {
+                engineView.setVerticalClipping(appBarLayout.totalScrollRange + offset, appBarLayout.totalScrollRange);
+            }
+        })
     }

     override fun onLoadingStateChanged(session: Session, loading: Boolean) {

GV bug https://bugzilla.mozilla.org/show_bug.cgi?id=1516048 to adjust the viewport during bottom address bar transition has been fixed in GV build 2019-04-27.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

pocmo picture pocmo  路  3Comments

mcarare picture mcarare  路  5Comments

codrut-topliceanu picture codrut-topliceanu  路  3Comments

mitchhentges picture mitchhentges  路  5Comments

pocmo picture pocmo  路  3Comments