Updates for NDEF push API change.

Change-Id: I2390665d59f6b3868b5a3a27bfc38ea4c9cdf0d4
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index 7192f3f..92cb743 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -157,7 +157,6 @@
     private IntentHandler mIntentHandler;
     private PageDialogsHandler mPageDialogsHandler;
     private NetworkStateHandler mNetworkHandler;
-    private NfcHandler mNfcHandler;
 
     private Message mAutoFillSetupMessage;
 
@@ -228,7 +227,6 @@
         mUrlHandler = new UrlHandler(this);
         mIntentHandler = new IntentHandler(mActivity, this);
         mPageDialogsHandler = new PageDialogsHandler(mActivity, this);
-        mNfcHandler = new NfcHandler(mActivity, this);
 
         startHandler();
         mBookmarksObserver = new ContentObserver(mHandler) {
@@ -255,6 +253,8 @@
     }
 
     void start(final Bundle icicle, final Intent intent) {
+        NfcHandler.register(mActivity, this);
+
         boolean noCrashRecovery = intent.getBooleanExtra(NO_CRASH_RECOVERY, false);
         if (icicle != null || noCrashRecovery) {
             doStart(icicle, intent);
@@ -632,7 +632,6 @@
         }
         mUi.onPause();
         mNetworkHandler.onPause();
-        mNfcHandler.onPause();
 
         WebView.disablePlatformNotifications();
     }
@@ -667,7 +666,6 @@
 
         mUi.onResume();
         mNetworkHandler.onResume();
-        mNfcHandler.onResume();
         WebView.enablePlatformNotifications();
     }
 
diff --git a/src/com/android/browser/NfcHandler.java b/src/com/android/browser/NfcHandler.java
index a8e11d3..6147aea 100644
--- a/src/com/android/browser/NfcHandler.java
+++ b/src/com/android/browser/NfcHandler.java
@@ -20,7 +20,7 @@
 import android.nfc.NdefMessage;
 import android.nfc.NdefRecord;
 import android.nfc.NfcAdapter;
-import android.os.AsyncTask;
+import android.nfc.NfcEvent;
 import android.os.Handler;
 import android.os.Message;
 
@@ -31,46 +31,39 @@
   * when the activity is in the foreground and resumed.
   * Incognito tabs will not be shared over NFC.
   */
-public class NfcHandler implements NfcAdapter.NdefPushCallback {
-    private NfcAdapter mNfcAdapter;
-    private Activity mActivity;
-    private Controller mController;
-    private Handler mHandler;
-    private Tab mCurrentTab;
-    private boolean mIsPrivate;
-    private CountDownLatch mPrivateBrowsingSignal;
+public class NfcHandler implements NfcAdapter.CreateNdefMessageCallback {
+    static final int GET_PRIVATE_BROWSING_STATE_MSG = 100;
 
-    private static final int GET_PRIVATE_BROWSING_STATE_MSG = 100;
+    final Controller mController;
 
-    public NfcHandler(Activity browser, Controller controller) {
-        mActivity = browser;
+    Tab mCurrentTab;
+    boolean mIsPrivate;
+    CountDownLatch mPrivateBrowsingSignal;
+
+    public static void register(Activity activity, Controller controller) {
+        NfcAdapter adapter = NfcAdapter.getDefaultAdapter(activity.getApplicationContext());
+        if (adapter == null) {
+            return;  // NFC not available on this device
+        }
+        adapter.setNdefPushMessageCallback(new NfcHandler(controller), activity);
+    }
+
+    public NfcHandler(Controller controller) {
         mController = controller;
-        mNfcAdapter = NfcAdapter.getDefaultAdapter(mActivity);
-        mHandler = new Handler() {
-            @Override
-            public void handleMessage(Message msg) {
-                if (msg.what == GET_PRIVATE_BROWSING_STATE_MSG) {
-                    mIsPrivate = mCurrentTab.getWebView().isPrivateBrowsingEnabled();
-                    mPrivateBrowsingSignal.countDown();
-                }
+    }
+
+    final Handler mHandler = new Handler() {
+        @Override
+        public void handleMessage(Message msg) {
+            if (msg.what == GET_PRIVATE_BROWSING_STATE_MSG) {
+                mIsPrivate = mCurrentTab.getWebView().isPrivateBrowsingEnabled();
+                mPrivateBrowsingSignal.countDown();
             }
-        };
-    }
-
-    void onPause() {
-        if (mNfcAdapter != null) {
-            mNfcAdapter.disableForegroundNdefPush(mActivity);
         }
-    }
-
-    void onResume() {
-        if (mNfcAdapter != null) {
-            mNfcAdapter.enableForegroundNdefPush(mActivity, this);
-        }
-    }
+    };
 
     @Override
-    public NdefMessage createMessage() {
+    public NdefMessage createNdefMessage(NfcEvent event) {
         mCurrentTab = mController.getCurrentTab();
         if ((mCurrentTab != null) && (mCurrentTab.getWebView() != null)) {
             // We can only read the WebView state on the UI thread, so post
@@ -97,8 +90,4 @@
             return null;
         }
     }
-
-    @Override
-    public void onMessagePushed() {
-    }
 }