Closed Bug 1947679 Opened 1 year ago Closed 3 months ago

Allow "webExtension.install" command to install a web extension that is enabled in Private Browsing mode

Categories

(Remote Protocol :: WebDriver BiDi, enhancement, P3)

enhancement

Tracking

(firefox152 fixed)

RESOLVED FIXED
152 Branch
Tracking Status
firefox152 --- fixed

People

(Reporter: whimboo, Assigned: khalid.alhaddad98, Mentored)

References

(Blocks 1 open bug)

Details

(Whiteboard: [webdriver:m20][webdriver:external][lang=js][lang=py][webdriver:relnote])

Attachments

(1 file)

We should allow clients to choose if a web extension that is going to be installed to also enable it in Private Browsing mode, like what Marionette can already do. So far we didn't agree on getting an extra parameter added to the webExtension.install command in the specification, so maybe we need to add a Mozilla specific one like moz:allowPrivateBrowsing.

Points: --- → 3
Priority: -- → P3
Whiteboard: [webdriver:backlog]

This can be done similarly to what I did for the moz:permanent flag in bug 1947678.

Mentor: hskupin
See Also: → 1947678
Whiteboard: [webdriver:backlog] → [webdriver:backlog][lang=js][lang=py]
Assignee: nobody → khalid.alhaddad98

I was asked to check why the new tests as attached to this bug cause an issue on Android. See the following job in CI as example:

https://treeherder.mozilla.org/jobs?repo=try&landoInstance=lando-prod&revision=26fa2702249596b975ed1be96c3c18e3f6580d01&selectedTaskRun=RW1TI0AQQaWsUX1rn2u6FA.0

Running the test locally I can replicate it even when removing all parameterizations - means running just a single test for the signed base64 version of the test but ONLY with the moz:allowPrivateBrowsing flag set to True. It's not failing when not allowing for private browsing. Here the output of the local adb logcat:

