Removed dependency on framework browser provider from browser

Brought in Browser Provider class locally into platformsupport
and modified all calls into provider to call into this local
class.

Change-Id: I3c471dacf920fd30403590ba23384b7abbf7f3fd
diff --git a/src/com/android/browser/AddBookmarkPage.java b/src/com/android/browser/AddBookmarkPage.java
index a81b1ba..10d02e5 100644
--- a/src/com/android/browser/AddBookmarkPage.java
+++ b/src/com/android/browser/AddBookmarkPage.java
@@ -38,7 +38,6 @@
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
-import android.provider.Browser;
 import android.text.TextUtils;
 import android.util.AttributeSet;
 import android.view.KeyEvent;
diff --git a/src/com/android/browser/BookmarkUtils.java b/src/com/android/browser/BookmarkUtils.java
index b754a62..0bce3c2 100644
--- a/src/com/android/browser/BookmarkUtils.java
+++ b/src/com/android/browser/BookmarkUtils.java
@@ -38,9 +38,9 @@
 import android.graphics.drawable.PaintDrawable;
 import android.net.Uri;
 import android.os.Message;
-import android.provider.Browser;
 
 import com.android.browser.R;
+import com.android.browser.platformsupport.Browser;
 import com.android.browser.platformsupport.BrowserContract;
 import com.android.browser.platformsupport.BrowserContract.Bookmarks;
 
diff --git a/src/com/android/browser/BrowserHistoryPage.java b/src/com/android/browser/BrowserHistoryPage.java
index ee7aebd..fa25aca 100644
--- a/src/com/android/browser/BrowserHistoryPage.java
+++ b/src/com/android/browser/BrowserHistoryPage.java
@@ -37,7 +37,6 @@
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
 import android.os.Bundle;
-import android.provider.Browser;
 import android.view.ContextMenu;
 import android.view.ContextMenu.ContextMenuInfo;
 import android.view.LayoutInflater;
@@ -60,6 +59,7 @@
 import android.widget.Toast;
 
 import com.android.browser.R;
+import com.android.browser.platformsupport.Browser;
 import com.android.browser.platformsupport.BrowserContract;
 import com.android.browser.platformsupport.BrowserContract.Combined;
 import com.android.browser.reflect.ReflectHelper;
@@ -415,14 +415,8 @@
                 }
                 return true;
             case R.id.share_link_context_menu_id:
-                Object[] params  = {activity,
-                            url,
-                            activity.getText(R.string.choosertitle_sharevia).toString()};
-                Class[] type = new Class[] { android.content.Context.class,
-                                             String.class,
-                                             String.class};
-                ReflectHelper.invokeMethod("android.provider.Browser","sendString",
-                                           type, params);
+                Browser.sendString(activity, url,
+                            activity.getText(R.string.choosertitle_sharevia).toString());
                 return true;
             case R.id.copy_url_context_menu_id:
                 copy(url);
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index 74765d5..77ee04d 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -25,7 +25,6 @@
 import android.net.NetworkInfo;
 import android.os.Build;
 import android.preference.PreferenceManager;
-import android.provider.Browser;
 import android.provider.Settings;
 import android.text.TextUtils;
 import android.util.DisplayMetrics;
@@ -35,8 +34,8 @@
 
 import com.android.browser.R;
 import com.android.browser.homepages.HomeProvider;
+import com.android.browser.platformsupport.Browser;
 import com.android.browser.provider.BrowserProvider;
-import com.android.browser.reflect.ReflectHelper;
 import com.android.browser.search.SearchEngine;
 import com.android.browser.search.SearchEngines;
 
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index 27b8ce6..a5151dd 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -57,7 +57,6 @@
 import android.os.PowerManager;
 import android.os.PowerManager.WakeLock;
 import android.preference.PreferenceActivity;
-import android.provider.Browser;
 import android.provider.ContactsContract;
 import android.provider.ContactsContract.Intents.Insert;
 import android.provider.Settings;
@@ -94,6 +93,7 @@
 import com.android.browser.UI.ComboViews;
 import com.android.browser.mynavigation.AddMyNavigationPage;
 import com.android.browser.mynavigation.MyNavigationUtil;
+import com.android.browser.platformsupport.Browser;
 import com.android.browser.platformsupport.BrowserContract;
 import com.android.browser.platformsupport.WebAddress;
 import com.android.browser.platformsupport.BrowserContract.Images;
