X-Git-Url: https://gitweb.stoutner.com/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fcom%2Fstoutner%2Fprivacybrowser%2Fviews%2FNestedScrollWebView.java;h=7ef26d6ed6d4981e0363f994624b80469d49766c;hb=f0393ca22075be3e5fe9199c7db87381256236fa;hp=ca93d6fb9df885af3a9c15e4f1720ba694bf98ce;hpb=ff636c77836983a078f33e60616204518dab61d1;p=PrivacyBrowserAndroid.git diff --git a/app/src/main/java/com/stoutner/privacybrowser/views/NestedScrollWebView.java b/app/src/main/java/com/stoutner/privacybrowser/views/NestedScrollWebView.java index ca93d6fb..7ef26d6e 100644 --- a/app/src/main/java/com/stoutner/privacybrowser/views/NestedScrollWebView.java +++ b/app/src/main/java/com/stoutner/privacybrowser/views/NestedScrollWebView.java @@ -27,14 +27,14 @@ import android.util.AttributeSet; import android.view.MotionEvent; import android.webkit.WebView; -import com.stoutner.privacybrowser.R; - import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import androidx.core.view.NestedScrollingChild2; import androidx.core.view.NestedScrollingChildHelper; import androidx.core.view.ViewCompat; +import com.stoutner.privacybrowser.R; + import java.util.ArrayList; import java.util.Date; @@ -59,6 +59,9 @@ public class NestedScrollWebView extends WebView implements NestedScrollingChild // Keep track of when the domain name changes so that domain settings can be reapplied. This should never be null. private String currentDomainName = ""; + // Track the status of first-party cookies. + private boolean acceptFirstPartyCookies; + // Track the resource requests. private ArrayList resourceRequests = new ArrayList<>(); private boolean easyListEnabled; @@ -100,6 +103,12 @@ public class NestedScrollWebView extends WebView implements NestedScrollingChild // The default or favorite icon. Bitmap favoriteOrDefaultIcon; + // Track night mode. + private boolean nightMode; + + // Track swipe to refresh. + private boolean swipeToRefresh; + // The nested scrolling child helper is used throughout the class. private NestedScrollingChildHelper nestedScrollingChildHelper; @@ -187,6 +196,18 @@ public class NestedScrollWebView extends WebView implements NestedScrollingChild } + // First-party cookies. + public void setAcceptFirstPartyCookies(boolean status) { + // Store the accept first-party cookies status. + acceptFirstPartyCookies = status; + } + + public boolean getAcceptFirstPartyCookies() { + // Return the accept first-party cookies status. + return acceptFirstPartyCookies; + } + + // Resource requests. public void addResourceRequest(String[] resourceRequest) { // Add the resource request to the list. @@ -519,6 +540,30 @@ public class NestedScrollWebView extends WebView implements NestedScrollingChild } + // Night mode. + public void setNightMode(boolean status) { + // Store the night mode status. + nightMode = status; + } + + public boolean getNightMode() { + // Return the night mode status. + return nightMode; + } + + + // Swipe to refresh. + public void setSwipeToRefresh(boolean status) { + // Store the swipe to refresh status. + swipeToRefresh = status; + } + + public boolean getSwipeToRefresh() { + // Return the swipe to refresh status. + return swipeToRefresh; + } + + @Override public boolean onTouchEvent(MotionEvent motionEvent) { @@ -560,12 +605,13 @@ public class NestedScrollWebView extends WebView implements NestedScrollingChild // Dispatch the nested pre-school. This scrolls the app bar if it needs it. `offsetInWindow` will be returned with an updated value. if (dispatchNestedPreScroll(0, preScrollDeltaY, consumedScroll, offsetInWindow)) { // Update the scroll delta Y if some of it was consumed. + // There is currently a bug in Android where if scrolling up at a certain slow speed the input can lock the pre scroll and continue to consume it after the app bar is fully displayed. scrollDeltaY = preScrollDeltaY - consumedScroll[1]; } // Check to see if the WebView is at the top and and the scroll action is downward. if ((webViewYPosition == 0) && (scrollDeltaY < 0)) { // Swipe to refresh is being engaged. - // Stop the nested scroll so that swipe to refresh has complete control. + // Stop the nested scroll so that swipe to refresh has complete control. This way releasing the scroll to refresh circle doesn't scroll the WebView at the same time. stopNestedScroll(); } else { // Swipe to refresh is not being engaged. // Start the nested scroll so that the app bar can scroll off the screen.