From 6e108dbbff125231592a1f740b62c45cfcacdb0c Mon Sep 17 00:00:00 2001 From: Anthony Restaino Date: Sun, 31 Jul 2016 18:19:23 -0400 Subject: [PATCH] Fixed bugs with opening file:// urls in the browser via intent --- .../lightning/activity/TabsManager.java | 46 +++++++++++++------ .../lightning/browser/BrowserPresenter.java | 15 ++++-- 2 files changed, 42 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/acr/browser/lightning/activity/TabsManager.java b/app/src/main/java/acr/browser/lightning/activity/TabsManager.java index 99abbbd..9ef0349 100644 --- a/app/src/main/java/acr/browser/lightning/activity/TabsManager.java +++ b/app/src/main/java/acr/browser/lightning/activity/TabsManager.java @@ -28,11 +28,13 @@ import acr.browser.lightning.constant.StartPage; import acr.browser.lightning.database.BookmarkManager; import acr.browser.lightning.database.HistoryDatabase; import acr.browser.lightning.preference.PreferenceManager; + import com.anthonycr.bonsai.Action; import com.anthonycr.bonsai.Observable; import com.anthonycr.bonsai.OnSubscribe; import com.anthonycr.bonsai.Schedulers; import com.anthonycr.bonsai.Subscriber; + import acr.browser.lightning.utils.FileUtils; import acr.browser.lightning.utils.UrlUtils; import acr.browser.lightning.view.LightningView; @@ -144,7 +146,7 @@ public class TabsManager { @NonNull final Subscriber subscriber) { restoreState().subscribeOn(Schedulers.io()) - .observeOn(Schedulers.main()).subscribe(new OnSubscribe() { + .observeOn(Schedulers.main()).subscribe(new OnSubscribe() { @Override public void onNext(Bundle item) { LightningView tab = newTab(activity, "", false); @@ -168,24 +170,40 @@ public class TabsManager { 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); + .setTitle(R.string.title_warning) + .setMessage(R.string.message_blocked_local) + .setOnDismissListener(new DialogInterface.OnDismissListener() { + @Override + public void onDismiss(DialogInterface dialog) { + if (mTabList.isEmpty()) { + newTab(activity, null, false); } - }).show(); + finishInitialization(); + subscriber.onComplete(); + } + }) + .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.isEmpty()) { + newTab(activity, null, false); + } + finishInitialization(); + subscriber.onComplete(); } + } else { + if (mTabList.isEmpty()) { + newTab(activity, null, false); + } + finishInitialization(); + subscriber.onComplete(); } - if (mTabList.size() == 0) { - newTab(activity, null, false); - } - finishInitialization(); - subscriber.onComplete(); } }); } diff --git a/app/src/main/java/acr/browser/lightning/browser/BrowserPresenter.java b/app/src/main/java/acr/browser/lightning/browser/BrowserPresenter.java index 179f2bb..689cd46 100644 --- a/app/src/main/java/acr/browser/lightning/browser/BrowserPresenter.java +++ b/app/src/main/java/acr/browser/lightning/browser/BrowserPresenter.java @@ -236,15 +236,20 @@ public class BrowserPresenter { @Override public void onClick(DialogInterface dialog, int which) { newTab(url, true); + mShouldClose = true; + LightningView tab = mTabsModel.lastTab(); + if (tab != null) { + tab.setTag(true); + } } }); } else { newTab(url, true); - } - mShouldClose = true; - LightningView tab = mTabsModel.lastTab(); - if (tab != null) { - tab.setTag(true); + mShouldClose = true; + LightningView tab = mTabsModel.lastTab(); + if (tab != null) { + tab.setTag(true); + } } } }