04-08 16:16:59.100 15399 15422 I Gecko   : 1775657819100	RemoteAgent	DEBUG	WebDriverBiDiConnection ae99623b-10a7-4fda-b06d-e5a327b24732 -> {"id":1,"method":"webExtension.install","params":{"extensionData":{"type":"base64","value":"UEsDBBQACAAIAAAAAAAAAAAAAAAAAAAAAAANAAAAbWFuaWZlc3QuanNvbmyOMW7DMAxF95yC4FwFCuJWlae6bnoNQ1Fog6gtGSLRDEXuXsgB2iUDB/7/8fB+dgC4h ... sYS5zZlBLAQIUABQACAAIAAAAAABhaqmnwg0AADQRAAAUAAAAAAAAAAAAAAAAABoOAABNRVRBLUlORi9tb3ppbGxhLnJzYVBLBQYAAAAABgAGAIMBAAAeHAAAAAA="},"moz:allowPrivateBrowsing":true}}
04-08 16:16:59.103 15399 15422 I Gecko   : 1775657819103	RemoteAgent	TRACE	Registered MessageHandlerFrame actors
04-08 16:16:59.106 15399 15422 I Gecko   : 1775657819106	RemoteAgent	TRACE	ParentWebProgressListener Start watching updates for browsing context [context=2]
04-08 16:16:59.106 15399 15422 I Gecko   : 1775657819106	RemoteAgent	TRACE	ParentWebProgressListener The web progress was not monitored yet, adding a progress listener [context=2]
04-08 16:16:59.111 15399 15422 I Gecko   : 1775657819111	RemoteAgent	TRACE	Created MessageHandler ROOT for session aa2fe26c-b864-46b8-bdc5-91cbe2bd97aa
04-08 16:16:59.111 15399 15422 I Gecko   : 1775657819111	RemoteAgent	TRACE	Received command webExtension.install for destination ROOT
04-08 16:16:59.112 15513 15542 I Gecko   : 1775657819112	RemoteAgent	TRACE	WebDriverWorkerListenerChild actor created for PID 15513
04-08 16:16:59.114 15399 15422 I Gecko   : 1775657819114	RemoteAgent	TRACE	WebDriverWorkerListenerChild actor created for PID 15399
04-08 16:16:59.114 15399 15422 I Gecko   : 1775657819114	RemoteAgent	TRACE	Worker registered: resource://services-settings/RemoteSettings.worker.mjs (type: 0, id: 6bd9bb59-00f9-4cdd-a13b-09da6e4d993a, alreadyRegistered: true)
04-08 16:16:59.124 15399 15422 E GeckoConsole: [JavaScript Error: "Could not download addons-mlbf.bin" {file: "resource://services-settings/Attachments.sys.mjs" line: 17}]
04-08 16:16:59.124 15399 15422 E GeckoConsole: DownloadError@resource://services-settings/Attachments.sys.mjs:17:5
04-08 16:16:59.124 15399 15422 E GeckoConsole: #fetchAttachment@resource://services-settings/Attachments.sys.mjs:462:11
04-08 16:16:59.127 15399 15399 D WebExtension: handleMessage GeckoView:WebExtension:OnInstalling
04-08 16:16:59.131 15399 15399 D WebExtension: handleMessage GeckoView:WebExtension:OnInstalled
04-08 16:16:59.132 15399 15399 D WebExtension: handleMessage GeckoView:WebExtension:OnReady
04-08 16:16:59.132 15399 15399 D WebExtension: handleMessage GeckoView:WebExtension:OnOptionalPermissionsChanged
04-08 16:16:59.132 15399 15399 D WebExtension: handleMessage GeckoView:WebExtension:OnOptionalPermissionsChanged
04-08 16:16:59.136 15399 15422 I GeckoConsole: 1775657819136	addons.xpi	WARN	Addon with ID 1FC7D53C-0B0A-49E7-A8C0-47E77496A919@web-platform-tests.org already installed, older version will be disabled
04-08 16:16:59.137 15399 15399 D WebExtension: handleMessage GeckoView:WebExtension:OnInstalling
04-08 16:16:59.137 15399 15399 D AndroidRuntime: Shutting down VM
04-08 16:16:59.138 15399 15399 E AndroidRuntime: FATAL EXCEPTION: main
04-08 16:16:59.138 15399 15399 E AndroidRuntime: Process: org.mozilla.geckoview.test_runner, PID: 15399
04-08 16:16:59.138 15399 15399 E AndroidRuntime: java.lang.RuntimeException: Unexpected existing ExtensionWrapper found for add-on id: 1FC7D53C-0B0A-49E7-A8C0-47E77496A919@web-platform-tests.org
04-08 16:16:59.138 15399 15399 E AndroidRuntime: 	at org.mozilla.geckoview.test_runner.TestRunnerActivity.initExtensionWrapper(TestRunnerActivity.java:677)
04-08 16:16:59.138 15399 15399 E AndroidRuntime: 	at org.mozilla.geckoview.test_runner.TestRunnerActivity.-$$Nest$minitExtensionWrapper(Unknown Source:0)
04-08 16:16:59.138 15399 15399 E AndroidRuntime: 	at org.mozilla.geckoview.test_runner.TestRunnerActivity$8.onInstalling(TestRunnerActivity.java:493)
04-08 16:16:59.138 15399 15399 E AndroidRuntime: 	at org.mozilla.geckoview.WebExtensionController.onInstalling(WebExtensionController.java:1415)
04-08 16:16:59.138 15399 15399 E AndroidRuntime: 	at org.mozilla.geckoview.WebExtensionController.handleMessage(WebExtensionController.java:1102)
04-08 16:16:59.138 15399 15399 E AndroidRuntime: 	at org.mozilla.geckoview.WebExtensionController$Internals.handleMessage(WebExtensionController.java:135)
04-08 16:16:59.138 15399 15399 E AndroidRuntime: 	at org.mozilla.gecko.EventDispatcher$3.run(EventDispatcher.java:424)
04-08 16:16:59.138 15399 15399 E AndroidRuntime: 	at android.os.Handler.handleCallback(Handler.java:958)
04-08 16:16:59.138 15399 15399 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:99)
04-08 16:16:59.138 15399 15399 E AndroidRuntime: 	at android.os.Looper.loopOnce(Looper.java:205)
04-08 16:16:59.138 15399 15399 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:294)
04-08 16:16:59.138 15399 15399 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:8177)
04-08 16:16:59.138 15399 15399 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
04-08 16:16:59.138 15399 15399 E AndroidRuntime: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
04-08 16:16:59.138 15399 15399 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
04-08 16:16:59.141   544 15608 I DropBoxManagerService: add tag=data_app_crash isTagEnabled=true flags=0x2
04-08 16:16:59.141   544  2463 W ActivityTaskManager:   Force finishing activity org.mozilla.geckoview.test_runner/.App
04-08 16:16:59.141   757   844 V WindowManagerShell: Transition requested: android.os.BinderProxy@ed25fb2 TransitionRequestInfo { type = CLOSE, triggerTask = null, remoteTransition = null, displayChange = null }

