Bug 798135: Make GeckoAsyncTask run on GeckoBackgroundThread. [r=cpeterson]

--HG--
extra : rebase_source : 6b9d9d5b992bb3d641a959a8734d5844a51087db
This commit is contained in:
Sriram Ramasubramanian 2012-10-05 11:07:14 -07:00
parent 601484e332
commit 61d4858950
6 changed files with 15 additions and 17 deletions

View File

@ -547,7 +547,7 @@ public class AwesomeBar extends GeckoActivity {
editPrompt.setPositiveButton(R.string.button_ok, new DialogInterface.OnClickListener() { editPrompt.setPositiveButton(R.string.button_ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) { public void onClick(DialogInterface dialog, int whichButton) {
(new GeckoAsyncTask<Void, Void, Void>(GeckoApp.mAppContext, GeckoAppShell.getHandler()) { (new GeckoAsyncTask<Void, Void, Void>() {
@Override @Override
public Void doInBackground(Void... params) { public Void doInBackground(Void... params) {
String newUrl = locationText.getText().toString().trim(); String newUrl = locationText.getText().toString().trim();
@ -623,7 +623,7 @@ public class AwesomeBar extends GeckoActivity {
break; break;
} }
case R.id.remove_history: { case R.id.remove_history: {
(new GeckoAsyncTask<Void, Void, Void>(GeckoApp.mAppContext, GeckoAppShell.getHandler()) { (new GeckoAsyncTask<Void, Void, Void>() {
@Override @Override
public Void doInBackground(Void... params) { public Void doInBackground(Void... params) {
BrowserDB.removeHistoryEntry(mResolver, id); BrowserDB.removeHistoryEntry(mResolver, id);

View File

@ -917,7 +917,7 @@ abstract public class BrowserApp extends GeckoApp
if (!Intent.ACTION_MAIN.equals(intent.getAction())) if (!Intent.ACTION_MAIN.equals(intent.getAction()))
return; return;
(new GeckoAsyncTask<Void, Void, Boolean>(mAppContext, GeckoAppShell.getHandler()) { (new GeckoAsyncTask<Void, Void, Boolean>() {
@Override @Override
public synchronized Boolean doInBackground(Void... params) { public synchronized Boolean doInBackground(Void... params) {
// Check to see how many times the app has been launched. // Check to see how many times the app has been launched.
@ -954,7 +954,7 @@ abstract public class BrowserApp extends GeckoApp
} }
private void getLastUrl() { private void getLastUrl() {
(new GeckoAsyncTask<Void, Void, String>(mAppContext, GeckoAppShell.getHandler()) { (new GeckoAsyncTask<Void, Void, String>() {
@Override @Override
public synchronized String doInBackground(Void... params) { public synchronized String doInBackground(Void... params) {
// Get the most recent URL stored in browser history. // Get the most recent URL stored in browser history.

View File

@ -775,7 +775,7 @@ abstract public class GeckoApp
} }
void handleFaviconRequest(final String url) { void handleFaviconRequest(final String url) {
(new GeckoAsyncTask<Void, Void, String>(mAppContext, GeckoAppShell.getHandler()) { (new GeckoAsyncTask<Void, Void, String>() {
@Override @Override
public String doInBackground(Void... params) { public String doInBackground(Void... params) {
return getFavicons().getFaviconUrlForPageUrl(url); return getFavicons().getFaviconUrlForPageUrl(url);

View File

@ -5,7 +5,6 @@
package org.mozilla.gecko.util; package org.mozilla.gecko.util;
import android.app.Activity;
import android.os.Handler; import android.os.Handler;
// AsyncTask runs onPostExecute on the thread it is constructed on // AsyncTask runs onPostExecute on the thread it is constructed on
@ -14,13 +13,12 @@ import android.os.Handler;
public abstract class GeckoAsyncTask<Params, Progress, Result> { public abstract class GeckoAsyncTask<Params, Progress, Result> {
public enum Priority { NORMAL, HIGH }; public enum Priority { NORMAL, HIGH };
private final Activity mActivity; private final Handler mHandler;
private final Handler mBackgroundThreadHandler;
private Priority mPriority = Priority.NORMAL; private Priority mPriority = Priority.NORMAL;
public GeckoAsyncTask(Activity activity, Handler backgroundThreadHandler) { public GeckoAsyncTask() {
mActivity = activity; mHandler = new Handler();
mBackgroundThreadHandler = backgroundThreadHandler; mHandler.getLooper();
} }
private final class BackgroundTaskRunnable implements Runnable { private final class BackgroundTaskRunnable implements Runnable {
@ -32,7 +30,7 @@ public abstract class GeckoAsyncTask<Params, Progress, Result> {
public void run() { public void run() {
final Result result = doInBackground(mParams); final Result result = doInBackground(mParams);
mActivity.runOnUiThread(new Runnable() { mHandler.post(new Runnable() {
public void run() { public void run() {
onPostExecute(result); onPostExecute(result);
} }
@ -43,9 +41,9 @@ public abstract class GeckoAsyncTask<Params, Progress, Result> {
public final void execute(final Params... params) { public final void execute(final Params... params) {
BackgroundTaskRunnable runnable = new BackgroundTaskRunnable(params); BackgroundTaskRunnable runnable = new BackgroundTaskRunnable(params);
if (mPriority == Priority.HIGH) if (mPriority == Priority.HIGH)
mBackgroundThreadHandler.postAtFrontOfQueue(runnable); GeckoBackgroundThread.getHandler().postAtFrontOfQueue(runnable);
else else
mBackgroundThreadHandler.post(runnable); GeckoBackgroundThread.getHandler().post(runnable);
} }
public final GeckoAsyncTask<Params, Progress, Result> setPriority(Priority priority) { public final GeckoAsyncTask<Params, Progress, Result> setPriority(Priority priority) {

View File

@ -378,7 +378,7 @@ public final class Tab {
if (url == null) if (url == null)
return; return;
(new GeckoAsyncTask<Void, Void, Void>(GeckoApp.mAppContext, GeckoAppShell.getHandler()) { (new GeckoAsyncTask<Void, Void, Void>() {
@Override @Override
public Void doInBackground(Void... params) { public Void doInBackground(Void... params) {
if (url.equals(getURL())) { if (url.equals(getURL())) {

View File

@ -71,7 +71,7 @@ public final class TabsAccessor {
if (listener == null) if (listener == null)
return; return;
(new GeckoAsyncTask<Void, Void, Boolean>(GeckoApp.mAppContext, GeckoAppShell.getHandler()) { (new GeckoAsyncTask<Void, Void, Boolean>() {
@Override @Override
protected Boolean doInBackground(Void... unused) { protected Boolean doInBackground(Void... unused) {
Uri uri = BrowserContract.Tabs.CONTENT_URI; Uri uri = BrowserContract.Tabs.CONTENT_URI;
@ -115,7 +115,7 @@ public final class TabsAccessor {
if (listener == null) if (listener == null)
return; return;
(new GeckoAsyncTask<Void, Void, List<RemoteTab>>(GeckoApp.mAppContext, GeckoAppShell.getHandler()) { (new GeckoAsyncTask<Void, Void, List<RemoteTab>>() {
@Override @Override
protected List<RemoteTab> doInBackground(Void... unused) { protected List<RemoteTab> doInBackground(Void... unused) {
Uri uri = BrowserContract.Tabs.CONTENT_URI; Uri uri = BrowserContract.Tabs.CONTENT_URI;