0-click NFC: check for private tab on UI thread.

A recent change to Webview broke our code - we're no longer
allowed to call isPrivateBrowsingEnabled() from a non-UI-thread.
Moved the code in an AsyncTask to address this.

Change-Id: I69a5ea539dc1578bfbacbc67c996e28870743870
diff --git a/src/com/android/browser/NfcHandler.java b/src/com/android/browser/NfcHandler.java
index bbac640..bc19950 100644
--- a/src/com/android/browser/NfcHandler.java
+++ b/src/com/android/browser/NfcHandler.java
@@ -20,6 +20,7 @@
 import android.nfc.NdefMessage;
 import android.nfc.NdefRecord;
 import android.nfc.NfcAdapter;
+import android.os.AsyncTask;
 
 /** This class implements sharing the URL of the currently
   * shown browser page over NFC. Sharing is only active
@@ -31,6 +32,37 @@
     private Activity mActivity;
     private Controller mController;
 
+    /** We need an async task to check whether the tab is private
+      * on the UI thread.
+      */
+    private class CreateMessageTask extends AsyncTask<Void, Void, NdefMessage> {
+        private boolean mIsPrivate = false;
+        private Tab mCurrentTab;
+
+        @Override
+        protected void onPreExecute() {
+            mCurrentTab = mController.getCurrentTab();
+            if ((mCurrentTab != null) && (mCurrentTab.getWebView() != null)) {
+                mIsPrivate = mCurrentTab.getWebView().isPrivateBrowsingEnabled();
+            }
+        }
+
+        @Override
+        protected NdefMessage doInBackground(Void... params) {
+            if ((mCurrentTab == null) || mIsPrivate) {
+                return null;
+            }
+            String currentUrl = mCurrentTab.getUrl();
+            if (currentUrl != null) {
+                NdefRecord record = NdefRecord.createUri(currentUrl);
+                NdefMessage msg = new NdefMessage(new NdefRecord[] { record });
+                return msg;
+            } else {
+                return null;
+            }
+        }
+    }
+
     public NfcHandler(Activity browser, Controller controller) {
         mActivity = browser;
         mController = controller;
@@ -51,17 +83,11 @@
 
     @Override
     public NdefMessage createMessage() {
-        Tab currentTab = mController.getCurrentTab();
-        if (currentTab == null) {
-            return null;
-        }
-        String currentUrl = currentTab.getUrl();
-        if (currentUrl != null && currentTab.getWebView() != null &&
-                    !currentTab.getWebView().isPrivateBrowsingEnabled()) {
-            NdefRecord record = NdefRecord.createUri(currentUrl);
-            NdefMessage msg = new NdefMessage(new NdefRecord[] { record });
-            return msg;
-        } else {
+        CreateMessageTask task = new CreateMessageTask();
+        task.execute();
+        try {
+            return task.get();
+        } catch (Exception e) {
             return null;
         }
     }