Browse Source

Improving the way search engines are handled

master
anthony restaino 8 years ago
parent
commit
e8e73ae488
  1. 45
      app/src/main/java/acr/browser/lightning/activity/BrowserActivity.java
  2. 3
      app/src/main/java/acr/browser/lightning/app/AppComponent.java
  3. 82
      app/src/main/java/acr/browser/lightning/constant/StartPage.java
  4. 64
      app/src/main/java/acr/browser/lightning/search/SearchEngineProvider.java
  5. 14
      app/src/main/java/acr/browser/lightning/search/engine/AskSearch.java
  6. 16
      app/src/main/java/acr/browser/lightning/search/engine/BaiduSearch.java
  7. 33
      app/src/main/java/acr/browser/lightning/search/engine/BaseSearchEngine.java
  8. 18
      app/src/main/java/acr/browser/lightning/search/engine/BingSearch.java
  9. 14
      app/src/main/java/acr/browser/lightning/search/engine/CustomSearch.java
  10. 16
      app/src/main/java/acr/browser/lightning/search/engine/DuckLiteSearch.java
  11. 16
      app/src/main/java/acr/browser/lightning/search/engine/DuckSearch.java
  12. 15
      app/src/main/java/acr/browser/lightning/search/engine/GoogleSearch.java
  13. 14
      app/src/main/java/acr/browser/lightning/search/engine/StartPageMobileSearch.java
  14. 14
      app/src/main/java/acr/browser/lightning/search/engine/StartPageSearch.java
  15. 17
      app/src/main/java/acr/browser/lightning/search/engine/YahooSearch.java
  16. 17
      app/src/main/java/acr/browser/lightning/search/engine/YandexSearch.java

45
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.animation.Transformation;
import android.view.inputmethod.EditorInfo; import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager;
import android.webkit.URLUtil;
import android.webkit.ValueCallback; import android.webkit.ValueCallback;
import android.webkit.WebChromeClient.CustomViewCallback; import android.webkit.WebChromeClient.CustomViewCallback;
import android.webkit.WebIconDatabase; import android.webkit.WebIconDatabase;
@ -110,7 +109,9 @@ import acr.browser.lightning.fragment.BookmarksFragment;
import acr.browser.lightning.fragment.TabsFragment; import acr.browser.lightning.fragment.TabsFragment;
import acr.browser.lightning.interpolator.BezierDecelerateInterpolator; import acr.browser.lightning.interpolator.BezierDecelerateInterpolator;
import acr.browser.lightning.receiver.NetworkReceiver; import acr.browser.lightning.receiver.NetworkReceiver;
import acr.browser.lightning.search.SearchEngineProvider;
import acr.browser.lightning.search.SuggestionsAdapter; import acr.browser.lightning.search.SuggestionsAdapter;
import acr.browser.lightning.search.engine.BaseSearchEngine;
import acr.browser.lightning.utils.DrawableUtils; import acr.browser.lightning.utils.DrawableUtils;
import acr.browser.lightning.utils.IntentUtils; import acr.browser.lightning.utils.IntentUtils;
import acr.browser.lightning.utils.Preconditions; import acr.browser.lightning.utils.Preconditions;
@ -192,6 +193,8 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements
@Inject SearchBoxModel mSearchBoxModel; @Inject SearchBoxModel mSearchBoxModel;
@Inject SearchEngineProvider mSearchEngineProvider;
private TabsManager mTabsManager; private TabsManager mTabsManager;
// Image // Image
@ -657,44 +660,8 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements
setFullscreen(mPreferences.getHideStatusBarEnabled(), false); setFullscreen(mPreferences.getHideStatusBarEnabled(), false);
switch (mPreferences.getSearchChoice()) { BaseSearchEngine currentSearchEngine = mSearchEngineProvider.getCurrentSearchEngine();
case 0: mSearchText = currentSearchEngine.getQueryUrl();
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;
}
updateCookiePreference().subscribeOn(Schedulers.worker()).subscribe(); updateCookiePreference().subscribeOn(Schedulers.worker()).subscribe();
mProxyUtils.updateProxySettings(this); mProxyUtils.updateProxySettings(this);

