Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e77852c8 authored by Leon Scroggins's avatar Leon Scroggins
Browse files

Do not provide a way to use an AsyncTask from a non main thread.

Fix for http://b/issue?id=2539948

This public API can be called from any thread, so do not use an
AsyncTask.  In a separate changelist, the caller now uses an
AsyncTask instead.

Change-Id: I646950964323f8c749f9aa2176226561c6f2b21f
parent 241cd54d
Loading
Loading
Loading
Loading
+38 −62
Original line number Diff line number Diff line
@@ -276,72 +276,48 @@ public class Browser {
    public static final void updateVisitedHistory(ContentResolver cr,
                                                  String url, boolean real) {
        long now = new Date().getTime();
        new UpdateVisitedHistory(cr, url, real, now).execute();
    }

    /**
     * Runnable to perform the update in a separate thread.
     */
    private static class UpdateVisitedHistory extends AsyncTask<Void, Void, Void> {
        private final ContentResolver mContentResolver;
        private final String mUrl;
        private final boolean mReal;
        private final long mNow;

        public UpdateVisitedHistory(ContentResolver cr, String url,
                boolean real, long now) {
            mContentResolver = cr;
            mUrl = url;
            mReal = real;
            mNow = now;
        }

        protected Void doInBackground(Void... unused) {
        Cursor c = null;
        try {
                c = getVisitedLike(mContentResolver, mUrl);
            c = getVisitedLike(cr, url);
            /* We should only get one answer that is exactly the same. */
            if (c.moveToFirst()) {
                ContentValues map = new ContentValues();
                    if (mReal) {
                if (real) {
                    map.put(BookmarkColumns.VISITS, c
                            .getInt(HISTORY_PROJECTION_VISITS_INDEX) + 1);
                } else {
                    map.put(BookmarkColumns.USER_ENTERED, 1);
                }
                    map.put(BookmarkColumns.DATE, mNow);
                map.put(BookmarkColumns.DATE, now);
                String[] projection = new String[]
                        { Integer.valueOf(c.getInt(0)).toString() };
                    mContentResolver.update(BOOKMARKS_URI, map, "_id = ?",
                            projection);
                cr.update(BOOKMARKS_URI, map, "_id = ?", projection);
            } else {
                    truncateHistory(mContentResolver);
                truncateHistory(cr);
                ContentValues map = new ContentValues();
                int visits;
                int user_entered;
                    if (mReal) {
                if (real) {
                    visits = 1;
                    user_entered = 0;
                } else {
                    visits = 0;
                    user_entered = 1;
                }
                    map.put(BookmarkColumns.URL, mUrl);
                map.put(BookmarkColumns.URL, url);
                map.put(BookmarkColumns.VISITS, visits);
                    map.put(BookmarkColumns.DATE, mNow);
                map.put(BookmarkColumns.DATE, now);
                map.put(BookmarkColumns.BOOKMARK, 0);
                    map.put(BookmarkColumns.TITLE, mUrl);
                map.put(BookmarkColumns.TITLE, url);
                map.put(BookmarkColumns.CREATED, 0);
                map.put(BookmarkColumns.USER_ENTERED, user_entered);
                    mContentResolver.insert(BOOKMARKS_URI, map);
                cr.insert(BOOKMARKS_URI, map);
            }
        } catch (IllegalStateException e) {
            Log.e(LOGTAG, "updateVisitedHistory", e);
        } finally {
            if (c != null) c.close();
        }
            return null;
        }
    }

    /**