diff --git a/app/src/main/java/acr/browser/lightning/activity/BrowserActivity.java b/app/src/main/java/acr/browser/lightning/activity/BrowserActivity.java index 34a4161..2756320 100644 --- a/app/src/main/java/acr/browser/lightning/activity/BrowserActivity.java +++ b/app/src/main/java/acr/browser/lightning/activity/BrowserActivity.java @@ -61,7 +61,6 @@ import android.view.animation.Animation; import android.view.animation.Transformation; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputMethodManager; -import android.webkit.URLUtil; import android.webkit.ValueCallback; import android.webkit.WebChromeClient.CustomViewCallback; import android.webkit.WebIconDatabase; @@ -110,7 +109,9 @@ import acr.browser.lightning.fragment.BookmarksFragment; import acr.browser.lightning.fragment.TabsFragment; import acr.browser.lightning.interpolator.BezierDecelerateInterpolator; import acr.browser.lightning.receiver.NetworkReceiver; +import acr.browser.lightning.search.SearchEngineProvider; import acr.browser.lightning.search.SuggestionsAdapter; +import acr.browser.lightning.search.engine.BaseSearchEngine; import acr.browser.lightning.utils.DrawableUtils; import acr.browser.lightning.utils.IntentUtils; import acr.browser.lightning.utils.Preconditions; @@ -192,6 +193,8 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements @Inject SearchBoxModel mSearchBoxModel; + @Inject SearchEngineProvider mSearchEngineProvider; + private TabsManager mTabsManager; // Image @@ -657,44 +660,8 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements setFullscreen(mPreferences.getHideStatusBarEnabled(), false); - switch (mPreferences.getSearchChoice()) { - case 0: - mSearchText = mPreferences.getSearchUrl(); - if (!URLUtil.isNetworkUrl(mSearchText)) { - mSearchText = Constants.GOOGLE_SEARCH; - } - break; - case 1: - mSearchText = Constants.GOOGLE_SEARCH; - break; - case 2: - mSearchText = Constants.ASK_SEARCH; - break; - case 3: - mSearchText = Constants.BING_SEARCH; - break; - case 4: - mSearchText = Constants.YAHOO_SEARCH; - break; - case 5: - mSearchText = Constants.STARTPAGE_SEARCH; - break; - case 6: - mSearchText = Constants.STARTPAGE_MOBILE_SEARCH; - break; - case 7: - mSearchText = Constants.DUCK_SEARCH; - break; - case 8: - mSearchText = Constants.DUCK_LITE_SEARCH; - break; - case 9: - mSearchText = Constants.BAIDU_SEARCH; - break; - case 10: - mSearchText = Constants.YANDEX_SEARCH; - break; - } + BaseSearchEngine currentSearchEngine = mSearchEngineProvider.getCurrentSearchEngine(); + mSearchText = currentSearchEngine.getQueryUrl(); updateCookiePreference().subscribeOn(Schedulers.worker()).subscribe(); mProxyUtils.updateProxySettings(this); diff --git a/app/src/main/java/acr/browser/lightning/app/AppComponent.java b/app/src/main/java/acr/browser/lightning/app/AppComponent.java index 4b74766..3683d5f 100644 --- a/app/src/main/java/acr/browser/lightning/app/AppComponent.java +++ b/app/src/main/java/acr/browser/lightning/app/AppComponent.java @@ -22,6 +22,7 @@ import acr.browser.lightning.fragment.DebugSettingsFragment; import acr.browser.lightning.fragment.LightningPreferenceFragment; import acr.browser.lightning.fragment.PrivacySettingsFragment; import acr.browser.lightning.fragment.TabsFragment; +import acr.browser.lightning.search.SearchEngineProvider; import acr.browser.lightning.search.SuggestionsAdapter; import acr.browser.lightning.utils.ProxyUtils; import acr.browser.lightning.view.LightningChromeClient; @@ -85,4 +86,6 @@ public interface AppComponent { void inject(SearchBoxModel searchBoxModel); + void inject(SearchEngineProvider searchEngineProvider); + } diff --git a/app/src/main/java/acr/browser/lightning/constant/StartPage.java b/app/src/main/java/acr/browser/lightning/constant/StartPage.java index 5bb1a63..873481e 100644 --- a/app/src/main/java/acr/browser/lightning/constant/StartPage.java +++ b/app/src/main/java/acr/browser/lightning/constant/StartPage.java @@ -18,7 +18,8 @@ import javax.inject.Inject; import acr.browser.lightning.R; import acr.browser.lightning.app.BrowserApp; -import acr.browser.lightning.preference.PreferenceManager; +import acr.browser.lightning.search.SearchEngineProvider; +import acr.browser.lightning.search.engine.BaseSearchEngine; import acr.browser.lightning.utils.Utils; public class StartPage { @@ -26,31 +27,31 @@ public class StartPage { public static final String FILENAME = "homepage.html"; private static final String HEAD_1 = "" - + "
" - + "" - + "" - + "" - + "+ * See http://www.baidu.com/img/bdlogo.gif for the icon. + */ +public class BaiduSearch extends BaseSearchEngine { + + public BaiduSearch() { + super("file:///android_asset/baidu.png", Constants.BAIDU_SEARCH); + } + +} diff --git a/app/src/main/java/acr/browser/lightning/search/engine/BaseSearchEngine.java b/app/src/main/java/acr/browser/lightning/search/engine/BaseSearchEngine.java new file mode 100644 index 0000000..009d22a --- /dev/null +++ b/app/src/main/java/acr/browser/lightning/search/engine/BaseSearchEngine.java @@ -0,0 +1,33 @@ +package acr.browser.lightning.search.engine; + +import android.support.annotation.NonNull; + +import acr.browser.lightning.utils.Preconditions; + +/** + * A class representative of a search engine. + */ +public class BaseSearchEngine { + + @NonNull private final String mIconUrl; + @NonNull private final String mQueryUrl; + + public BaseSearchEngine(@NonNull String iconUrl, @NonNull String queryUrl) { + Preconditions.checkNonNull(iconUrl); + Preconditions.checkNonNull(queryUrl); + + mIconUrl = iconUrl; + mQueryUrl = queryUrl; + } + + @NonNull + public final String getIconUrl() { + return mIconUrl; + } + + @NonNull + public final String getQueryUrl() { + return mQueryUrl; + } + +} diff --git a/app/src/main/java/acr/browser/lightning/search/engine/BingSearch.java b/app/src/main/java/acr/browser/lightning/search/engine/BingSearch.java new file mode 100644 index 0000000..c3e95dc --- /dev/null +++ b/app/src/main/java/acr/browser/lightning/search/engine/BingSearch.java @@ -0,0 +1,18 @@ +package acr.browser.lightning.search.engine; + +import acr.browser.lightning.constant.Constants; + +/** + * The Bing search engine. + *
+ * See http://upload.wikimedia.org/wikipedia/commons/thumb/b/b1/Bing_logo_%282013%29.svg/500px-Bing_logo_%282013%29.svg.png + * for the icon. + */ +public class BingSearch extends BaseSearchEngine { + + public BingSearch() { + super("file:///android_asset/bing.png", Constants.BING_SEARCH); + // "http://upload.wikimedia.org/wikipedia/commons/thumb/b/b1/Bing_logo_%282013%29.svg/500px-Bing_logo_%282013%29.svg.png"; + } + +} diff --git a/app/src/main/java/acr/browser/lightning/search/engine/CustomSearch.java b/app/src/main/java/acr/browser/lightning/search/engine/CustomSearch.java new file mode 100644 index 0000000..fb7a170 --- /dev/null +++ b/app/src/main/java/acr/browser/lightning/search/engine/CustomSearch.java @@ -0,0 +1,14 @@ +package acr.browser.lightning.search.engine; + +import android.support.annotation.NonNull; + +/** + * A custom search engine. + */ +public class CustomSearch extends BaseSearchEngine { + + public CustomSearch(@NonNull String queryUrl) { + super("file:///android_asset/lightning.png", queryUrl); + } + +} diff --git a/app/src/main/java/acr/browser/lightning/search/engine/DuckLiteSearch.java b/app/src/main/java/acr/browser/lightning/search/engine/DuckLiteSearch.java new file mode 100644 index 0000000..81c2b31 --- /dev/null +++ b/app/src/main/java/acr/browser/lightning/search/engine/DuckLiteSearch.java @@ -0,0 +1,16 @@ +package acr.browser.lightning.search.engine; + +import acr.browser.lightning.constant.Constants; + +/** + * The DuckDuckGo Lite search engine. + *
+ * See https://duckduckgo.com/assets/logo_homepage.normal.v101.png for the icon. + */ +public class DuckLiteSearch extends BaseSearchEngine { + + public DuckLiteSearch() { + super("file:///android_asset/duckduckgo.png", Constants.DUCK_LITE_SEARCH); + } + +} diff --git a/app/src/main/java/acr/browser/lightning/search/engine/DuckSearch.java b/app/src/main/java/acr/browser/lightning/search/engine/DuckSearch.java new file mode 100644 index 0000000..cf9d85d --- /dev/null +++ b/app/src/main/java/acr/browser/lightning/search/engine/DuckSearch.java @@ -0,0 +1,16 @@ +package acr.browser.lightning.search.engine; + +import acr.browser.lightning.constant.Constants; + +/** + * The DuckDuckGo search engine. + *
+ * See https://duckduckgo.com/assets/logo_homepage.normal.v101.png for the icon. + */ +public class DuckSearch extends BaseSearchEngine { + + public DuckSearch() { + super("file:///android_asset/duckduckgo.png", Constants.DUCK_SEARCH); + } + +} diff --git a/app/src/main/java/acr/browser/lightning/search/engine/GoogleSearch.java b/app/src/main/java/acr/browser/lightning/search/engine/GoogleSearch.java new file mode 100644 index 0000000..ef08792 --- /dev/null +++ b/app/src/main/java/acr/browser/lightning/search/engine/GoogleSearch.java @@ -0,0 +1,15 @@ +package acr.browser.lightning.search.engine; + +import acr.browser.lightning.constant.Constants; + +/** + * The Google search engine. + *
+ * See https://www.google.com/images/srpr/logo11w.png for the icon. + */ +public class GoogleSearch extends BaseSearchEngine { + + public GoogleSearch() { + super("file:///android_asset/google.png", Constants.GOOGLE_SEARCH); + } +} diff --git a/app/src/main/java/acr/browser/lightning/search/engine/StartPageMobileSearch.java b/app/src/main/java/acr/browser/lightning/search/engine/StartPageMobileSearch.java new file mode 100644 index 0000000..e150874 --- /dev/null +++ b/app/src/main/java/acr/browser/lightning/search/engine/StartPageMobileSearch.java @@ -0,0 +1,14 @@ +package acr.browser.lightning.search.engine; + +import acr.browser.lightning.constant.Constants; + +/** + * The StartPage mobile search engine. + */ +public class StartPageMobileSearch extends BaseSearchEngine { + + public StartPageMobileSearch() { + super("file:///android_asset/startpage.png", Constants.STARTPAGE_MOBILE_SEARCH); + } + +} diff --git a/app/src/main/java/acr/browser/lightning/search/engine/StartPageSearch.java b/app/src/main/java/acr/browser/lightning/search/engine/StartPageSearch.java new file mode 100644 index 0000000..ef84bc1 --- /dev/null +++ b/app/src/main/java/acr/browser/lightning/search/engine/StartPageSearch.java @@ -0,0 +1,14 @@ +package acr.browser.lightning.search.engine; + +import acr.browser.lightning.constant.Constants; + +/** + * The StartPage search engine. + */ +public class StartPageSearch extends BaseSearchEngine { + + public StartPageSearch() { + super("file:///android_asset/startpage.png", Constants.STARTPAGE_SEARCH); + } + +} diff --git a/app/src/main/java/acr/browser/lightning/search/engine/YahooSearch.java b/app/src/main/java/acr/browser/lightning/search/engine/YahooSearch.java new file mode 100644 index 0000000..8bfec27 --- /dev/null +++ b/app/src/main/java/acr/browser/lightning/search/engine/YahooSearch.java @@ -0,0 +1,17 @@ +package acr.browser.lightning.search.engine; + +import acr.browser.lightning.constant.Constants; + +/** + * The Yahoo search engine. + *
+ * See http://upload.wikimedia.org/wikipedia/commons/thumb/2/24/Yahoo%21_logo.svg/799px-Yahoo%21_logo.svg.png + * for the icon. + */ +public class YahooSearch extends BaseSearchEngine { + + public YahooSearch() { + super("file:///android_asset/yahoo.png", Constants.YAHOO_SEARCH); + } + +} diff --git a/app/src/main/java/acr/browser/lightning/search/engine/YandexSearch.java b/app/src/main/java/acr/browser/lightning/search/engine/YandexSearch.java new file mode 100644 index 0000000..917fd63 --- /dev/null +++ b/app/src/main/java/acr/browser/lightning/search/engine/YandexSearch.java @@ -0,0 +1,17 @@ +package acr.browser.lightning.search.engine; + +import acr.browser.lightning.constant.Constants; + +/** + * The Yandex search engine. + *
+ * See http://upload.wikimedia.org/wikipedia/commons/thumb/9/91/Yandex.svg/600px-Yandex.svg.png + * for the icon. + */ +public class YandexSearch extends BaseSearchEngine { + + public YandexSearch() { + super("file:///android_asset/yandex.png", Constants.YANDEX_SEARCH); + } + +}