As per the following lines we trigger a crash which will cause the Marionette failure (Failed to decode response from marionette):

https://searchfox.org/firefox-main/rev/07e27bfce5acf193bdb89c7ba2aa73451a3e43b4/mobile/android/test_runner/src/main/java/org/mozilla/geckoview/test_runner/TestRunnerActivity.java#669-679

Luca, maybe you have an idea why this is broken? Maybe private browsing mode is not available for the TestRunner package on Android?

Status: NEW → ASSIGNED
Flags: needinfo?(lgreco)

(In reply to Henrik Skupin [:whimboo][⌚️UTC+1] from comment #3)

I was asked to check why the new tests as attached to this bug cause an issue on Android. See the following job in CI as example:

https://treeherder.mozilla.org/jobs?repo=try&landoInstance=lando-prod&revision=26fa2702249596b975ed1be96c3c18e3f6580d01&selectedTaskRun=RW1TI0AQQaWsUX1rn2u6FA.0

Running the test locally I can replicate it even when removing all parameterizations - means running just a single test for the signed base64 version of the test but ONLY with the moz:allowPrivateBrowsing flag set to True. It's not failing when not allowing for private browsing. Here the output of the local adb logcat:

04-08 16:16:59.100 15399 15422 I Gecko   : 1775657819100	RemoteAgent	DEBUG	WebDriverBiDiConnection ae99623b-10a7-4fda-b06d-e5a327b24732 -> {"id":1,"method":"webExtension.install","params":{"extensionData":{"type":"base64","value":"UEsDBBQACAAIAAAAAAAAAAAAAAAAAAAAAAANAAAAbWFuaWZlc3QuanNvbmyOMW7DMAxF95yC4FwFCuJWlae6bnoNQ1Fog6gtGSLRDEXuXsgB2iUDB/7/8fB+dgC4h ... sYS5zZlBLAQIUABQACAAIAAAAAABhaqmnwg0AADQRAAAUAAAAAAAAAAAAAAAAABoOAABNRVRBLUlORi9tb3ppbGxhLnJzYVBLBQYAAAAABgAGAIMBAAAeHAAAAAA="},"moz:allowPrivateBrowsing":true}}
04-08 16:16:59.103 15399 15422 I Gecko   : 1775657819103	RemoteAgent	TRACE	Registered MessageHandlerFrame actors
04-08 16:16:59.106 15399 15422 I Gecko   : 1775657819106	RemoteAgent	TRACE	ParentWebProgressListener Start watching updates for browsing context [context=2]
04-08 16:16:59.106 15399 15422 I Gecko   : 1775657819106	RemoteAgent	TRACE	ParentWebProgressListener The web progress was not monitored yet, adding a progress listener [context=2]
04-08 16:16:59.111 15399 15422 I Gecko   : 1775657819111	RemoteAgent	TRACE	Created MessageHandler ROOT for session aa2fe26c-b864-46b8-bdc5-91cbe2bd97aa
04-08 16:16:59.111 15399 15422 I Gecko   : 1775657819111	RemoteAgent	TRACE	Received command webExtension.install for destination ROOT
04-08 16:16:59.112 15513 15542 I Gecko   : 1775657819112	RemoteAgent	TRACE	WebDriverWorkerListenerChild actor created for PID 15513
04-08 16:16:59.114 15399 15422 I Gecko   : 1775657819114	RemoteAgent	TRACE	WebDriverWorkerListenerChild actor created for PID 15399
04-08 16:16:59.114 15399 15422 I Gecko   : 1775657819114	RemoteAgent	TRACE	Worker registered: resource://services-settings/RemoteSettings.worker.mjs (type: 0, id: 6bd9bb59-00f9-4cdd-a13b-09da6e4d993a, alreadyRegistered: true)
04-08 16:16:59.124 15399 15422 E GeckoConsole: [JavaScript Error: "Could not download addons-mlbf.bin" {file: "resource://services-settings/Attachments.sys.mjs" line: 17}]
04-08 16:16:59.124 15399 15422 E GeckoConsole: DownloadError@resource://services-settings/Attachments.sys.mjs:17:5
04-08 16:16:59.124 15399 15422 E GeckoConsole: #fetchAttachment@resource://services-settings/Attachments.sys.mjs:462:11
04-08 16:16:59.127 15399 15399 D WebExtension: handleMessage GeckoView:WebExtension:OnInstalling
04-08 16:16:59.131 15399 15399 D WebExtension: handleMessage GeckoView:WebExtension:OnInstalled
04-08 16:16:59.132 15399 15399 D WebExtension: handleMessage GeckoView:WebExtension:OnReady
04-08 16:16:59.132 15399 15399 D WebExtension: handleMessage GeckoView:WebExtension:OnOptionalPermissionsChanged
04-08 16:16:59.132 15399 15399 D WebExtension: handleMessage GeckoView:WebExtension:OnOptionalPermissionsChanged
04-08 16:16:59.136 15399 15422 I GeckoConsole: 1775657819136	addons.xpi	WARN	Addon with ID 1FC7D53C-0B0A-49E7-A8C0-47E77496A919@web-platform-tests.org already installed, older version will be disabled
04-08 16:16:59.137 15399 15399 D WebExtension: handleMessage GeckoView:WebExtension:OnInstalling
04-08 16:16:59.137 15399 15399 D AndroidRuntime: Shutting down VM
04-08 16:16:59.138 15399 15399 E AndroidRuntime: FATAL EXCEPTION: main
04-08 16:16:59.138 15399 15399 E AndroidRuntime: Process: org.mozilla.geckoview.test_runner, PID: 15399
04-08 16:16:59.138 15399 15399 E AndroidRuntime: java.lang.RuntimeException: Unexpected existing ExtensionWrapper found for add-on id: 1FC7D53C-0B0A-49E7-A8C0-47E77496A919@web-platform-tests.org
04-08 16:16:59.138 15399 15399 E AndroidRuntime: 	at org.mozilla.geckoview.test_runner.TestRunnerActivity.initExtensionWrapper(TestRunnerActivity.java:677)
04-08 16:16:59.138 15399 15399 E AndroidRuntime: 	at org.mozilla.geckoview.test_runner.TestRunnerActivity.-$$Nest$minitExtensionWrapper(Unknown Source:0)
04-08 16:16:59.138 15399 15399 E AndroidRuntime: 	at org.mozilla.geckoview.test_runner.TestRunnerActivity$8.onInstalling(TestRunnerActivity.java:493)
04-08 16:16:59.138 15399 15399 E AndroidRuntime: 	at org.mozilla.geckoview.WebExtensionController.onInstalling(WebExtensionController.java:1415)
04-08 16:16:59.138 15399 15399 E AndroidRuntime: 	at org.mozilla.geckoview.WebExtensionController.handleMessage(WebExtensionController.java:1102)
04-08 16:16:59.138 15399 15399 E AndroidRuntime: 	at org.mozilla.geckoview.WebExtensionController$Internals.handleMessage(WebExtensionController.java:135)
04-08 16:16:59.138 15399 15399 E AndroidRuntime: 	at org.mozilla.gecko.EventDispatcher$3.run(EventDispatcher.java:424)
04-08 16:16:59.138 15399 15399 E AndroidRuntime: 	at android.os.Handler.handleCallback(Handler.java:958)
04-08 16:16:59.138 15399 15399 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:99)
04-08 16:16:59.138 15399 15399 E AndroidRuntime: 	at android.os.Looper.loopOnce(Looper.java:205)
04-08 16:16:59.138 15399 15399 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:294)
04-08 16:16:59.138 15399 15399 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:8177)
04-08 16:16:59.138 15399 15399 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
04-08 16:16:59.138 15399 15399 E AndroidRuntime: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
04-08 16:16:59.138 15399 15399 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
04-08 16:16:59.141   544 15608 I DropBoxManagerService: add tag=data_app_crash isTagEnabled=true flags=0x2
04-08 16:16:59.141   544  2463 W ActivityTaskManager:   Force finishing activity org.mozilla.geckoview.test_runner/.App
04-08 16:16:59.141   757   844 V WindowManagerShell: Transition requested: android.os.BinderProxy@ed25fb2 TransitionRequestInfo { type = CLOSE, triggerTask = null, remoteTransition = null, displayChange = null }