@@ -1121,11 +1121,7 @@
                 new AsyncTask<Void, Void, String[]>() {
             @Override
             public String[] doInBackground(Void... unused) {
-                Object[] params  = {mActivity.getContentResolver()};
-                Class[] type = new Class[] {ContentResolver.class};
-                return (String[])ReflectHelper.invokeMethod(
-                    "android.provider.Browser","getVisitedHistory",
-                    type, params);
+                return (String[]) Browser.getVisitedHistory(mActivity.getContentResolver());
             }
             @Override
             public void onPostExecute(String[] result) {
diff --git a/src/com/android/browser/DataController.java b/src/com/android/browser/DataController.java
index eb47080..936ef9c 100644
--- a/src/com/android/browser/DataController.java
+++ b/src/com/android/browser/DataController.java
@@ -29,6 +29,7 @@
 import android.os.Message;
 import android.util.Log;
 
+import com.android.browser.platformsupport.Browser;
 import com.android.browser.platformsupport.BrowserContract;
 import com.android.browser.platformsupport.BrowserContract.History;
 import com.android.browser.provider.BrowserProvider2.Thumbnails;
@@ -253,7 +254,7 @@
                     cr.update(ContentUris.withAppendedId(History.CONTENT_URI, c.getLong(0)),
                             values, null, null);
                 } else {
-                    android.provider.Browser.truncateHistory(cr);
+                    Browser.truncateHistory(cr);
                     ContentValues values = new ContentValues();
                     values.put(History.URL, url);
                     values.put(History.VISITS, 1);
diff --git a/src/com/android/browser/HistoryItem.java b/src/com/android/browser/HistoryItem.java
index ceba2cb..20efcb1 100644
--- a/src/com/android/browser/HistoryItem.java
+++ b/src/com/android/browser/HistoryItem.java
@@ -14,17 +14,15 @@
  * limitations under the License.
  */
 
- 
 package com.android.browser;
 
-import com.android.browser.R;
-
 import android.content.Context;
-import android.provider.Browser;
 import android.view.View;
 import android.widget.CompoundButton;
 import android.widget.CompoundButton.OnCheckedChangeListener;
 
+import com.android.browser.R;
+import com.android.browser.platformsupport.Browser;
 /**
  *  Layout representing a history item in the classic history viewer.
  */
diff --git a/src/com/android/browser/IntentHandler.java b/src/com/android/browser/IntentHandler.java
index f829ae1..0e255e2 100644
--- a/src/com/android/browser/IntentHandler.java
+++ b/src/com/android/browser/IntentHandler.java
@@ -26,12 +26,12 @@
 import android.nfc.NfcAdapter;
 import android.os.AsyncTask;
 import android.os.Bundle;
-import android.provider.Browser;
 import android.provider.MediaStore;
 import android.text.TextUtils;
 import android.util.Patterns;
 
 import com.android.browser.UI.ComboViews;
+import com.android.browser.platformsupport.Browser;
 import com.android.browser.search.SearchEngine;
 
 import java.util.HashMap;
diff --git a/src/com/android/browser/PreloadRequestReceiver.java b/src/com/android/browser/PreloadRequestReceiver.java
index c654037..b75da0c 100644
--- a/src/com/android/browser/PreloadRequestReceiver.java
+++ b/src/com/android/browser/PreloadRequestReceiver.java
@@ -21,9 +21,10 @@
 import android.net.ConnectivityManager;
 import android.net.NetworkInfo;
 import android.os.Bundle;
-import android.provider.Browser;
 import android.util.Log;
 
+import com.android.browser.platformsupport.Browser;
+
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
diff --git a/src/com/android/browser/UrlHandler.java b/src/com/android/browser/UrlHandler.java
index 37480af..c841d46 100755
--- a/src/com/android/browser/UrlHandler.java
+++ b/src/com/android/browser/UrlHandler.java
@@ -23,11 +23,11 @@
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.net.Uri;
-import android.provider.Browser;
 import android.util.Log;
 import android.widget.Toast;
 
 import com.android.browser.R;
+import com.android.browser.platformsupport.Browser;
 
 import java.net.URISyntaxException;
 import java.util.List;
diff --git a/src/com/android/browser/platformsupport/BookmarkColumns.java b/src/com/android/browser/platformsupport/BookmarkColumns.java
deleted file mode 100644
index c1d9db8..0000000
--- a/src/com/android/browser/platformsupport/BookmarkColumns.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (c) 2013 The Linux Foundation. All rights reserved.
- * Not a contribution.
- *
- * Copyright (C) 2006 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.platformsupport;
-
-public class BookmarkColumns {
-    /**
-     * The URL of the bookmark or history item.
-     * <p>Type: TEXT (URL)</p>
-     */
-    public static final String URL = "url";
-
-    /**
-     * The number of time the item has been visited.
-     * <p>Type: NUMBER</p>
-     */
-    public static final String VISITS = "visits";
-
-    /**
-     * The date the item was last visited, in milliseconds since the epoch.
-     * <p>Type: NUMBER (date in milliseconds since January 1, 1970)</p>
-     */
-    public static final String DATE = "date";
-
-    /**
-     * Flag indicating that an item is a bookmark. A value of 1 indicates a bookmark, a value
-     * of 0 indicates a history item.
-     * <p>Type: INTEGER (boolean)</p>
-     */
-    public static final String BOOKMARK = "bookmark";
-
-    /**
-     * The user visible title of the bookmark or history item.
-     * <p>Type: TEXT</p>
-     */
-    public static final String TITLE = "title";
-
-    /**
-     * The date the item created, in milliseconds since the epoch.
-     * <p>Type: NUMBER (date in milliseconds since January 1, 1970)</p>
-     */
-    public static final String CREATED = "created";
-
-    /**
-     * The favicon of the bookmark. Must decode via {@link BitmapFactory#decodeByteArray}.
-     * <p>Type: BLOB (image)</p>
-     */
-    public static final String FAVICON = "favicon";
-
-    /**
-     * @hide
-     */
-    public static final String THUMBNAIL = "thumbnail";
-
-    /**
-     * @hide
-     */
-    public static final String TOUCH_ICON = "touch_icon";
-
-    /**
-     * @hide
-     */
-    public static final String USER_ENTERED = "user_entered";
-}
diff --git a/src/com/android/browser/platformsupport/Browser.java b/src/com/android/browser/platformsupport/Browser.java
index a34d9c3..a5346eb 100644
--- a/src/com/android/browser/platformsupport/Browser.java
+++ b/src/com/android/browser/platformsupport/Browser.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.provider;
+package com.android.browser.platformsupport;
 
 import android.content.ContentResolver;
 import android.content.ContentUris;
@@ -25,13 +25,15 @@
 import android.database.DatabaseUtils;
 import android.graphics.BitmapFactory;
 import android.net.Uri;
-import android.provider.BrowserContract.Bookmarks;
-import android.provider.BrowserContract.Combined;
-import android.provider.BrowserContract.History;
-import android.provider.BrowserContract.Searches;
 import android.util.Log;
 import android.webkit.WebIconDatabase;
 
+import com.android.browser.R;
+import com.android.browser.platformsupport.BrowserContract.Bookmarks;
+import com.android.browser.platformsupport.BrowserContract.Combined;
+import com.android.browser.platformsupport.BrowserContract.History;
+import com.android.browser.platformsupport.BrowserContract.Searches;
+
 public class Browser {
     private static final String LOGTAG = "browser";
 
@@ -195,7 +197,7 @@
      * @param string the string to send
      */
     public static final void sendString(Context context, String string) {
-        sendString(context, string, context.getString(com.android.internal.R.string.sendText));
+        sendString(context, string, context.getString(R.string.sendText));
     }
 
     /**
@@ -554,7 +556,7 @@
             Log.e(LOGTAG, "clearSearches", e);
         }
     }
-    
+
     /**
      *  Request all icons from the database.  This call must either be called
      *  in the main thread or have had Looper.prepare() invoked in the calling
@@ -568,14 +570,39 @@
      */
     public static final void requestAllIcons(ContentResolver cr, String where,
             WebIconDatabase.IconListener listener) {
-        WebIconDatabase.getInstance().bulkRequestIconForPageUrl(cr, where, listener);
+        try {
+            final Cursor c = cr.query(BOOKMARKS_URI, HISTORY_PROJECTION,
+                                      where, null, null);
+            if (c.moveToFirst()) {
+                final WebIconDatabase db = WebIconDatabase.getInstance();
+                do {
+                    db.requestIconForPageUrl(c.getString(HISTORY_PROJECTION_URL_INDEX),
+                                             listener);
+                } while (c.moveToNext());
+            }
+            c.deactivate();
+        } catch (IllegalStateException e) {
+            Log.e(LOGTAG, "requestAllIcons", e);
+        }
     }
 
     /**
      * Column definitions for the mixed bookmark and history items available
      * at {@link #BOOKMARKS_URI}.
      */
-    public static class BookmarkColumns implements BaseColumns {
+    public static class BookmarkColumns{
+        /**
+         * The unique ID for a row.
+         * <P>Type: INTEGER (long)</P>
+         */
+         public static final String _ID = "_id";
+
+         /**
+          * The count of rows in a directory.
+          * <P>Type: INTEGER</P>
+          */
+         public static final String _COUNT = "_count";
+
         /**
          * The URL of the bookmark or history item.
          * <p>Type: TEXT (URL)</p>
@@ -638,7 +665,19 @@
     /**
      * Column definitions for the search history table, available at {@link #SEARCHES_URI}.
      */
-    public static class SearchColumns implements BaseColumns {
+    public static class SearchColumns{
+        /**
+         * The unique ID for a row.
+         * <P>Type: INTEGER (long)</P>
+         */
+         public static final String _ID = "_id";
+
+         /**
+          * The count of rows in a directory.
+          * <P>Type: INTEGER</P>
+          */
+         public static final String _COUNT = "_count";
+
         /**
          * @deprecated Not used.
          */
diff --git a/src/com/android/browser/provider/BrowserProvider.java b/src/com/android/browser/provider/BrowserProvider.java
index 744032c..0d27d8d 100644
--- a/src/com/android/browser/provider/BrowserProvider.java
+++ b/src/com/android/browser/provider/BrowserProvider.java
@@ -36,14 +36,14 @@
 import android.net.Uri;
 import android.os.Process;
 import android.preference.PreferenceManager;
-import android.provider.Browser;
-import android.provider.Browser.BookmarkColumns;
 import android.text.TextUtils;
 import android.util.Log;
 import android.util.Patterns;
 
 import com.android.browser.BrowserSettings;
 import com.android.browser.R;
+import com.android.browser.platformsupport.Browser;
+import com.android.browser.platformsupport.Browser.BookmarkColumns;
 import com.android.browser.search.SearchEngine;
 
 import java.io.File;
diff --git a/src/com/android/browser/provider/BrowserProvider2.java b/src/com/android/browser/provider/BrowserProvider2.java
index aa77c83..0535e59 100644
--- a/src/com/android/browser/provider/BrowserProvider2.java
+++ b/src/com/android/browser/provider/BrowserProvider2.java
@@ -26,7 +26,6 @@
 import android.content.Intent;
 import android.content.UriMatcher;
 import android.content.res.Resources;
-import android.content.res.TypedArray;
 import android.database.AbstractCursor;
 import android.database.ContentObserver;
 import android.database.Cursor;
@@ -37,7 +36,6 @@
 import android.database.sqlite.SQLiteQueryBuilder;
 import android.net.Uri;
 import android.provider.BaseColumns;
-import android.provider.Browser;
 import android.provider.ContactsContract.RawContacts;
 import android.provider.SyncStateContract;
 import android.text.TextUtils;
@@ -46,9 +44,9 @@
 import com.android.browser.BrowserSettings;
 import com.android.browser.R;
 import com.android.browser.UrlUtils;
-import com.android.browser.platformsupport.BookmarkColumns;
+import com.android.browser.platformsupport.Browser;
+import com.android.browser.platformsupport.Browser.BookmarkColumns;
 import com.android.browser.platformsupport.BrowserContract;
-import com.android.browser.platformsupport.SyncStateContentProviderHelper;
 import com.android.browser.platformsupport.BrowserContract.Accounts;
 import com.android.browser.platformsupport.BrowserContract.Bookmarks;
 import com.android.browser.platformsupport.BrowserContract.ChromeSyncColumns;
@@ -58,6 +56,7 @@
 import com.android.browser.platformsupport.BrowserContract.Searches;
 import com.android.browser.platformsupport.BrowserContract.Settings;
 import com.android.browser.platformsupport.BrowserContract.SyncState;
+import com.android.browser.platformsupport.SyncStateContentProviderHelper;
 import com.android.browser.widget.BookmarkThumbnailWidgetProvider;
 import com.google.common.annotations.VisibleForTesting;
 
diff --git a/src/com/android/browser/search/DefaultSearchEngine.java b/src/com/android/browser/search/DefaultSearchEngine.java
index 7613377..41bd238 100644
--- a/src/com/android/browser/search/DefaultSearchEngine.java
+++ b/src/com/android/browser/search/DefaultSearchEngine.java
@@ -26,10 +26,10 @@
 import android.content.pm.PackageManager;
 import android.database.Cursor;
 import android.os.Bundle;
-import android.provider.Browser;
 import android.text.TextUtils;
 import android.util.Log;
 
+import com.android.browser.platformsupport.Browser;
 import com.android.browser.reflect.ReflectHelper;
 
 public class DefaultSearchEngine implements SearchEngine {
diff --git a/src/com/android/browser/search/OpenSearchSearchEngine.java b/src/com/android/browser/search/OpenSearchSearchEngine.java
index e600aa9..2cd4670 100644
--- a/src/com/android/browser/search/OpenSearchSearchEngine.java
+++ b/src/com/android/browser/search/OpenSearchSearchEngine.java
@@ -18,7 +18,6 @@
 import com.android.browser.R;
 
 import org.apache.http.HttpResponse;
-import org.apache.http.client.HttpClient;
 import org.apache.http.client.methods.HttpGet;
 import org.apache.http.params.HttpParams;
 import org.apache.http.util.EntityUtils;
@@ -35,10 +34,11 @@
 import android.net.Uri;
 import android.net.http.AndroidHttpClient;
 import android.os.Bundle;
-import android.provider.Browser;
 import android.text.TextUtils;
 import android.util.Log;
 
+import com.android.browser.platformsupport.Browser;
+
 import java.io.IOException;
 
 /**