Skip to content
This repository has been archived by the owner on May 10, 2024. It is now read-only.

Fix #3177: Update pre-populated search engine list #3189

Merged
merged 2 commits into from
Jan 13, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions Client/Assets/SearchPlugins/ecosia.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->

<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
<ShortName>Ecosia</ShortName>
<InputEncoding>UTF-8</InputEncoding>
<Image width="16" height="16">data:image/png;base64,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</Image>
<Url type="text/html" method="get" template="https://www.ecosia.org/search" >
<Param name="q" value="{searchTerms}"/>
<Param name="tt" value="d188c5da"/>
</Url>
<Url type="application/x-suggestions+json" template="https://ac.ecosia.org/autocomplete" >
<Param name="q" value="{searchTerms}"/>
<Param name="type" value="list"/>
</Url>
<SearchForm>https://www.ecosia.org</SearchForm>
</SearchPlugin>
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ class OnboardingSearchEnginesViewController: OnboardingViewController {
}

private lazy var availableEngines: [OpenSearchEngine] = {
SearchEngines.getUnorderedBundledEnginesFor()
SearchEngines.getUnorderedBundledEngines(isOnboarding: true)
}()

private var contentView: View {
Expand Down
35 changes: 27 additions & 8 deletions Client/Frontend/Browser/Search/InitialSearchEngines.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,16 @@ import Foundation
class InitialSearchEngines {
/// Type of search engine available to the user.
enum SearchEngineID: String {
case google, bing, duckduckgo, yandex, qwant, startpage, yahoo
case google, bing, duckduckgo, yandex, qwant, startpage, yahoo, ecosia

var excludedFromOnboarding: Bool {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This property is temporary right until we remove the yahoo engine totally ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we can keep it, if we add a lot of predefined search engines in the future we can choose which of them to show during onboarding, to avoid having a long list of search engines

switch self {
case .google, .bing, .duckduckgo, .yandex, .qwant, .startpage, .ecosia:
return false
case .yahoo:
return true
}
}
}

struct SearchEngine: Equatable, CustomStringConvertible {
Expand Down Expand Up @@ -39,9 +48,15 @@ class InitialSearchEngines {
/// List of available engines for given locale. This list is sorted by with priority and default engines at the top.
var engines: [SearchEngine]

/// Lists of engines available during onboarding.
var onboardingEngines: [SearchEngine] {
engines.filter { !$0.id.excludedFromOnboarding }
}

static let ddgDefaultRegions = ["DE", "AU", "NZ", "IE"]
static let qwantDefaultRegions = ["FR"]
static let yandexDefaultRegions = ["AM", "AZ", "BY", "KG", "KZ", "MD", "RU", "TJ", "TM", "TZ"]
static let ecosiaDefaultRegions = ["US", "GB", "FR", "DE", "NL", "BE", "CH", "SE"]
static let yahooEligibleRegions =
["GB", "US", "AR", "AT", "AU", "BR", "CA", "CH", "CL", "CO", "DE", "DK", "ES", "FI", "FR", "HK",
"ID", "IE", "IN", "IT", "MX", "MY", "NL", "NO", "NZ", "PE", "PH", "SE", "SG", "TH", "TW", "VE", "VN"]
Expand Down Expand Up @@ -119,16 +134,20 @@ class InitialSearchEngines {
if Self.yandexDefaultRegions.contains(region) {
defaultSearchEngine = .yandex
}
}

private func priorityOverrides() {
guard let region = locale.regionCode else { return }
if Self.ecosiaDefaultRegions.contains(region) {
replaceOrInsert(engineId: .ecosia, customId: nil)
}

if Self.yahooEligibleRegions.contains(region) {
priorityEngine = .yahoo
replaceOrInsert(engineId: .yahoo, customId: nil)
}
}

private func priorityOverrides() {
// No priority engines are live at the moment.
soner-yuksel marked this conversation as resolved.
Show resolved Hide resolved
}

// MARK: - Helpers

private func sortEngines() {
Expand All @@ -137,8 +156,8 @@ class InitialSearchEngines {
.sorted { e, _ in e.id == priorityEngine }
}

private func replaceOrInsert(engineId: SearchEngineID, customId: String) {
guard let engineIndex = engines.firstIndex(of: .init(id: engineId)) else {
private func replaceOrInsert(engineId: SearchEngineID, customId: String?) {
guard let engineIndex = engines.firstIndex(where: { $0.id == engineId }) else {
engines.append(.init(id: engineId, customId: customId))
return
}
Expand Down
8 changes: 5 additions & 3 deletions Client/Frontend/Browser/Search/SearchEngines.swift
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,8 @@ class SearchEngines {

/// Get all bundled (not custom) search engines, with the default search engine first,
/// but the others in no particular order.
class func getUnorderedBundledEnginesFor(selected: [String] = []) -> [OpenSearchEngine] {
class func getUnorderedBundledEngines(for selectedEngines: [String] = [],
isOnboarding: Bool) -> [OpenSearchEngine] {
let parser = OpenSearchParser(pluginMode: true)

guard let pluginDirectory = Bundle.main.resourceURL?.appendingPathComponent("SearchPlugins") else {
Expand All @@ -259,7 +260,8 @@ class SearchEngines {
}

let se = InitialSearchEngines()
let engineNames = se.engines.map { $0.customId ?? $0.id.rawValue }
let engines = isOnboarding ? se.onboardingEngines : se.engines
let engineNames = engines.map { $0.customId ?? $0.id.rawValue }
assert(engineNames.count > 0, "No search engines")

return engineNames.map({ (name: $0, path: pluginDirectory.appendingPathComponent("\($0).xml").path) })
Expand All @@ -271,7 +273,7 @@ class SearchEngines {
fileprivate func getOrderedEngines() -> [OpenSearchEngine] {
let selectedSearchEngines = [Preferences.Search.defaultEngineName, Preferences.Search.defaultPrivateEngineName].compactMap { $0.value }
let unorderedEngines = customEngines
+ SearchEngines.getUnorderedBundledEnginesFor(selected: selectedSearchEngines)
+ SearchEngines.getUnorderedBundledEngines(for: selectedSearchEngines, isOnboarding: false)

// might not work to change the default.
guard let orderedEngineNames = Preferences.Search.orderedEngines.value else {
Expand Down
Loading