As per the following lines we trigger a crash which will cause the Marionette failure (Failed to decode response from marionette):

https://searchfox.org/firefox-main/rev/07e27bfce5acf193bdb89c7ba2aa73451a3e43b4/mobile/android/test_runner/src/main/java/org/mozilla/geckoview/test_runner/TestRunnerActivity.java#669-679

Luca, maybe you have an idea why this is broken? Maybe private browsing mode is not available for the TestRunner package on Android?

If I'm not misreading the failure log, it looks like the failure is due to the test hitting this explicit check here (that we added as part of Bug 1876317 as a guard against TestActivityRunner overwriting the extension info for an extension that was already known to the kotlin side with another extension info if they share the same id).

I see that in the patch that the marionette test is parameterized, is it possible that the variant are running in parallel and trying to install an extension with the same add-on id on the same TestRunnerActivity instance? or that they run in sequence but the previous variant to run may have left the extension with the same add-on id installed?

I haven't looked deeply enough to be sure if one of these could be the underlying issues, but both of those edge cases would be expected to hit that exception.

Flags: needinfo?(lgreco)

The parameterization doesn't matter here. As I mentioned above the failure as well happens when we run only a single config. To demonstrate that I reduced the test case to the following which still replicates the problem:

import pytest
from tests.bidi.web_extension import assert_extension_id

