Browse Source

Using observables instead of executors

master
anthony restaino 7 years ago
parent
commit
b8bbd8f6e0
  1. 5
      app/src/main/java/acr/browser/lightning/app/BrowserApp.java
  2. 29
      app/src/main/java/acr/browser/lightning/database/BookmarkLocalSync.java
  3. 26
      app/src/main/java/acr/browser/lightning/fragment/BookmarkSettingsFragment.java
  4. 120
      app/src/main/java/acr/browser/lightning/fragment/PrivacySettingsFragment.java

5
app/src/main/java/acr/browser/lightning/app/BrowserApp.java

@ -102,11 +102,6 @@ public class BrowserApp extends Application {
return mIOThread; return mIOThread;
} }
@NonNull
public static Executor getTaskThread() {
return mTaskThread;
}
/** /**
* Determines whether this is a release build. * Determines whether this is a release build.
* *

29
app/src/main/java/acr/browser/lightning/database/BookmarkLocalSync.java

@ -83,7 +83,7 @@ public class BookmarkLocalSync {
Uri uri = Uri.parse(contentUri); Uri uri = Uri.parse(contentUri);
try { try {
cursor = mContext.getContentResolver().query(uri, cursor = mContext.getContentResolver().query(uri,
new String[]{COLUMN_URL, COLUMN_TITLE, COLUMN_BOOKMARK}, null, null, null); new String[]{COLUMN_URL, COLUMN_TITLE, COLUMN_BOOKMARK}, null, null, null);
} catch (IllegalArgumentException e) { } catch (IllegalArgumentException e) {
return null; return null;
} }
@ -145,16 +145,23 @@ public class BookmarkLocalSync {
return getBookmarksFromContentUri(CHROME_DEV_BOOKMARKS_CONTENT); return getBookmarksFromContentUri(CHROME_DEV_BOOKMARKS_CONTENT);
} }
@WorkerThread @NonNull
public boolean isBrowserImportSupported() { public Single<Boolean> isBrowserImportSupported() {
Cursor chrome = getChromeCursor(); return Single.create(new SingleAction<Boolean>() {
Utils.close(chrome); @Override
Cursor dev = getChromeDevCursor(); public void onSubscribe(@NonNull SingleSubscriber<Boolean> subscriber) {
Utils.close(dev); Cursor chrome = getChromeCursor();
Cursor beta = getChromeBetaCursor(); Utils.close(chrome);
Cursor stock = getStockCursor(); Cursor dev = getChromeDevCursor();
Utils.close(stock); Utils.close(dev);
return chrome != null || dev != null || beta != null || stock != null; Cursor beta = getChromeBetaCursor();
Cursor stock = getStockCursor();
Utils.close(stock);
subscriber.onItem(chrome != null || dev != null || beta != null || stock != null);
subscriber.onComplete();
}
});
} }
@Nullable @Nullable

26
app/src/main/java/acr/browser/lightning/fragment/BookmarkSettingsFragment.java

@ -164,20 +164,18 @@ public class BookmarkSettingsFragment extends PreferenceFragment implements Pref
importPref.setOnPreferenceClickListener(this); importPref.setOnPreferenceClickListener(this);
deletePref.setOnPreferenceClickListener(this); deletePref.setOnPreferenceClickListener(this);
BrowserApp.getTaskThread().execute(new Runnable() { getSync().isBrowserImportSupported()
@Override .subscribeOn(Schedulers.io())
public void run() { .observeOn(Schedulers.main())
final boolean isBrowserImportSupported = getSync().isBrowserImportSupported(); .subscribe(new SingleOnSubscribe<Boolean>() {
Schedulers.main().execute(new Runnable() { @Override
@Override public void onItem(@Nullable Boolean supported) {
public void run() { Preconditions.checkNonNull(supported);
Preference importStock = findPreference(SETTINGS_IMPORT_BROWSER); Preference importStock = findPreference(SETTINGS_IMPORT_BROWSER);
importStock.setEnabled(isBrowserImportSupported); importStock.setEnabled(supported);
importStock.setOnPreferenceClickListener(BookmarkSettingsFragment.this); importStock.setOnPreferenceClickListener(BookmarkSettingsFragment.this);
} }
}); });
}
});
} }

120
app/src/main/java/acr/browser/lightning/fragment/PrivacySettingsFragment.java

@ -16,6 +16,12 @@ import android.support.annotation.NonNull;
import android.support.v7.app.AlertDialog; import android.support.v7.app.AlertDialog;
import android.webkit.WebView; import android.webkit.WebView;
import com.anthonycr.bonsai.Completable;
import com.anthonycr.bonsai.CompletableAction;
import com.anthonycr.bonsai.CompletableOnSubscribe;
import com.anthonycr.bonsai.CompletableSubscriber;
import com.anthonycr.bonsai.Schedulers;
import acr.browser.lightning.R; import acr.browser.lightning.R;
import acr.browser.lightning.app.BrowserApp; import acr.browser.lightning.app.BrowserApp;
import acr.browser.lightning.dialog.BrowserDialog; import acr.browser.lightning.dialog.BrowserDialog;
@ -40,7 +46,6 @@ public class PrivacySettingsFragment extends LightningPreferenceFragment impleme
private static final String SETTINGS_IDENTIFYINGHEADERS = "remove_identifying_headers"; private static final String SETTINGS_IDENTIFYINGHEADERS = "remove_identifying_headers";
private Activity mActivity; private Activity mActivity;
private Handler mMessageHandler;
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
@ -103,29 +108,6 @@ public class PrivacySettingsFragment extends LightningPreferenceFragment impleme
cb3cookies.setEnabled(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP); cb3cookies.setEnabled(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP);
mMessageHandler = new MessageHandler(mActivity);
}
private static class MessageHandler extends Handler {
final Activity mHandlerContext;
public MessageHandler(Activity context) {
this.mHandlerContext = context;
}
@Override
public void handleMessage(@NonNull Message msg) {
switch (msg.what) {
case 1:
Utils.showSnackbar(mHandlerContext, R.string.message_clear_history);
break;
case 2:
Utils.showSnackbar(mHandlerContext, R.string.message_cookies_cleared);
break;
}
super.handleMessage(msg);
}
} }
@Override @Override
@ -152,19 +134,22 @@ public class PrivacySettingsFragment extends LightningPreferenceFragment impleme
AlertDialog.Builder builder = new AlertDialog.Builder(mActivity); AlertDialog.Builder builder = new AlertDialog.Builder(mActivity);
builder.setTitle(getResources().getString(R.string.title_clear_history)); builder.setTitle(getResources().getString(R.string.title_clear_history));
Dialog dialog = builder.setMessage(getResources().getString(R.string.dialog_history)) Dialog dialog = builder.setMessage(getResources().getString(R.string.dialog_history))
.setPositiveButton(getResources().getString(R.string.action_yes), .setPositiveButton(getResources().getString(R.string.action_yes),
new DialogInterface.OnClickListener() { new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface arg0, int arg1) { public void onClick(DialogInterface arg0, int arg1) {
BrowserApp.getIOThread().execute(new Runnable() { clearHistory()
@Override .subscribeOn(Schedulers.io())
public void run() { .observeOn(Schedulers.main())
clearHistory(); .subscribe(new CompletableOnSubscribe() {
} @Override
}); public void onComplete() {
} Utils.showSnackbar(getActivity(), R.string.message_clear_history);
}) }
.setNegativeButton(getResources().getString(R.string.action_no), null).show(); });
}
})
.setNegativeButton(getResources().getString(R.string.action_no), null).show();
BrowserDialog.setDialogSize(mActivity, dialog); BrowserDialog.setDialogSize(mActivity, dialog);
} }
@ -172,19 +157,22 @@ public class PrivacySettingsFragment extends LightningPreferenceFragment impleme
AlertDialog.Builder builder = new AlertDialog.Builder(mActivity); AlertDialog.Builder builder = new AlertDialog.Builder(mActivity);
builder.setTitle(getResources().getString(R.string.title_clear_cookies)); builder.setTitle(getResources().getString(R.string.title_clear_cookies));
builder.setMessage(getResources().getString(R.string.dialog_cookies)) builder.setMessage(getResources().getString(R.string.dialog_cookies))
.setPositiveButton(getResources().getString(R.string.action_yes), .setPositiveButton(getResources().getString(R.string.action_yes),
new DialogInterface.OnClickListener() { new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface arg0, int arg1) { public void onClick(DialogInterface arg0, int arg1) {
BrowserApp.getTaskThread().execute(new Runnable() { clearCookies()
@Override .subscribeOn(Schedulers.io())
public void run() { .observeOn(Schedulers.main())
clearCookies(); .subscribe(new CompletableOnSubscribe() {
} @Override
}); public void onComplete() {
} Utils.showSnackbar(getActivity(), R.string.message_cookies_cleared);
}) }
.setNegativeButton(getResources().getString(R.string.action_no), null).show(); });
}
})
.setNegativeButton(getResources().getString(R.string.action_no), null).show();
} }
private void clearCache() { private void clearCache() {
@ -194,14 +182,34 @@ public class PrivacySettingsFragment extends LightningPreferenceFragment impleme
Utils.showSnackbar(mActivity, R.string.message_cache_cleared); Utils.showSnackbar(mActivity, R.string.message_cache_cleared);
} }
private void clearHistory() { @NonNull
WebUtils.clearHistory(getActivity()); private Completable clearHistory() {
mMessageHandler.sendEmptyMessage(1); return Completable.create(new CompletableAction() {
@Override
public void onSubscribe(@NonNull CompletableSubscriber subscriber) {
Activity activity = getActivity();
if (activity != null) {
WebUtils.clearHistory(activity);
subscriber.onComplete();
}
subscriber.onError(new RuntimeException("Activity was null in clearHistory"));
}
});
} }
private void clearCookies() { @NonNull
WebUtils.clearCookies(getActivity()); private Completable clearCookies() {
mMessageHandler.sendEmptyMessage(2); return Completable.create(new CompletableAction() {
@Override
public void onSubscribe(@NonNull CompletableSubscriber subscriber) {
Activity activity = getActivity();
if (activity != null) {
WebUtils.clearCookies(activity);
subscriber.onComplete();
}
subscriber.onError(new RuntimeException("Activity was null in clearCookies"));
}
});
} }
private void clearWebStorage() { private void clearWebStorage() {

Loading…
Cancel
Save