Skip to content
Draft
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "firefox-jp.png",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ enum NimbusFeatureFlagID: String, CaseIterable {
case downloadLiveActivities
case feltPrivacyFeltDeletion
case feltPrivacySimplifiedUI
case firefoxJpGuideDefaultSite
case firefoxSuggestFeature
case hntSponsoredShortcuts
case hntTopSitesVisualRefresh
Expand Down Expand Up @@ -150,6 +151,7 @@ struct NimbusFlaggableFeature: HasNimbusSearchBar {
.downloadLiveActivities,
.feltPrivacyFeltDeletion,
.feltPrivacySimplifiedUI,
.firefoxJpGuideDefaultSite,
.hntTopSitesVisualRefresh,
.homepageRebuild,
.homepageRedesign,
Expand Down
7 changes: 7 additions & 0 deletions firefox-ios/Client/Nimbus/NimbusFeatureFlagLayer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ final class NimbusFeatureFlagLayer: Sendable {
case .downloadLiveActivities:
return checkDownloadLiveActivitiesFeature(from: nimbus)

case .firefoxJpGuideDefaultSite:
return checkFirefoxJpGuideDefaultSiteFeature(from: nimbus)

case .firefoxSuggestFeature:
return checkFirefoxSuggestFeature(from: nimbus)

Expand Down Expand Up @@ -433,6 +436,10 @@ final class NimbusFeatureFlagLayer: Sendable {
return nimbus.features.downloadLiveActivitiesFeature.value().enabled
}

private func checkFirefoxJpGuideDefaultSiteFeature(from nimbus: FxNimbus) -> Bool {
return nimbus.features.firefoxJpGuideDefaultSite.value().enabled
}

private func checkFirefoxSuggestFeature(from nimbus: FxNimbus) -> Bool {
let config = nimbus.features.firefoxSuggestFeature.value()

Expand Down
18 changes: 16 additions & 2 deletions firefox-ios/Providers/TopSitesProvider.swift
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ extension TopSitesProvider {
}

// TODO: FXIOS-13706 TopSitesProviderImplementation should be concurrency safe
class TopSitesProviderImplementation: @MainActor TopSitesProvider, @unchecked Sendable {
class TopSitesProviderImplementation: @MainActor TopSitesProvider, FeatureFlaggable, @unchecked Sendable {
private let pinnedSiteFetcher: PinnedSites
private let placesFetcher: RustPlaces
private let prefs: Prefs
Expand Down Expand Up @@ -73,10 +73,24 @@ class TopSitesProviderImplementation: @MainActor TopSitesProvider, @unchecked Se
}

func defaultTopSites(_ prefs: Prefs) -> [Site] {
let suggested = DefaultSuggestedSites.defaultSites()
var suggested = DefaultSuggestedSites.defaultSites()

if shouldExcludeFirefoxJpGuide() {
/// Assumes the Firefox Japanese Guide is the first default site in the list in the `ja_JP` locale in
/// `DefaultSuggestedSites.swift`
suggested.remove(at: 0)
}

let deleted = prefs.arrayForKey(defaultSuggestedSitesKey) as? [String] ?? []
return suggested.filter({ deleted.firstIndex(of: $0.url) == .none })
}

private func shouldExcludeFirefoxJpGuide() -> Bool {
let isFirefoxJpGuideDefaultSiteEnabled = featureFlags.isFeatureEnabled(.firefoxJpGuideDefaultSite,
checking: .buildOnly)
let locale = Locale.current
return locale.identifier == "ja_JP" && !isFirefoxJpGuideDefaultSiteEnabled
}
}

// MARK: Private
Expand Down
27 changes: 18 additions & 9 deletions firefox-ios/Storage/DefaultSuggestedSites.swift
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,15 @@ open class DefaultSuggestedSites {
)
],
"ja_JP": [
Site.createSuggestedSite(
url: "https://mzl.la/4nJ5E8m",
title: "Firefoxガイド",
trackingId: 804,
faviconResource: .bundleAsset(
name: "firefox-jp",
forRemoteResource: URL(string: "https://www.firefox.com/media/img/favicons/firefox/browser/apple-touch-icon.79c2abeb4e35.png")!
)
),
Site.createSuggestedSite(
url: "https://tenki.jp/",
title: "tenki.jp",
Expand All @@ -139,15 +148,6 @@ open class DefaultSuggestedSites {
forRemoteResource: URL(string: "https://static.tenki.jp/images/icon/bookmark/tenkijp_bookmark_icon_114_114.png")!
)
),
Site.createSuggestedSite(
url: "https://ameblo.jp/",
title: "Amebaブログ",
trackingId: 801,
faviconResource: .bundleAsset(
name: "ameblo",
forRemoteResource: URL(string: "https://stat100.ameba.jp/common_style/img/sp/apple-touch-icon.png")!
)
),
Site.createSuggestedSite(
url: "https://m.yahoo.co.jp/",
title: "Yahoo! JAPAN",
Expand All @@ -157,6 +157,15 @@ open class DefaultSuggestedSites {
forRemoteResource: URL(string: "https://s.yimg.jp/c/icon/s/bsc/2.0/y120.png")!
)
),
Site.createSuggestedSite(
url: "https://ameblo.jp/",
title: "Amebaブログ",
trackingId: 801,
faviconResource: .bundleAsset(
name: "ameblo",
forRemoteResource: URL(string: "https://stat100.ameba.jp/common_style/img/sp/apple-touch-icon.png")!
)
),
Site.createSuggestedSite(
url: "https://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8",
title: "ウィキペディア",
Expand Down
20 changes: 20 additions & 0 deletions firefox-ios/nimbus-features/firefoxJpGuideDefaultSite.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# The configuration for the firefoxJpGuideDefaultSite feature
features:
firefox-jp-guide-default-site:
description: >
This feature is for managing the visibility of the Firefox Japanese Guide default suggested site shortcut
variables:
enabled:
description: >
Enables the feature.
type: Boolean
default: false

defaults:
- channel: beta
value:
enabled: false

- channel: developer
value:
enabled: true
1 change: 1 addition & 0 deletions firefox-ios/nimbus.fml.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ include:
- nimbus-features/menuRefactorFeature.yaml
- nimbus-features/messagingFeature.yaml
- nimbus-features/microsurveyFeature.yaml
- nimbus-features/firefoxJpGuideDefaultSite.yaml
- nimbus-features/nativeErrorPageFeature.yaml
- nimbus-features/newAddressBarMenu.yaml
- nimbus-features/newAppearanceMenu.yaml
Expand Down