Fix fragment lifecyle in legal credit screen

WebView was being created everytime onCreateView was called
on LegalPreviewFragment. The Webiew was never destroyed which
would cause a leak.Fixed to create LegalPreviewFragment only once
for the activity.

Change-Id: I34361171192d3e262a08929c066443c09dbed8ef
diff --git a/src/com/android/browser/preferences/LegalPreviewActivity.java b/src/com/android/browser/preferences/LegalPreviewActivity.java
index eeaf558..4ca9d63 100644
--- a/src/com/android/browser/preferences/LegalPreviewActivity.java
+++ b/src/com/android/browser/preferences/LegalPreviewActivity.java
@@ -53,16 +53,22 @@
             bar.setTitle(R.string.swe_open_source_licenses);
             bar.setDisplayHomeAsUpEnabled(true);
         }
-        FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
-        mLegalPreviewFragment = new LegalPreviewFragment();
-        Bundle args = new Bundle();
-        args.putString(URL_INTENT_EXTRA, getIntent().getExtras()
+        if (savedInstanceState == null) {
+            FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
+            mLegalPreviewFragment = new LegalPreviewFragment();
+            Bundle args = new Bundle();
+            args.putString(URL_INTENT_EXTRA, getIntent().getExtras()
                             .getString(URL_INTENT_EXTRA));
-        mLegalPreviewFragment.setArguments(args);
-        fragmentTransaction.add(R.id.license_layout, mLegalPreviewFragment,
+            mLegalPreviewFragment.setArguments(args);
+            fragmentTransaction.add(R.id.license_layout, mLegalPreviewFragment,
                 "LegalPreviewFragmentTag");
-        fragmentTransaction.addToBackStack(null);
-        fragmentTransaction.commit();
+            fragmentTransaction.addToBackStack(null);
+            fragmentTransaction.commit();
+        } else  {
+            mLegalPreviewFragment =
+                (LegalPreviewFragment) getFragmentManager().findFragmentByTag(
+                    "LegalPreviewFragmentTag");
+        }
     }
 
     private boolean back() {
diff --git a/src/com/android/browser/preferences/LegalPreviewFragment.java b/src/com/android/browser/preferences/LegalPreviewFragment.java
index ec60e10..515236b 100644
--- a/src/com/android/browser/preferences/LegalPreviewFragment.java
+++ b/src/com/android/browser/preferences/LegalPreviewFragment.java
@@ -51,6 +51,7 @@
         super.onCreate(savedInstanceState);
         Bundle args = getArguments();
         mUrl = args.getString(LegalPreviewActivity.URL_INTENT_EXTRA);
+        mWebView = new WebView(getActivity());
     }
 
     @Override
@@ -61,16 +62,22 @@
         FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
                 FrameLayout.LayoutParams.MATCH_PARENT,
                 FrameLayout.LayoutParams.MATCH_PARENT);
-        mWebView = new WebView(getActivity());
         contentContainer.addView(mWebView.getView(), params);
         return contentContainer;
     }
 
     @Override
+    public void onDestroy() {
+        super.onDestroy();
+        mWebView.destroy();
+        mWebView = null;
+    }
+
+    @Override
     public void onActivityCreated(Bundle b) {
         super.onActivityCreated(b);
         if (mWebView == null) return;
-            mWebView.loadUrl(mUrl);
+        mWebView.loadUrl(mUrl);
     }
 
     public boolean onBackPressed() {