Updates for NDEF push API change.

Change-Id: I2390665d59f6b3868b5a3a27bfc38ea4c9cdf0d4
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() {
-    }
 }