]> gitweb.stoutner.com Git - PrivacyBrowserAndroid.git/blobdiff - app/src/main/java/com/stoutner/privacybrowser/adapters/WebViewPagerAdapter.java
Make the context menu Open in New Tab load the new tab in the background. https...
[PrivacyBrowserAndroid.git] / app / src / main / java / com / stoutner / privacybrowser / adapters / WebViewPagerAdapter.java
index 7c6aaf351cbac051bb3a36bc9c4883a8dd41a113..5947df4466ec147802ec0762f8b66ec9eba52bcc 100644 (file)
@@ -89,29 +89,39 @@ 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, boolean moveToTab) {
         // Add a new page.
-        webViewFragmentsList.add(WebViewTabFragment.createPage(pageNumber));
+        webViewFragmentsList.add(WebViewTabFragment.createPage(pageNumber, url));
 
         // Update the view pager.
         notifyDataSetChanged();
 
         // Move to the new page if it isn't the first one.
-        if (pageNumber > 0) {
+        if (pageNumber > 0 && moveToTab) {
             webViewPager.setCurrentItem(pageNumber);
         }
     }
 
-    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) {