Browse Source

Add missing annotations, clean up reactive code, simplify methods

master
Anthony Restaino 9 years ago
parent
commit
de4fdc86e0
  1. 10
      app/src/main/java/acr/browser/lightning/activity/BrowserActivity.java
  2. 87
      app/src/main/java/acr/browser/lightning/activity/TabsManager.java
  3. 4
      app/src/main/java/acr/browser/lightning/react/Subscriber.java
  4. 4
      app/src/main/java/acr/browser/lightning/react/Subscription.java
  5. 18
      app/src/main/java/acr/browser/lightning/view/LightningView.java

10
app/src/main/java/acr/browser/lightning/activity/BrowserActivity.java

@ -359,8 +359,11 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements @@ -359,8 +359,11 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements
WebIconDatabase.getInstance().open(getDir("icons", MODE_PRIVATE).getPath());
}
mTabsManager.restoreTabsAndHandleIntent(this, getIntent(), isIncognito())
mTabsManager.initializeTabs(this, getIntent(), isIncognito())
.subscribe(new Subscription<Void>() {
@Override
public void onNext(Void item) {}
@Override
public void onComplete() {
// At this point we always have at least a tab in the tab manager
@ -368,11 +371,6 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements @@ -368,11 +371,6 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements
mProxyUtils.checkForProxy(BrowserActivity.this);
}
@Override
public void onNext(Void item) {
}
});
}

87
app/src/main/java/acr/browser/lightning/activity/TabsManager.java

@ -61,12 +61,12 @@ public class TabsManager { @@ -61,12 +61,12 @@ public class TabsManager {
* @param intent the intent that started the browser activity.
* @param incognito whether or not we are in incognito mode.
*/
public synchronized Observable<Void> restoreTabsAndHandleIntent(@NonNull final Activity activity,
@Nullable final Intent intent,
final boolean incognito) {
public synchronized Observable<Void> initializeTabs(@NonNull final Activity activity,
@Nullable final Intent intent,
final boolean incognito) {
return Observable.create(new Action<Void>() {
@Override
public void onSubscribe(final Subscriber<Void> subscriber) {
public void onSubscribe(@NonNull final Subscriber<Void> subscriber) {
// If incognito, only create one tab, do not handle intent
@ -85,43 +85,7 @@ public class TabsManager { @@ -85,43 +85,7 @@ public class TabsManager {
mTabList.clear();
mCurrentTab = null;
if (mPreferenceManager.getRestoreLostTabsEnabled()) {
restoreState()
.subscribeOn(Schedulers.worker())
.observeOn(Schedulers.main())
.subscribe(new Subscription<Bundle>() {
@Override
public void onComplete() {
if (url != null) {
if (url.startsWith(Constants.FILE)) {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setCancelable(true)
.setTitle(R.string.title_warning)
.setMessage(R.string.message_blocked_local)
.setNegativeButton(android.R.string.cancel, null)
.setPositiveButton(R.string.action_open, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
newTab(activity, url, false);
}
}).show();
} else {
newTab(activity, url, false);
}
}
if (mTabList.size() == 0) {
newTab(activity, null, false);
}
subscriber.onComplete();
}
@Override
public void onNext(Bundle item) {
LightningView tab = newTab(activity, "", false);
if (tab.getWebView() != null) {
tab.getWebView().restoreState(item);
}
}
});
restoreLostTabs(url, activity, subscriber);
}
}
@ -129,6 +93,45 @@ public class TabsManager { @@ -129,6 +93,45 @@ public class TabsManager {
}
private void restoreLostTabs(final String url, final Activity activity,
final Subscriber subscriber) {
restoreState().subscribeOn(Schedulers.worker())
.observeOn(Schedulers.main()).subscribe(new Subscription<Bundle>() {
@Override
public void onNext(Bundle item) {
LightningView tab = newTab(activity, "", false);
if (tab.getWebView() != null) {
tab.getWebView().restoreState(item);
}
}
@Override
public void onComplete() {
if (url != null) {
if (url.startsWith(Constants.FILE)) {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setCancelable(true)
.setTitle(R.string.title_warning)
.setMessage(R.string.message_blocked_local)
.setNegativeButton(android.R.string.cancel, null)
.setPositiveButton(R.string.action_open, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
newTab(activity, url, false);
}
}).show();
} else {
newTab(activity, url, false);
}
}
if (mTabList.size() == 0) {
newTab(activity, null, false);
}
subscriber.onComplete();
}
});
}
/**
* Return the tab at the given position in tabs list, or
* null if position is not in tabs list range.
@ -319,7 +322,7 @@ public class TabsManager { @@ -319,7 +322,7 @@ public class TabsManager {
private Observable<Bundle> restoreState() {
return Observable.create(new Action<Bundle>() {
@Override
public void onSubscribe(Subscriber<Bundle> subscriber) {
public void onSubscribe(@NonNull Subscriber<Bundle> subscriber) {
Bundle savedState = FileUtils.readBundleFromStorage(mApp, BUNDLE_STORAGE);
if (savedState != null) {
Log.d(Constants.TAG, "Restoring previous WebView state now");

4
app/src/main/java/acr/browser/lightning/react/Subscriber.java

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
package acr.browser.lightning.react;
public interface Subscriber<T> {
void onComplete();
void onNext(T item);
void onComplete();
}

4
app/src/main/java/acr/browser/lightning/react/Subscription.java

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
package acr.browser.lightning.react;
public interface Subscription<T> {
void onComplete();
void onNext(T item);
void onComplete();
}

18
app/src/main/java/acr/browser/lightning/view/LightningView.java

@ -376,33 +376,30 @@ public class LightningView { @@ -376,33 +376,30 @@ public class LightningView {
getPathObservable("appcache")
.subscribeOn(Schedulers.worker())
.subscribe(new Subscription<File>() {
@Override
public void onComplete() {}
@Override
public void onNext(File item) {
settings.setAppCachePath(item.getPath());
}
@Override
public void onComplete() {}
});
getPathObservable("geolocation")
.subscribeOn(Schedulers.worker())
.subscribe(new Subscription<File>() {
@Override
public void onComplete() {}
@Override
public void onNext(File item) {
settings.setGeolocationDatabasePath(item.getPath());
}
@Override
public void onComplete() {}
});
getPathObservable("databases")
.subscribeOn(Schedulers.worker())
.subscribe(new Subscription<File>() {
@Override
public void onComplete() {}
@Override
public void onNext(File item) {
if (API < Build.VERSION_CODES.KITKAT) {
@ -410,6 +407,9 @@ public class LightningView { @@ -410,6 +407,9 @@ public class LightningView {
settings.setDatabasePath(item.getPath());
}
}
@Override
public void onComplete() {}
});
}

Loading…
Cancel
Save