pytestmark = pytest.mark.asyncio


async def test_install_with_allow_private_browsing(
    bidi_session,
    extension_data,
):
    data = {"type": "base64"}
    data.update({"value": extension_data["base64"]})

    web_extension = await bidi_session.web_extension.install(
        extension_data=data,
        _extension_params={"moz:allowPrivateBrowsing": True},
    )

    assert_extension_id(web_extension, extension_data)

Note that when the _extension_params argument is not passed the web extension can be successfully installed.

When checking our code which handles the private browsing flag I see the following:
https://searchfox.org/firefox-main/rev/62b11cf9d978f8c6f8144156feebf42af5d71cf9/remote/shared/Addon.sys.mjs#61-67

So I assume it's related to calling lazy.ExtensionPermissions.add() for updating the permissions. Does this part need a special handling on Android especially fore the TestRunner package given that it works fine for desktop?

Flags: needinfo?(lgreco)

When checking our code which handles the private browsing flag I see the following:
https://searchfox.org/firefox-main/rev/62b11cf9d978f8c6f8144156feebf42af5d71cf9/remote/shared/Addon.sys.mjs#61-67
So I assume it's related to calling lazy.ExtensionPermissions.add() for updating the permissions. Does this part need a special handling on Android especially fore the TestRunner package given that it works fine for desktop?

ah, thanks for linking the code from remote/shared/Addon.sys.mjs, I'm pretty sure the failure is triggered as a side-effect of the call to addon.reload() and the fact that the extension is installed temporarily, which then is technically re-installing the add-on if it is temporarily installed, see https://searchfox.org/firefox-main/rev/62b11cf9d978f8c6f8144156feebf42af5d71cf9/toolkit/mozapps/extensions/internal/XPIDatabase.sys.mjs#1514

is the test hitting the same failure also when the add-on is installed non temporarily?

Flags: needinfo?(lgreco) → needinfo?(hskupin)

Indeed using the moz:permanent flag set to True does no longer cause this problem. But this is a Mozilla-specific flag and not enabled by default. Would there be a way to actually get it working for the TestRunner? We cannot set the permissions ahead given that we need the internal extension id.

