]> gitweb.stoutner.com Git - PrivacyBrowserAndroid.git/blobdiff - app/src/main/java/com/stoutner/privacybrowser/adapters/WebViewPagerAdapter.java
Fix a periodic crash while loading the SSL Certificate Error Dialog. https://redmine...
[PrivacyBrowserAndroid.git] / app / src / main / java / com / stoutner / privacybrowser / adapters / WebViewPagerAdapter.java
index 7c6aaf351cbac051bb3a36bc9c4883a8dd41a113..da8e6729a74700eacad960ed98df0720afb4565e 100644 (file)
@@ -89,13 +89,20 @@ public class WebViewPagerAdapter extends FragmentPagerAdapter {
             i++;
         }
 
+        // Set the position to be the last tab if it is not found.
+        // Sometimes there is a race condition in populating the webView fragments list when resuming Privacy Browser and displaying an SSL certificate error while loading a new intent.
+        // In that case, the last tab should be the one it is looking for.
+        if (position == -1) {
+            position = webViewFragmentsList.size() - 1;
+        }
+
         // Return the position.
         return position;
     }
 
-    public void addPage(int pageNumber, ViewPager webViewPager) {
+    public void addPage(int pageNumber, ViewPager webViewPager, String url) {
         // Add a new page.
-        webViewFragmentsList.add(WebViewTabFragment.createPage(pageNumber));
+        webViewFragmentsList.add(WebViewTabFragment.createPage(pageNumber, url));
 
         // Update the view pager.
         notifyDataSetChanged();
@@ -106,12 +113,15 @@ public class WebViewPagerAdapter extends FragmentPagerAdapter {
         }
     }
 
-    public void deletePage(int pageNumber) {
+    public boolean deletePage(int pageNumber, ViewPager webViewPager) {
         // Delete the page.
         webViewFragmentsList.remove(pageNumber);
 
         // Update the view pager.
         notifyDataSetChanged();
+
+        // Return true if the selected page number did not change after the delete.  This will cause the calling method to reset the current WebView to the new contents of this page number.
+        return (webViewPager.getCurrentItem() == pageNumber);
     }
 
     public WebViewTabFragment getPageFragment(int pageNumber) {