Merge "Fix WebViewFragment to avoid detroying the WebView too early"
diff --git a/core/java/android/webkit/WebViewFragment.java b/core/java/android/webkit/WebViewFragment.java
index 466f174..852878b 100644
--- a/core/java/android/webkit/WebViewFragment.java
+++ b/core/java/android/webkit/WebViewFragment.java
@@ -30,6 +30,7 @@
  */
 public class WebViewFragment extends Fragment {
     private WebView mWebView;
+    private boolean mIsWebViewAvailable;
 
     public WebViewFragment() {
     }
@@ -40,7 +41,11 @@
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container,
             Bundle savedInstanceState) {
+        if (mWebView != null) {
+            mWebView.destroy();
+        }
         mWebView = new WebView(getActivity());
+        mIsWebViewAvailable = true;
         return mWebView;
     }
 
@@ -63,19 +68,31 @@
     }
 
     /**
-     * Called when the view has been detached from the fragment. Destroys the WebView.
+     * Called when the WebView has been detached from the fragment.
+     * The WebView is no longer available after this time.
      */
     @Override
     public void onDestroyView() {
-        mWebView.destroy();
-        mWebView = null;
+        mIsWebViewAvailable = false;
         super.onDestroyView();
     }
 
     /**
+     * Called when the fragment is no longer in use. Destroys the internal state of the WebView.
+     */
+    @Override
+    public void onDestroy() {
+        if (mWebView != null) {
+            mWebView.destroy();
+            mWebView = null;
+        }
+        super.onDestroy();
+    }
+
+    /**
      * Gets the WebView.
      */
     public WebView getWebView() {
-        return mWebView;
+        return mIsWebViewAvailable ? mWebView : null;
     }
 }