If there is no way we probably should do the following:

  • Reduce the webdriver test to only check with the signed base64 encoded extension, which we can install permanently (it doens't work for the unsigned and path versions). I don't think that we need to test each and every variant like for the permanent installation.
  • Add a check for the BiDi command and raise an error (at least for now) when the private browsing flag is true but the addon is not signed and moz:permanent isn't set as well.
Flags: needinfo?(hskupin) → needinfo?(lgreco)

(In reply to Henrik Skupin [:whimboo][⌚️UTC+1] from comment #7)

Indeed using the moz:permanent flag set to True does no longer cause this problem. But this is a Mozilla-specific flag and not enabled by default. Would there be a way to actually get it working for the TestRunner? We cannot set the permissions ahead given that we need the internal extension id.

Thanks for confirming that the issue is hit due to the underlying reason I was describing in comment 6.

Based on a quick look on searchfox to double-check how it may be supported in a way that would play better with the TestRunnerActivity, I feel the cleanest approach may be:

  • add an optional options parameter to the AddonManager.installTemporaryAddon
  • propagate the options to XPIInstall installTemporaryAddon implementation so that we can add the permissions right before activating the addon here, the addon resolved by the loadManifestFromFile would have already the id computed as a fallback for temporarily installed add-ons (computed and assigned here) and before the add-on would be startup and so we would not need to reload the temporarily installed add-on.

After installTemporaryAddon supports that as an additional option, the logic on the remote/shared/Addon.sys.mjs side could be just passing the new option property in its call to installTemporaryAddon.

is it ok to defer private browsing flag support for the temporarily installed add-ons to a separate followup?
(if I'm reading the second part of comment 7 that seems to be the case but wanted to be sure I'm not misunderstanding).

Let me know if this sounds a reasonable path forward.

Flags: needinfo?(lgreco)
Summary: Allow "webExtenstion.install" command to install a web extension that is enabled in Private Browsing mode → Allow "webExtension.install" command to install a web extension that is enabled in Private Browsing mode

(In reply to Luca Greco [:rpl] [:luca] [:lgreco] from comment #8)

is it ok to defer private browsing flag support for the temporarily installed add-ons to a separate followup?
(if I'm reading the second part of comment 7 that seems to be the case but wanted to be sure I'm not misunderstanding).

Yes, I think that this is fine. Would you mind filing the bug related to Testrunner yourself given that it is clear for you what needs to be done? Once the bug is filed we can reference it in our implementation and not allow it for now. Thanks!

Flags: needinfo?(lgreco)

(In reply to Henrik Skupin [:whimboo][⌚️UTC+1] from comment #9)

(In reply to Luca Greco [:rpl] [:luca] [:lgreco] from comment #8)

is it ok to defer private browsing flag support for the temporarily installed add-ons to a separate followup?
(if I'm reading the second part of comment 7 that seems to be the case but wanted to be sure I'm not misunderstanding).

Yes, I think that this is fine. Would you mind filing the bug related to Testrunner yourself given that it is clear for you what needs to be done? Once the bug is filed we can reference it in our implementation and not allow it for now. Thanks!

Sure thing, I just filed Bug 2030934 for the changes described in comment 8.

As a side note, I'll file a separate one for addon.reload, I feel that at some point we may still want that to work for a temporarily installed extension while running tests on Android builds (where it would still hit the guard inside TestRunnerActivity logic).

Flags: needinfo?(lgreco)

Great. Thank you Luca!

Khalid, the remaining work for you on this bug would be the following:

  • Update our code in WebDriver BiDi to check that we are not allowing to use this flag on Android when we are not installing the extension permanently at the same time. We can raise an unsupported error in that case. When adding this check please add a reference to bug 2030934 as comment.
  • Update the expectation of the wdspec sub test to get an unexpected fail and the bug reference.

Thanks!

Flags: needinfo?(khalid.alhaddad98)

Done, I updated the WebDriver BiDi code to throw an error when using moz:allowPrivateBrowsing on Android, and I tried to auto-generate the expectation data, but it removed the os == Android part, so I did it manually to get the unexpected fail.

Flags: needinfo?(khalid.alhaddad98)
Pushed by hskupin@mozilla.com: https://github.com/mozilla-firefox/firefox/commit/cb2826a7dbf9 https://hg.mozilla.org/integration/autoland/rev/211e59a13b3f Allow "webExtension.install" command to install a web extension that is enabled in Private Browsing mode. r=whimboo
Status: ASSIGNED → RESOLVED
Closed: 3 months ago
Resolution: --- → FIXED
Target Milestone: --- → 152 Branch

Thank you Khalid for your patch! In case you are interested in some other work in our area there is bug 1941404 which is Python as usual and as well a little bit of Javascript. Let me know if you have interest on that bug or assign it yourself.

Points: 3 → ---
Whiteboard: [webdriver:backlog][lang=js][lang=py] → [webdriver:m20][webdriver:external][lang=js][lang=py]
Whiteboard: [webdriver:m20][webdriver:external][lang=js][lang=py] → [webdriver:m20][webdriver:external][lang=js][lang=py][webdriver:relnote]
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: