Remove the unused BookmarkWidget

Change-Id: I02655f4c5f7afb1df4b1ddd7f5e82cabe1093461
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 0a69fde..a3d54c4 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -198,15 +198,6 @@
                   android:configChanges="orientation|keyboardHidden" android:windowSoftInputMode="stateHidden">
         </activity>
 
-        <!--receiver android:name=".widget.BookmarkWidgetProvider" android:label="@string/bookmarks">
-            <intent-filter>
-                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
-            </intent-filter>
-            <meta-data android:name="android.appwidget.provider" android:resource="@xml/bookmarkwidget"/>
-        </receiver>
-
-        <service android:name=".widget.BookmarkWidgetService" /-->
-
         <receiver
             android:name=".widget.BookmarkStackWidgetProvider"
             android:label="@string/bookmarks">
diff --git a/src/com/android/browser/widget/BookmarkWidgetProvider.java b/src/com/android/browser/widget/BookmarkWidgetProvider.java
deleted file mode 100644
index 62b48c0..0000000
--- a/src/com/android/browser/widget/BookmarkWidgetProvider.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2010 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.widget;
-
-import android.app.PendingIntent;
-import android.appwidget.AppWidgetManager;
-import android.appwidget.AppWidgetProvider;
-import android.content.Context;
-import android.content.Intent;
-import android.util.Log;
-
-/**
- * Widget that shows a preview of the user's bookmarks.
- */
-public class BookmarkWidgetProvider extends AppWidgetProvider {
-
-    static final String TAG = "BookmarkWidgetProvider";
-
-    @Override
-    public void onUpdate(Context context, AppWidgetManager mngr, int[] ids) {
-        context.startService(new Intent(BookmarkWidgetService.UPDATE, null,
-                    context, BookmarkWidgetService.class));
-    }
-
-    @Override
-    public void onEnabled(Context context) {
-        context.startService(new Intent(context, BookmarkWidgetService.class));
-    }
-
-    @Override
-    public void onDisabled(Context context) {
-        context.stopService(new Intent(context, BookmarkWidgetService.class));
-    }
-}
-
diff --git a/src/com/android/browser/widget/BookmarkWidgetService.java b/src/com/android/browser/widget/BookmarkWidgetService.java
deleted file mode 100644
index 1fd9163..0000000
--- a/src/com/android/browser/widget/BookmarkWidgetService.java
+++ /dev/null
@@ -1,385 +0,0 @@
-/*
- * Copyright (C) 2010 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.widget;
-
-import android.app.PendingIntent;
-import android.app.Service;
-import android.appwidget.AppWidgetManager;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.content.ServiceConnection;
-import android.database.Cursor;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.os.Handler;
-import android.os.IBinder;
-import android.os.Message;
-import android.os.ParcelFileDescriptor;
-import android.provider.Browser;
-import android.provider.Browser.BookmarkColumns;
-import android.service.urlrenderer.UrlRenderer;
-import android.service.urlrenderer.UrlRendererService;
-import android.util.Log;
-import android.view.View;
-import android.widget.RemoteViews;
-
-import com.android.browser.R;
-
-import java.io.InputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-
-public class BookmarkWidgetService extends Service
-        implements UrlRenderer.Callback {
-
-    private static final String TAG = "BookmarkWidgetService";
-
-    /** Force the bookmarks to be re-renderer. */
-    public static final String UPDATE = "com.android.browser.widget.UPDATE";
-
-    /** Change the widget to the next bookmark. */
-    private static final String NEXT = "com.android.browser.widget.NEXT";
-
-    /** Change the widget to the previous bookmark. */
-    private static final String PREV = "com.android.browser.widget.PREV";
-
-    /** Id of the current item displayed in the widget. */
-    private static final String EXTRA_ID =
-            "com.android.browser.widget.extra.ID";
-
-    // XXX: Remove these magic numbers once the dimensions of the widget can be
-    // queried.
-    private static final int WIDTH = 306;
-    private static final int HEIGHT = 386;
-
-    // Limit the number of connection attempts.
-    private static final int MAX_SERVICE_RETRY_COUNT = 5;
-
-    // No id specified.
-    private static final int NO_ID = -1;
-
-    private static final int MSG_UPDATE = 0;
-    private final Handler mHandler = new Handler() {
-        @Override
-        public void handleMessage(Message msg) {
-            switch (msg.what) {
-                case MSG_UPDATE:
-                    if (mRenderer != null) {
-                        queryCursorAndRender();
-                    } else {
-                        if (++mServiceRetryCount <= MAX_SERVICE_RETRY_COUNT) {
-                            // Service is not connected, try again in a second.
-                            mHandler.sendEmptyMessageDelayed(MSG_UPDATE, 1000);
-                        }
-                    }
-                    break;
-                default:
-                    break;
-            }
-        }
-    };
-
-    private final ServiceConnection mConnection = new ServiceConnection() {
-        public void onServiceConnected(ComponentName className,
-                IBinder service) {
-            mRenderer = new UrlRenderer(service);
-        }
-
-        public void onServiceDisconnected(ComponentName className) {
-            mRenderer = null;
-        }
-    };
-
-    // Id -> information map storing db ids and their result.
-    private final HashMap<Integer, RenderResult> mIdsToResults =
-            new HashMap<Integer, RenderResult>();
-
-    // List of ids in order
-    private final ArrayList<Integer> mIdList = new ArrayList<Integer>();
-
-    // Map of urls to ids for when a url is complete.
-    private final HashMap<String, Integer> mUrlsToIds =
-            new HashMap<String, Integer>();
-
-    // The current id used by the widget during an update.
-    private int mCurrentId = NO_ID;
-    // Class that contacts the service on the phone to render bookmarks.
-    private UrlRenderer mRenderer;
-    // Number of service retries. Stop trying to connect after
-    // MAX_SERVICE_RETRY_COUNT
-    private int mServiceRetryCount;
-
-    @Override
-    public void onCreate() {
-        bindService(new Intent(UrlRendererService.SERVICE_INTERFACE),
-                mConnection, Context.BIND_AUTO_CREATE);
-    }
-
-    @Override
-    public void onDestroy() {
-        unbindService(mConnection);
-    }
-
-    @Override
-    public android.os.IBinder onBind(Intent intent) {
-        return null;
-    }
-
-    @Override
-    public int onStartCommand(Intent intent, int flags, int startId) {
-        final String action = intent.getAction();
-        if (UPDATE.equals(action)) {
-            mHandler.sendEmptyMessage(MSG_UPDATE);
-        } else if (PREV.equals(action) && mIdList.size() > 1) {
-            int prev = getPreviousId(intent);
-            if (prev == NO_ID) {
-                Log.d(TAG, "Could not determine previous id");
-                return START_NOT_STICKY;
-            }
-            RenderResult res = mIdsToResults.get(prev);
-            if (res != null) {
-                updateWidget(res);
-            }
-        } else if (NEXT.equals(action) && mIdList.size() > 1) {
-            int next = getNextId(intent);
-            if (next == NO_ID) {
-                Log.d(TAG, "Could not determine next id");
-                return START_NOT_STICKY;
-            }
-            RenderResult res = mIdsToResults.get(next);
-            if (res != null) {
-                updateWidget(res);
-            }
-        }
-        return START_STICKY;
-    }
-
-    private int getPreviousId(Intent intent) {
-        int listSize = mIdList.size();
-        // If the list contains 1 or fewer entries, return NO_ID so that the
-        // widget does not update.
-        if (listSize <= 1) {
-            return NO_ID;
-        }
-
-        int curr = intent.getIntExtra(EXTRA_ID, NO_ID);
-        if (curr == NO_ID) {
-            return NO_ID;
-        }
-
-        // Check if the current id is the beginning of the list so we can skip
-        // iterating through.
-        if (mIdList.get(0) == curr) {
-            return mIdList.get(listSize - 1);
-        }
-
-        // Search for the current id and remember the previous id.
-        int prev = NO_ID;
-        for (int id : mIdList) {
-            if (id == curr) {
-                break;
-            }
-            prev = id;
-        }
-        return prev;
-    }
-
-    private int getNextId(Intent intent) {
-        int listSize = mIdList.size();
-        // If the list contains 1 or fewer entries, return NO_ID so that the
-        // widget does not update.
-        if (listSize <= 1) {
-            return NO_ID;
-        }
-
-        int curr = intent.getIntExtra(EXTRA_ID, NO_ID);
-        if (curr == NO_ID) {
-            return NO_ID;
-        }
-
-        // Check if the current id is at the end of the list so we can skip
-        // iterating through.
-        if (mIdList.get(listSize - 1) == curr) {
-            return mIdList.get(0);
-        }
-
-        // Iterate through the ids. i is set to the current index + 1.
-        int i = 1;
-        for (int id : mIdList) {
-            if (id == curr) {
-                break;
-            }
-            i++;
-        }
-        return mIdList.get(i);
-    }
-
-    private void updateWidget(RenderResult res) {
-        RemoteViews views = new RemoteViews(getPackageName(),
-                R.layout.bookmarkwidget);
-
-        Intent prev = new Intent(PREV, null, this, BookmarkWidgetService.class);
-        prev.putExtra(EXTRA_ID, res.mId);
-        views.setOnClickPendingIntent(R.id.previous,
-                PendingIntent.getService(this, 0, prev,
-                    PendingIntent.FLAG_CANCEL_CURRENT));
-
-        Intent next = new Intent(NEXT, null, this, BookmarkWidgetService.class);
-        next.putExtra(EXTRA_ID, res.mId);
-        views.setOnClickPendingIntent(R.id.next,
-                PendingIntent.getService(this, 0, next,
-                    PendingIntent.FLAG_CANCEL_CURRENT));
-
-        // Set the title of the bookmark. Use the url as a backup.
-        String displayTitle = res.mTitle;
-        if (displayTitle == null) {
-            displayTitle = res.mUrl;
-        }
-        views.setTextViewText(R.id.title, displayTitle);
-
-        // Set the image or revert to the progress indicator.
-        if (res.mBitmap != null) {
-            views.setImageViewBitmap(R.id.image, res.mBitmap);
-            views.setViewVisibility(R.id.image, View.VISIBLE);
-            views.setViewVisibility(R.id.progress, View.GONE);
-        } else {
-            views.setViewVisibility(R.id.progress, View.VISIBLE);
-            views.setViewVisibility(R.id.image, View.GONE);
-        }
-
-        // Update the current id.
-        mCurrentId = res.mId;
-
-        AppWidgetManager.getInstance(this).updateAppWidget(
-                new ComponentName(this, BookmarkWidgetProvider.class),
-                views);
-    }
-
-    // Default WHERE clause is all bookmarks.
-    private static final String QUERY_WHERE =
-            BookmarkColumns.BOOKMARK + " == 1";
-    private static final String[] PROJECTION = new String[] {
-            BookmarkColumns._ID, BookmarkColumns.TITLE, BookmarkColumns.URL };
-
-    // Class containing the rendering information for a specific bookmark.
-    private static class RenderResult {
-        final int    mId;
-        final String mTitle;
-        final String mUrl;
-        Bitmap       mBitmap;
-
-        RenderResult(int id, String title, String url) {
-            mId = id;
-            mTitle = title;
-            mUrl = url;
-        }
-    }
-
-    private void queryCursorAndRender() {
-        // Clear the ordered list of ids and the map of ids to bitmaps.
-        mIdList.clear();
-        mIdsToResults.clear();
-
-        // Look up all the bookmarks
-        Cursor c = getContentResolver().query(Browser.BOOKMARKS_URI, PROJECTION,
-                QUERY_WHERE, null, null);
-        if (c != null) {
-            if (c.moveToFirst()) {
-                ArrayList<String> urls = new ArrayList<String>(c.getCount());
-                boolean sawCurrentId = false;
-                do {
-                    int id = c.getInt(0);
-                    String title = c.getString(1);
-                    String url = c.getString(2);
-
-                    // Linear list of ids to obtain the previous and next.
-                    mIdList.add(id);
-
-                    // Map the url to its db id for lookup when complete.
-                    mUrlsToIds.put(url, id);
-
-                    // Is this the current id?
-                    if (mCurrentId == id) {
-                        sawCurrentId = true;
-                    }
-
-                    // Store the current information to at least display the
-                    // title.
-                    RenderResult res = new RenderResult(id, title, url);
-                    mIdsToResults.put(id, res);
-
-                    // Add the url to our list to render.
-                    urls.add(url);
-                } while (c.moveToNext());
-
-                // Request a rendering of the urls. XXX: Hard-coded dimensions
-                // until the view's orientation and size can be determined. Or
-                // in the future the image will be a picture that can be
-                // scaled/zoomed arbitrarily.
-                mRenderer.render(urls, WIDTH, HEIGHT, this);
-
-                // Set the current id to the very first id if we did not see
-                // the current id in the list (the bookmark could have been
-                // deleted or this is the first update).
-                if (!sawCurrentId) {
-                    mCurrentId = mIdList.get(0);
-                }
-            }
-            c.close();
-        }
-    }
-
-    // UrlRenderer.Callback implementation
-    public void complete(String url, ParcelFileDescriptor result) {
-        int id = mUrlsToIds.get(url);
-        if (id == NO_ID) {
-            Log.d(TAG, "No matching id found during completion of "
-                    + url);
-            return;
-        }
-
-        RenderResult res = mIdsToResults.get(id);
-        if (res == null) {
-            Log.d(TAG, "No result found during completion of "
-                    + url);
-            return;
-        }
-
-        // Set the result.
-        if (result != null) {
-            InputStream input =
-                    new ParcelFileDescriptor.AutoCloseInputStream(result);
-            Bitmap orig = BitmapFactory.decodeStream(input, null, null);
-            // XXX: Hard-coded scaled bitmap until I can query the image
-            // dimensions.
-            res.mBitmap = Bitmap.createScaledBitmap(orig, WIDTH, HEIGHT, true);
-            try {
-                input.close();
-            } catch (IOException e) {
-                // oh well...
-            }
-        }
-
-        // If we are currently looking at the bookmark that just finished,
-        // update the widget.
-        if (mCurrentId == id) {
-            updateWidget(res);
-        }
-    }
-}