Change SWE app properties back to stock Android

- Changed project package name from com.android.swe.browser
back to com.android.browser along with code references to
old package name.
- Changes to AndroidManifest making it conform closer to stock
browser manifest.
- Changed app and apk name back to Browser.

Change-Id: I778ee1d1197bd50bd4a4850eef6d1d7f4ef0ad0b
diff --git a/src/com/android/browser/NfcHandler.java b/src/com/android/browser/NfcHandler.java
new file mode 100644
index 0000000..0dd8576
--- /dev/null
+++ b/src/com/android/browser/NfcHandler.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.browser;
+
+import android.app.Activity;
+import android.nfc.NdefMessage;
+import android.nfc.NdefRecord;
+import android.nfc.NfcAdapter;
+import android.nfc.NfcEvent;
+import android.os.Handler;
+import android.os.Message;
+import android.util.Log;
+
+import java.util.concurrent.CountDownLatch;
+
+/** This class implements sharing the URL of the currently
+  * shown browser page over NFC. Sharing is only active
+  * when the activity is in the foreground and resumed.
+  * Incognito tabs will not be shared over NFC.
+  */
+public class NfcHandler implements NfcAdapter.CreateNdefMessageCallback {
+    static final String TAG = "BrowserNfcHandler";
+    static final int GET_PRIVATE_BROWSING_STATE_MSG = 100;
+
+    final Controller mController;
+
+    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
+        }
+        NfcHandler handler = null;
+        if (controller != null) {
+            handler = new NfcHandler(controller);
+        }
+
+        adapter.setNdefPushMessageCallback(handler, activity);
+    }
+
+    public static void unregister(Activity activity) {
+        // Passing a null controller causes us to disable
+        // the callback and release the ref to out activity.
+        register(activity, null);
+    }
+
+    public NfcHandler(Controller controller) {
+        mController = controller;
+    }
+
+    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();
+            }
+        }
+    };
+
+    @Override
+    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
+            // a message and wait.
+            mPrivateBrowsingSignal = new CountDownLatch(1);
+            mHandler.sendMessage(mHandler.obtainMessage(GET_PRIVATE_BROWSING_STATE_MSG));
+            try {
+                mPrivateBrowsingSignal.await();
+            } catch (InterruptedException e) {
+                return null;
+            }
+        }
+
+        if ((mCurrentTab == null) || mIsPrivate) {
+            return null;
+        }
+
+        String currentUrl = mCurrentTab.getUrl();
+        if (currentUrl != null) {
+            try {
+                return new NdefMessage(NdefRecord.createUri(currentUrl));
+            } catch (IllegalArgumentException e) {
+                Log.e(TAG, "IllegalArgumentException creating URI NdefRecord", e);
+                return null;
+            }
+        } else {
+            return null;
+        }
+    }
+}