Skip to content

Commit

Permalink
Merge branch 'main' into fcappelli/subscription_oauth_api_v2
Browse files Browse the repository at this point in the history
# Conflicts:
#	DuckDuckGo.xcodeproj/project.pbxproj
#	DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
#	DuckDuckGo/Feedback/VPNMetadataCollector.swift
  • Loading branch information
federicocappelli committed Nov 4, 2024
2 parents c78a9c2 + 4390003 commit c021b95
Show file tree
Hide file tree
Showing 138 changed files with 16,383 additions and 3,745 deletions.
33 changes: 33 additions & 0 deletions .github/workflows/promote_testflight.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Promote TestFlight to App Store

on:
workflow_dispatch: {}

jobs:
promote-testflight-to-appstore:
runs-on: macos-14

steps:
- name: Check out the code
uses: actions/checkout@v4
with:
ref: ${{ github.ref_name }}
sparse-checkout: |
.github
Gemfile
Gemfile.lock
fastlane
scripts
- name: Set up fastlane
run: bundle install

- name: Promote TestFlight to App Store
env:
APPLE_API_KEY_BASE64: ${{ secrets.APPLE_API_KEY_BASE64 }}
APPLE_API_KEY_ID: ${{ secrets.APPLE_API_KEY_ID }}
APPLE_API_KEY_ISSUER: ${{ secrets.APPLE_API_KEY_ISSUER }}
run: |
git config --global user.name "Dax the Duck"
git config --global user.email "[email protected]"
bundle exec fastlane promote_latest_testflight_to_appstore
5 changes: 2 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ on:
destination:
description: "Upload destination (App Store or TestFlight)"
required: true
default: appstore
default: testflight
type: choice
options:
- appstore
Expand Down Expand Up @@ -36,10 +36,9 @@ jobs:
id: destination
run: |
INPUT_DESTINATION=${{ github.event.inputs.destination }}
echo "destination=${INPUT_DESTINATION:-"appstore"}" >> $GITHUB_OUTPUT
echo "destination=${INPUT_DESTINATION:-"testflight"}" >> $GITHUB_OUTPUT
- name: Assert release branch
if: steps.destination.outputs.destination == 'appstore'
run: |
case "${{ github.ref }}" in
*release/*) ;;
Expand Down
2 changes: 1 addition & 1 deletion Configuration/Version.xcconfig
Original file line number Diff line number Diff line change
@@ -1 +1 @@
MARKETING_VERSION = 7.142.0
MARKETING_VERSION = 7.143.0
4 changes: 2 additions & 2 deletions Core/AppPrivacyConfigurationDataProvider.swift
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ import BrowserServicesKit
final public class AppPrivacyConfigurationDataProvider: EmbeddedDataProvider {

public struct Constants {
public static let embeddedDataETag = "\"6098a36b63dcb92404871b8b6c92a46e\""
public static let embeddedDataSHA = "a72538e90ef1aba77d30dde1379e7344fe9f3ca1655796c9b555bed412daa205"
public static let embeddedDataETag = "\"f8b9cfd5f1eb7b77c21d4476f85bd177\""
public static let embeddedDataSHA = "c26c97714d73a9e1e99dbd341d5890da42b49d34a296672be3d3cea00bdd37a0"
}

public var embeddedDataEtag: String {
Expand Down
3 changes: 3 additions & 0 deletions Core/FeatureFlag.swift
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ public enum FeatureFlag: String {
case syncPromotionBookmarks
case syncPromotionPasswords
case onboardingHighlights
case onboardingAddToDock
case autofillSurveys
case autcompleteTabs

Expand Down Expand Up @@ -94,6 +95,8 @@ extension FeatureFlag: FeatureFlagSourceProviding {
return .remoteReleasable(.subfeature(SyncPromotionSubfeature.passwords))
case .onboardingHighlights:
return .internalOnly
case .onboardingAddToDock:
return .internalOnly
case .autofillSurveys:
return .remoteReleasable(.feature(.autofillSurveys))
case .autcompleteTabs:
Expand Down
4 changes: 4 additions & 0 deletions Core/HistoryManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,10 @@ class NullHistoryCoordinator: HistoryCoordinating {
completion()
}

func removeUrlEntry(_ url: URL, completion: (((any Error)?) -> Void)?) {
completion?(nil)
}

}

public class HistoryDatabase {
Expand Down
45 changes: 31 additions & 14 deletions Core/PixelEvent.swift
Original file line number Diff line number Diff line change
Expand Up @@ -460,6 +460,8 @@ extension Pixel {
case networkProtectionConfigurationInvalidPayload(configuration: Configuration)
case networkProtectionConfigurationPixelTest

case networkProtectionMalformedErrorDetected

// MARK: remote messaging pixels

case remoteMessageShown
Expand Down Expand Up @@ -708,6 +710,11 @@ extension Pixel {
case privacyProTransactionProgressNotHiddenAfter60s
case privacyProSuccessfulSubscriptionAttribution
case privacyProKeychainAccessError
case privacyProSubscriptionCookieMissingTokenOnSignIn
case privacyProSubscriptionCookieMissingCookieOnSignOut
case privacyProSubscriptionCookieRefreshedWithAccessToken
case privacyProSubscriptionCookieRefreshedWithEmptyValue
case privacyProSubscriptionCookieFailedToSetSubscriptionCookie

// MARK: Pixel Experiment
case pixelExperimentEnrollment
Expand Down Expand Up @@ -788,11 +795,16 @@ extension Pixel {
case duckPlayerViewFromSERP
case duckPlayerViewFromOther
case duckPlayerOverlayYoutubeImpressions
case duckPlayerLandscapeLayoutImpressions
case duckPlayerOverlayYoutubeWatchHere
case duckPlayerSettingAlwaysDuckPlayer
case duckPlayerSettingAlwaysSettings
case duckPlayerSettingNeverSettings
case duckPlayerSettingBackToDefault
case duckPlayerSettingsAlwaysOverlaySERP
case duckPlayerSettingsAlwaysOverlayYoutube
case duckPlayerSettingsNeverOverlaySERP
case duckPlayerSettingsNeverOverlayYoutube
case duckPlayerWatchOnYoutube
case duckPlayerSettingAlwaysOverlayYoutube
case duckPlayerSettingNeverOverlayYoutube
Expand Down Expand Up @@ -820,13 +832,9 @@ extension Pixel {
case pproFeedbackSubcategoryScreenShow(source: String, reportType: String, category: String)
case pproFeedbackSubmitScreenShow(source: String, reportType: String, category: String, subcategory: String)
case pproFeedbackSubmitScreenFAQClick(source: String, reportType: String, category: String, subcategory: String)

// MARK: DuckPlayer Pixel Experiment
case duckplayerExperimentCohortAssign
case duckplayerExperimentSearch
case duckplayerExperimentDailySearch
case duckplayerExperimentWeeklySearch
case duckplayerExperimentYoutubePageView

// MARK: WebView Error Page Shown
case webViewErrorPageShown
}

}
Expand Down Expand Up @@ -1257,6 +1265,8 @@ extension Pixel.Event {
case .networkProtectionConfigurationInvalidPayload(let config): return "m_netp_vpn_configuration_\(config.rawValue)_invalid_payload"
case .networkProtectionConfigurationPixelTest: return "m_netp_vpn_configuration_pixel_test"

case .networkProtectionMalformedErrorDetected: return "m_netp_vpn_malformed_error_detected"

// MARK: remote messaging pixels

case .remoteMessageShown: return "m_remote_message_shown"
Expand Down Expand Up @@ -1517,6 +1527,11 @@ extension Pixel.Event {
case .privacyProTransactionProgressNotHiddenAfter60s: return "m_privacy-pro_progress_not_hidden_after_60s"
case .privacyProSuccessfulSubscriptionAttribution: return "m_subscribe"
case .privacyProKeychainAccessError: return "m_privacy-pro_keychain_access_error"
case .privacyProSubscriptionCookieMissingTokenOnSignIn: return "m_privacy-pro_subscription-cookie-missing_token_on_sign_in"
case .privacyProSubscriptionCookieMissingCookieOnSignOut: return "m_privacy-pro_subscription-cookie-missing_cookie_on_sign_out"
case .privacyProSubscriptionCookieRefreshedWithAccessToken: return "m_privacy-pro_subscription-cookie-refreshed_with_access_token"
case .privacyProSubscriptionCookieRefreshedWithEmptyValue: return "m_privacy-pro_subscription-cookie-refreshed_with_empty_value"
case .privacyProSubscriptionCookieFailedToSetSubscriptionCookie: return "m_privacy-pro_subscription-cookie-failed_to_set_subscription_cookie"

// MARK: Pixel Experiment
case .pixelExperimentEnrollment: return "pixel_experiment_enrollment"
Expand Down Expand Up @@ -1609,6 +1624,10 @@ extension Pixel.Event {
case .duckPlayerViewFromOther: return "duckplayer_view-from_other"
case .duckPlayerSettingAlwaysSettings: return "duckplayer_setting_always_settings"
case .duckPlayerSettingAlwaysDuckPlayer: return "duckplayer_setting_always_duck-player"
case .duckPlayerSettingsAlwaysOverlaySERP: return "duckplayer_setting_always_overlay_serp"
case .duckPlayerSettingsAlwaysOverlayYoutube: return "duckplayer_setting_always_overlay_youtube"
case .duckPlayerSettingsNeverOverlaySERP: return "duckplayer_setting_never_overlay_serp"
case .duckPlayerSettingsNeverOverlayYoutube: return "duckplayer_setting_never_overlay_youtube"
case .duckPlayerOverlayYoutubeImpressions: return "duckplayer_overlay_youtube_impressions"
case .duckPlayerOverlayYoutubeWatchHere: return "duckplayer_overlay_youtube_watch_here"
case .duckPlayerSettingNeverSettings: return "duckplayer_setting_never_settings"
Expand Down Expand Up @@ -1642,13 +1661,11 @@ extension Pixel.Event {
case .pproFeedbackSubmitScreenShow: return "m_ppro_feedback_submit-screen_show"
case .pproFeedbackSubmitScreenFAQClick: return "m_ppro_feedback_submit-screen-faq_click"

// MARK: Duckplayer experiment
case .duckplayerExperimentCohortAssign: return "duckplayer_experiment_cohort_assign_v2"
case .duckplayerExperimentSearch: return "duckplayer_experiment_search_v2"
case .duckplayerExperimentDailySearch: return "duckplayer_experiment_daily_search_v2"
case .duckplayerExperimentWeeklySearch: return "duckplayer_experiment_weekly_search_v2"
case .duckplayerExperimentYoutubePageView: return "duckplayer_experiment_youtube_page_view_v2"

// MARK: - WebView Error Page shown
case .webViewErrorPageShown: return "m_errorpageshown"

// MARK: - DuckPlayer FE Application Telemetry
case .duckPlayerLandscapeLayoutImpressions: return "duckplayer_landscape_layout_impressions"
}
}
}
Expand Down
7 changes: 5 additions & 2 deletions Core/UserDefaultsPropertyWrapper.swift
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,8 @@ public struct UserDefaultsWrapper<T> {
// Debug keys
case debugNewTabPageSectionsEnabledKey = "com.duckduckgo.ios.debug.newTabPageSectionsEnabled"
case debugOnboardingHighlightsEnabledKey = "com.duckduckgo.ios.debug.onboardingHighlightsEnabled"

case debugOnboardingAddToDockEnabledKey = "com.duckduckgo.ios.debug.onboardingAddToDockEnabled"

// Duck Player Pixel Experiment
case duckPlayerPixelExperimentInstalled = "com.duckduckgo.ios.duckplayer.pixel.experiment.installed.v2"
case duckPlayerPixelExperimentCohort = "com.duckduckgo.ios.duckplayer.pixel.experiment.cohort.v2"
Expand All @@ -180,7 +181,9 @@ public struct UserDefaultsWrapper<T> {
case duckPlayerPixelExperimentLastDayPixelFired = "com.duckduckgo.ios.duckplayer.pixel.experiment.last.day.pixel.fired.v2"
case duckPlayerPixelExperimentLastVideoIDRendered = "com.duckduckgo.ios.duckplayer.pixel.experiment.last.videoID.rendered.v2"
case duckPlayerPixelExperimentOverride = "com.duckduckgo.ios.duckplayer.pixel.experiment.override.v2"


// TipKit
case resetTipKitOnNextLaunch = "com.duckduckgo.ios.tipKit.resetOnNextLaunch"
}

private let key: Key
Expand Down
57 changes: 48 additions & 9 deletions Core/ios-config.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"readme": "https://github.com/duckduckgo/privacy-configuration",
"version": 1729265730687,
"version": 1730109523334,
"features": {
"adClickAttribution": {
"readme": "https://help.duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/#3rd-party-tracker-loading-protection",
Expand Down Expand Up @@ -360,6 +360,9 @@
{
"domain": "speedweek.com"
},
{
"domain": "la-becanerie.com"
},
{
"domain": "marvel.com"
},
Expand Down Expand Up @@ -404,7 +407,7 @@
}
}
},
"hash": "fba0eeeda60051f6354cf5d26c1e1a63"
"hash": "8392e127a3bcaee5c2913df355a7d254"
},
"autofillBreakageReporter": {
"state": "enabled",
Expand Down Expand Up @@ -499,12 +502,15 @@
"steps": [
{
"percent": 10
},
{
"percent": 50
}
]
}
}
},
"hash": "75ff21cf9a4181783c06965edd6fe746"
"hash": "9de8e4b066aa23f7c20ca638ee0d9f1a"
},
"bookmarks": {
"state": "enabled",
Expand Down Expand Up @@ -1333,14 +1339,22 @@
{
"domain": "flexmls.com"
},
{
"domain": "humana.com"
},
{
"domain": "instructure.com"
},
{
"domain": "centerwellpharmacy.com"
}
],
"hash": "b4eff737bff7f262ceb567b735e1cc41"
"hash": "980bf875526f3cc7892c001a7d2e5a74"
},
"contextualOnboarding": {
"exceptions": [],
"state": "disabled",
"hash": "728493ef7a1488e4781656d3f9db84aa"
},
"cookie": {
"settings": {
Expand Down Expand Up @@ -1428,6 +1442,10 @@
{
"domain": "xfinity.com",
"reason": "https://github.com/duckduckgo/privacy-configuration/pull/2149"
},
{
"domain": "ihg.com",
"reason": "https://github.com/duckduckgo/privacy-configuration/pull/2383"
}
],
"ddgDefaultSites": [
Expand All @@ -1448,13 +1466,16 @@
},
{
"domain": "xfinity.com"
},
{
"domain": "ihg.com"
}
],
"omitVersionSites": []
},
"exceptions": [],
"state": "enabled",
"hash": "2ed8c3ccd40db2d9dca1e7ecc4231045"
"hash": "e577ccb473bdb7ada49c4d3c6e79cf01"
},
"dbp": {
"state": "disabled",
Expand Down Expand Up @@ -1482,7 +1503,7 @@
"state": "disabled"
},
"openInNewTab": {
"state": "disabled"
"state": "internal"
},
"enableDuckPlayer": {
"state": "enabled",
Expand Down Expand Up @@ -1575,7 +1596,7 @@
]
},
"state": "enabled",
"hash": "7f82d68f07b3e2aaac1b89725c1d379e"
"hash": "c21895584fc5a38e4290c7941ec7d5f8"
},
"elementHiding": {
"exceptions": [
Expand Down Expand Up @@ -5324,6 +5345,9 @@
{
"domain": "dollargeneral.com"
},
{
"domain": "milesplit.live"
},
{
"domain": "monsterenergy.com"
},
Expand Down Expand Up @@ -5361,7 +5385,7 @@
"privacy-test-pages.site"
]
},
"hash": "be142a65e913cf958af67e2cd5dd8cc4"
"hash": "37630ab090682ee7d004120a42031281"
},
"harmfulApis": {
"settings": {
Expand Down Expand Up @@ -8844,6 +8868,16 @@
}
]
},
"svonm.com": {
"rules": [
{
"rule": "hgc-cf-cache-1.svonm.com",
"domains": [
"t-online.de"
]
}
]
},
"taboola.com": {
"rules": [
{
Expand Down Expand Up @@ -9334,7 +9368,7 @@
"domain": "centerwellpharmacy.com"
}
],
"hash": "e61f68717bcb4a465182a7ddb7d5cc4d"
"hash": "434130223ee6493827d477d0171521da"
},
"trackingCookies1p": {
"settings": {
Expand Down Expand Up @@ -9605,6 +9639,11 @@
"state": "disabled",
"hash": "728493ef7a1488e4781656d3f9db84aa"
},
"windowsNewTabPageExperiment": {
"state": "disabled",
"exceptions": [],
"hash": "c292bb627849854515cebbded288ef5a"
},
"windowsPermissionUsage": {
"exceptions": [],
"state": "disabled",
Expand Down
Loading

0 comments on commit c021b95

Please sign in to comment.