Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Do not reload DBP tab when switching to it #1942

Merged
merged 7 commits into from
Dec 20, 2023
Merged

Conversation

Bunn
Copy link
Collaborator

@Bunn Bunn commented Dec 7, 2023

Task/Issue URL: https://app.asana.com/0/1203581873609357/1206115814306009/f

Description:
Do not reload the DBP tab when switching to it

Steps to test this PR:
[ Prepare to use DBP]

  1. Return false from this line
  2. Return true from this line if you're not already logged as in internal user
    NSApp.delegateTyped.internalUserDecider.isInternalUser
  3. Go to the Browser Menu, select Personal information removal
  4. Change tabs, get back to it, see if it forces a reload, it shouldn't
  5. Close the PII tab, check if DataBrokerProtectionViewController was removed from memory, open it again, check if the UI loads again

Internal references:

Pull Request Review Checklist
Software Engineering Expectations
Technical Design Template
Pull Request Documentation

Copy link
Collaborator

@mallexxx mallexxx left a comment

Choose a reason for hiding this comment

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

Sorry but the tabWillClose is incorrect, and dataBrokerProtectionHomeViewController deallocating or reloading doesn‘t work in all cases as intended. Probably it should be a singleton view controller (something like a pinned tab)

@@ -463,6 +464,8 @@ protocol NewWindowPolicyDecisionMaker {
userContentController?.cleanUpBeforeClosing()
webView.assertObjectDeallocated(after: 4.0)
}
delegate?.tabWillClose(self)
Copy link
Collaborator

Choose a reason for hiding this comment

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

the method is being called on Tab.dealloc, passing self to a call here is a critical issue that will eventually lead to crashes. this should be removed

@@ -684,6 +683,12 @@ extension BrowserTabViewController: TabDelegate {
}
}

func tabWillClose(_ tab: Tab) {
if tab.content == .dataBrokerProtection {
dataBrokerProtectionHomeViewController = nil
Copy link
Collaborator

Choose a reason for hiding this comment

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

this won‘t remove dataBrokerProtectionHomeViewController when a Tab is navigated to another URL. Or when dragging a tab to another window. (in this case DBP page data will be reloaded for another window)
If there‘s 2 DBP tabs open (dragged from another window), switching between them will show the same content. If one of them is closed, the DBP page will be reloaded on another one activation.

@Bunn Bunn requested a review from mallexxx December 8, 2023 17:13
@mallexxx mallexxx self-assigned this Dec 13, 2023
Copy link
Collaborator

@mallexxx mallexxx left a comment

Choose a reason for hiding this comment

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

If you don‘t mind I‘ve fixed the sandboxed target and removed !tabs.isEmpty so it works when the last tab is removed

LGTM

@mallexxx mallexxx assigned Bunn and unassigned mallexxx Dec 15, 2023
@Bunn Bunn merged commit be73f44 into main Dec 20, 2023
17 checks passed
@Bunn Bunn deleted the bunn/dbp/tab-cache-improvements branch December 20, 2023 13:04
samsymons added a commit that referenced this pull request Dec 21, 2023
# By Dominik Kapusta (41) and others
# Via Dominik Kapusta (9) and others
* main: (138 commits)
  Make sure when we set custom config url, we don't expect etag in return (#1994)
  Add PixelKit source parameter (#1989)
  Fix internal user toggling (#2000)
  Show alert and display warning icon in Sync Settings when data syncing is disabled (#1996)
  DBP: Integrate subscription account authentication to DBP (#1995)
  Improve bookmarks html reader (#1986)
  Add Sync feature flags (#1992)
  Add daily stats pixel (#1993)
  Do not reload DBP tab when switching to it (#1942)
  Fix: external application requests via redirect URLs shows wrong origin. (#1900)
  Update clean-app.sh to work on macOS Sonoma and include NetP containers (#1988)
  Fix: "SwiftLintPlugin" must be enabled before it can be used (#1987)
  Prevent VPN server list persistence failures (#1985)
  add test can remove data (#1980)
  Remove VPN upgrade card (#1983)
  Fix low-res VPN warning asset (#1984)
  DBP: Fix unreliable date tests (#1981)
  Add search retention pixel for NetP (#1964)
  Sabrina/sync e2e tests (#1959)
  swiftlint build plugin (#1318)
  ...

# Conflicts:
#	DuckDuckGo.xcodeproj/project.pbxproj
#	DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
#	DuckDuckGo/Application/AppDelegate.swift
samsymons added a commit that referenced this pull request Dec 22, 2023
# By Dominik Kapusta (2) and others
# Via GitHub
* main:
  Make sure when we set custom config url, we don't expect etag in return (#1994)
  Add PixelKit source parameter (#1989)
  Fix internal user toggling (#2000)
  Show alert and display warning icon in Sync Settings when data syncing is disabled (#1996)
  DBP: Integrate subscription account authentication to DBP (#1995)
  Improve bookmarks html reader (#1986)
  Add Sync feature flags (#1992)
  Add daily stats pixel (#1993)
  Do not reload DBP tab when switching to it (#1942)
  Fix: external application requests via redirect URLs shows wrong origin. (#1900)

# Conflicts:
#	DuckDuckGo/Statistics/PixelEvent.swift
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants