aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTeddy Wing2023-11-25 16:39:26 +0100
committerTeddy Wing2023-11-25 16:39:26 +0100
commit49f45511c8f1864475d2ab33ccf3cda39548c91d (patch)
treed2c00cf8f0a32eaa67e8f5ef0a63a57a63029768
parent58e21e03dc65713675d6dc33b25504807c402de9 (diff)
downloadswextreload-49f45511c8f1864475d2ab33ccf3cda39548c91d.tar.bz2
swextreload: Choose the first non-nil target to reload the current tab
It's possible for the first extension target to be nil. If that happens, keep going through the list of input extensions until we find a target that isn't nil.
-rw-r--r--internal/swextreload.go36
1 files changed, 22 insertions, 14 deletions
diff --git a/internal/swextreload.go b/internal/swextreload.go
index 3d4cd88..0b09a5e 100644
--- a/internal/swextreload.go
+++ b/internal/swextreload.go
@@ -62,38 +62,46 @@ func Reload(
}
if shouldReloadTab {
- extensionURL := "chrome-extension://" + extensionIDs[0] + "/"
+ var firstAvailableExtensionTarget *target.Info
- var firstExtensionTarget *target.Info
+ targetsLoop:
for _, target := range targets {
- if strings.HasPrefix(target.URL, extensionURL) {
- firstExtensionTarget = target
+ for _, extensionID := range extensionIDs {
+ extensionURL := "chrome-extension://" + extensionID + "/"
- logDebugf(
- "firstExtensionTarget %s: %#v",
- extensionURL,
- firstExtensionTarget,
- )
+ if strings.HasPrefix(target.URL, extensionURL) {
+ // Keep going until we find an available target.
+ if target == nil {
+ continue targetsLoop
+ }
- break
+ firstAvailableExtensionTarget = target
+
+ logDebugf(
+ "firstAvailableExtensionTarget %s: %#v",
+ extensionURL,
+ firstAvailableExtensionTarget,
+ )
+
+ break targetsLoop
+ }
}
}
- if firstExtensionTarget == nil {
- // TODO: continue loop until target != null
+ if firstAvailableExtensionTarget == nil {
return errors.New("swextreload: can't reload tab, no target available")
}
// In Manifest V3, we need to wait until the service worker reinstalls
// before we can re-attach to it.
- if !isExtensionManifestV2(firstExtensionTarget) {
+ if !isExtensionManifestV2(firstAvailableExtensionTarget) {
time.Sleep(200 * time.Millisecond)
}
err = reloadTab(
allocatorContext,
extensionIDs[0],
- firstExtensionTarget,
+ firstAvailableExtensionTarget,
)
if err != nil {
return err