3
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.LightningPreferenceFragment;
import acr.browser.lightning.fragment.PrivacySettingsFragment; import acr.browser.lightning.fragment.PrivacySettingsFragment;
import acr.browser.lightning.fragment.TabsFragment; import acr.browser.lightning.fragment.TabsFragment;
import acr.browser.lightning.search.SearchEngineProvider;
import acr.browser.lightning.search.SuggestionsAdapter; import acr.browser.lightning.search.SuggestionsAdapter;
import acr.browser.lightning.utils.ProxyUtils; import acr.browser.lightning.utils.ProxyUtils;
import acr.browser.lightning.view.LightningChromeClient; import acr.browser.lightning.view.LightningChromeClient;
@ -85,4 +86,6 @@ public interface AppComponent {
void inject(SearchBoxModel searchBoxModel); void inject(SearchBoxModel searchBoxModel);
void inject(SearchEngineProvider searchEngineProvider);
} }

82
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.R;
import acr.browser.lightning.app.BrowserApp; 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; import acr.browser.lightning.utils.Utils;
public class StartPage { public class StartPage {
@ -62,7 +63,7 @@ public class StartPage {
@NonNull private final String mTitle; @NonNull private final String mTitle;
@Inject Application mApp; @Inject Application mApp;
@Inject PreferenceManager mPreferenceManager; @Inject SearchEngineProvider mSearchEngineProvider;
public StartPage() { public StartPage() {
BrowserApp.getAppComponent().inject(this); BrowserApp.getAppComponent().inject(this);
@ -76,80 +77,11 @@ public class StartPage {
public void onSubscribe(@NonNull SingleSubscriber<String> subscriber) { public void onSubscribe(@NonNull SingleSubscriber<String> subscriber) {
StringBuilder homepageBuilder = new StringBuilder(HEAD_1 + mTitle + HEAD_2); StringBuilder homepageBuilder = new StringBuilder(HEAD_1 + mTitle + HEAD_2);
String icon;
String searchUrl;
switch (mPreferenceManager.getSearchChoice()) {
case 0:
// CUSTOM SEARCH
icon = "file:///android_asset/lightning.png";
searchUrl = mPreferenceManager.getSearchUrl();
break;
case 1:
// GOOGLE_SEARCH;
icon = "file:///android_asset/google.png";
// "https://www.google.com/images/srpr/logo11w.png";
searchUrl = Constants.GOOGLE_SEARCH;
break;
case 2:
// ANDROID SEARCH;
icon = "file:///android_asset/ask.png";
searchUrl = Constants.ASK_SEARCH;
break;
case 3:
// BING_SEARCH;
icon = "file:///android_asset/bing.png";
// "http://upload.wikimedia.org/wikipedia/commons/thumb/b/b1/Bing_logo_%282013%29.svg/500px-Bing_logo_%282013%29.svg.png";
searchUrl = Constants.BING_SEARCH;
break;
case 4:
// YAHOO_SEARCH;
icon = "file:///android_asset/yahoo.png";
// "http://upload.wikimedia.org/wikipedia/commons/thumb/2/24/Yahoo%21_logo.svg/799px-Yahoo%21_logo.svg.png";
searchUrl = Constants.YAHOO_SEARCH;
break;
case 5:
// STARTPAGE_SEARCH;
icon = "file:///android_asset/startpage.png";
// "https://com/graphics/startp_logo.gif";
searchUrl = Constants.STARTPAGE_SEARCH;
break;
case 6:
// STARTPAGE_MOBILE
icon = "file:///android_asset/startpage.png";
// "https://com/graphics/startp_logo.gif";
searchUrl = Constants.STARTPAGE_MOBILE_SEARCH;
break;
case 7:
// DUCK_SEARCH;
icon = "file:///android_asset/duckduckgo.png";
// "https://duckduckgo.com/assets/logo_homepage.normal.v101.png";
searchUrl = Constants.DUCK_SEARCH;
break;
case 8:
// DUCK_LITE_SEARCH;
icon = "file:///android_asset/duckduckgo.png";
// "https://duckduckgo.com/assets/logo_homepage.normal.v101.png";
searchUrl = Constants.DUCK_LITE_SEARCH;
break;
case 9:
// BAIDU_SEARCH;
icon = "file:///android_asset/baidu.png";
// "http://www.baidu.com/img/bdlogo.gif";
searchUrl = Constants.BAIDU_SEARCH;
break;
case 10:
// YANDEX_SEARCH;
icon = "file:///android_asset/yandex.png";
// "http://upload.wikimedia.org/wikipedia/commons/thumb/9/91/Yandex.svg/600px-Yandex.svg.png";
searchUrl = Constants.YANDEX_SEARCH;
break;
default:
// DEFAULT GOOGLE_SEARCH;
icon = "file:///android_asset/google.png";
searchUrl = Constants.GOOGLE_SEARCH;
break;
} BaseSearchEngine currentSearchEngine = mSearchEngineProvider.getCurrentSearchEngine();
String icon = currentSearchEngine.getIconUrl();
String searchUrl = currentSearchEngine.getQueryUrl();
homepageBuilder.append(icon); homepageBuilder.append(icon);
homepageBuilder.append(MIDDLE); homepageBuilder.append(MIDDLE);

64
app/src/main/java/acr/browser/lightning/search/SearchEngineProvider.java

@ -0,0 +1,64 @@
package acr.browser.lightning.search;
import android.support.annotation.NonNull;
import javax.inject.Inject;
import acr.browser.lightning.app.BrowserApp;
import acr.browser.lightning.preference.PreferenceManager;
import acr.browser.lightning.search.engine.AskSearch;
import acr.browser.lightning.search.engine.BaiduSearch;
import acr.browser.lightning.search.engine.BaseSearchEngine;
import acr.browser.lightning.search.engine.BingSearch;
import acr.browser.lightning.search.engine.CustomSearch;
import acr.browser.lightning.search.engine.DuckLiteSearch;
import acr.browser.lightning.search.engine.DuckSearch;
import acr.browser.lightning.search.engine.GoogleSearch;
import acr.browser.lightning.search.engine.StartPageMobileSearch;
import acr.browser.lightning.search.engine.StartPageSearch;
import acr.browser.lightning.search.engine.YahooSearch;
import acr.browser.lightning.search.engine.YandexSearch;
/**
* The model that provides the search engine based
* on the user's preference.
*/
public class SearchEngineProvider {
@Inject PreferenceManager mPreferenceManager;
@Inject
public SearchEngineProvider() {
BrowserApp.getAppComponent().inject(this);
}
@NonNull
public BaseSearchEngine getCurrentSearchEngine() {
switch (mPreferenceManager.getSearchChoice()) {
case 0:
return new CustomSearch(mPreferenceManager.getSearchUrl());
case 1:
default:
return new GoogleSearch();
case 2:
return new AskSearch();
case 3:
return new BingSearch();
case 4:
return new YahooSearch();
case 5:
return new StartPageSearch();
case 6:
return new StartPageMobileSearch();
case 7:
return new DuckSearch();
case 8:
return new DuckLiteSearch();
case 9:
return new BaiduSearch();
case 10:
return new YandexSearch();
}
}
}

14
app/src/main/java/acr/browser/lightning/search/engine/AskSearch.java

@ -0,0 +1,14 @@
package acr.browser.lightning.search.engine;
import acr.browser.lightning.constant.Constants;
/**
* The Ask search engine.
*/
public class AskSearch extends BaseSearchEngine {
public AskSearch() {
super("file:///android_asset/ask.png", Constants.ASK_SEARCH);
}
}

16
app/src/main/java/acr/browser/lightning/search/engine/BaiduSearch.java

@ -0,0 +1,16 @@
package acr.browser.lightning.search.engine;
import acr.browser.lightning.constant.Constants;
/**
* The Baidu search engine.
* <p>
* 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);
}
}

33
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;
}
}

18
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.
* <p>
* 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";
}
}

14
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);
}
}

16
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.
* <p>
* 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);
}
}

16
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.
* <p>
* 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);
}
}

15
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.
* <p>
* 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);
}
}

14
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);
}
}

14
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);
}
}

17
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.
* <p>
* 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);
}
}

17
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.
* <p>
* 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);
}
}
Loading…
Cancel
Save