Using observables instead of executors
This commit is contained in:
parent
ee078c1495
commit
b8bbd8f6e0
@ -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.
|
||||||
*
|
*
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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…
x
Reference in New Issue
Block a user