Closed Bug 1601067 Opened 5 years ago Closed 4 years ago

Implement installBuiltIn for extensions

Categories

(GeckoView :: Extensions, enhancement, P1)

Unspecified
All
enhancement

Tracking

(firefox78 fixed)

RESOLVED FIXED
mozilla78
Tracking Status
firefox78 --- fixed

People

(Reporter: agi, Assigned: agi)

References

Details

(Whiteboard: [geckoview:m78])

Attachments

(9 files, 1 obsolete file)

(deleted), text/x-phabricator-request
Details
(deleted), text/x-phabricator-request
Details
(deleted), text/x-phabricator-request
Details
(deleted), text/x-phabricator-request
Details
(deleted), text/x-phabricator-request
Details
(deleted), text/x-phabricator-request
Details
(deleted), text/x-phabricator-request
Details
(deleted), text/x-phabricator-request
Details
(deleted), text/x-phabricator-request
Details
Whiteboard: [geckoview:m1912]
Assignee: nobody → agi
Rank: 2
Priority: P1 → P2
Whiteboard: [geckoview:m1912]

This is being de-prioritized since it's not needed for initial Extension support. If anyone wants to pick this up feel free to reach out to me.

Assignee: agi → nobody
Mentor: agi

on a second thought Secure Proxy really needs this, so I might just finish this up

Assignee: nobody → agi
Mentor: agi

Secure proxy is no longer in scope for Fenix release and so this should be deprioritised in favour of other bugs.

lowering rank as I think other extension bugs will take priority over this

Rank: 2 → 15
Assignee: agi → nobody
Blocks: 1617300
Mentor: agi
Assignee: nobody → agi
Mentor: agi

We use this to send a default action to the embedder, but if no one is
listening there's no point, and it causes problems in tests because sometimes
the delegate is attached / reattached too quickly and the second delegate will
end up getting two messages by mistake.

Sometimes extensions call tabs.create immediately on startup. In that case the
delegate may not be attached yet. To avoid losing these messages we store them
until a delegate is attached.

This also includes a refactoring to unify behavior for delegates. Eventually I
want to factor out delegates similarly to what happens in GeckoSession today.

Installed privileged permissions in GeckoView need to send messages from
content scripts. Today we use ALLOW_CONTENT_MESSAGING, but for installed
extensions we need a way to persist this flag.

This in preparation to making these test extensions installable.

Whiteboard: [geckoview:m78]
Priority: P2 → P1
Blocks: 1634504
Attached file Bug 1601067 - Add ensureBuiltIn. (obsolete) (deleted) —

This is a version of installBuiltIn that will not install the addon if it's
already installed.

Attachment #9144186 - Attachment description: Bug 1601067 - Add nativeContentMessaging privileged permission. → Bug 1601067 - Add nativeMessagingFromContent privileged permission.
Attachment #9144187 - Attachment description: Bug 1601067 - Add IDs and nativeContentMessaging to tests. → Bug 1601067 - Add IDs and nativeMessagingFromContent to tests.

Comment on attachment 9145117 [details]
Bug 1601067 - Add ensureBuiltIn.

Revision D73503 was moved to bug 1635564. Setting attachment 9145117 [details] to obsolete.

Attachment #9145117 - Attachment is obsolete: true
Pushed by asferro@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/23d021ef34c4 Catch exception thrown by newURI. r=snorp https://hg.mozilla.org/integration/autoland/rev/b15906852fe4 Only send ActionDelegate:Attached when the delegate is not null. r=snorp https://hg.mozilla.org/integration/autoland/rev/fe94f4277bfa Collect NewTab messages until a delegate is registered. r=snorp https://hg.mozilla.org/integration/autoland/rev/62f5d5d34162 Add nativeMessagingFromContent privileged permission. r=zombie,snorp https://hg.mozilla.org/integration/autoland/rev/b396fa314c25 Add IDs and nativeMessagingFromContent to tests. r=snorp https://hg.mozilla.org/integration/autoland/rev/3b4e20521d4b Implement installBuiltIn. r=mixedpuppy,owlish,snorp https://hg.mozilla.org/integration/autoland/rev/f5d8f660ba87 Use installBuiltIn in tests instead of registerWebExtension. r=snorp https://hg.mozilla.org/integration/autoland/rev/d16aa7b33165 Make the test-support extension installable. r=owlish,snorp https://hg.mozilla.org/integration/autoland/rev/a57940d6af63 Add deprecation notice for registerWebExtension. r=droeh

Backed out 9 changesets (Bug 1601067) for causing gv failures in WebExecutorTest.

Backout link: https://hg.mozilla.org/integration/autoland/rev/d887e6eaea8a68af43a8907d64afc849806d83cb

Push with failures: https://treeherder.mozilla.org/#/jobs?repo=autoland&fromchange=b165ac2f10597dc2f4a553e66924c269b3623f0e&searchStr=android%2C7.0%2Cx86-64%2Copt%2Ctest-android-em-7.0-x86_64%2Fopt-geckoview-junit-e10s%2C%28gv-junit%29&tochange=d887e6eaea8a68af43a8907d64afc849806d83cb&selectedTaskRun=RnRWeW9WQrGVjAx1rUVdGA-0

Failure log: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=300944964&repo=autoland&lineNumber=12682

[task 2020-05-05T22:46:09.942Z] 22:46:09     INFO -  TEST-START | org.mozilla.geckoview.test.WebExecutorTest.readTimeout
[task 2020-05-05T22:46:39.993Z] 22:46:39     INFO -  org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: numtests=721
[task 2020-05-05T22:46:39.993Z] 22:46:39     INFO -  org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: stream=
[task 2020-05-05T22:46:39.994Z] 22:46:39     INFO -  org.mozilla.geckoview.test | Error in readTimeout(org.mozilla.geckoview.test.WebExecutorTest):
[task 2020-05-05T22:46:39.994Z] 22:46:39     INFO -  org.mozilla.geckoview.test | java.lang.Exception: Unexpected exception, expected<java.io.IOException> but was<java.util.concurrent.TimeoutException>
[task 2020-05-05T22:46:39.994Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	at org.junit.internal.runners.statements.ExpectException.evaluate(ExpectException.java:28)
[task 2020-05-05T22:46:39.994Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	at androidx.test.internal.runner.junit4.statement.RunBefores.evaluate(RunBefores.java:80)
[task 2020-05-05T22:46:39.994Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	at androidx.test.internal.runner.junit4.statement.RunAfters.evaluate(RunAfters.java:61)
[task 2020-05-05T22:46:39.994Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	at org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:239)
[task 2020-05-05T22:46:39.995Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	at org.junit.rules.RunRules.evaluate(RunRules.java:20)
[task 2020-05-05T22:46:39.995Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
[task 2020-05-05T22:46:39.995Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
[task 2020-05-05T22:46:39.995Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
[task 2020-05-05T22:46:39.995Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
[task 2020-05-05T22:46:39.995Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
[task 2020-05-05T22:46:39.995Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
[task 2020-05-05T22:46:39.996Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
[task 2020-05-05T22:46:39.996Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
[task 2020-05-05T22:46:39.996Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
[task 2020-05-05T22:46:39.996Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	at androidx.test.ext.junit.runners.AndroidJUnit4.run(AndroidJUnit4.java:104)
[task 2020-05-05T22:46:39.996Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.Suite.runChild(Suite.java:128)
[task 2020-05-05T22:46:39.996Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.Suite.runChild(Suite.java:27)
[task 2020-05-05T22:46:39.996Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
[task 2020-05-05T22:46:39.997Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
[task 2020-05-05T22:46:39.997Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
[task 2020-05-05T22:46:39.997Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
[task 2020-05-05T22:46:39.997Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
[task 2020-05-05T22:46:39.997Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
[task 2020-05-05T22:46:39.997Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
[task 2020-05-05T22:46:39.997Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
[task 2020-05-05T22:46:39.997Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	at androidx.test.internal.runner.TestExecutor.execute(TestExecutor.java:56)
[task 2020-05-05T22:46:39.998Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	at androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:388)
[task 2020-05-05T22:46:39.998Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1932)
[task 2020-05-05T22:46:39.998Z] 22:46:39     INFO -  org.mozilla.geckoview.test | Caused by: java.util.concurrent.TimeoutException
[task 2020-05-05T22:46:39.998Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	at org.mozilla.geckoview.GeckoResult.poll(GeckoResult.java:775)
[task 2020-05-05T22:46:39.998Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	at org.mozilla.geckoview.test.GeckoResultTestKt.pollDefault(GeckoResultTest.kt:16)
[task 2020-05-05T22:46:39.998Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	at org.mozilla.geckoview.test.WebExecutorTest.readTimeout(WebExecutorTest.kt:359)
[task 2020-05-05T22:46:39.998Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	at java.lang.reflect.Method.invoke(Native Method)
[task 2020-05-05T22:46:39.998Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
[task 2020-05-05T22:46:39.999Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
[task 2020-05-05T22:46:39.999Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
[task 2020-05-05T22:46:39.999Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
[task 2020-05-05T22:46:39.999Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	at org.junit.internal.runners.statements.ExpectException.evaluate(ExpectException.java:19)
[task 2020-05-05T22:46:39.999Z] 22:46:39     INFO -  org.mozilla.geckoview.test | 	... 27 more
[task 2020-05-05T22:46:39.999Z] 22:46:39     INFO -  org.mozilla.geckoview.test |
[task 2020-05-05T22:46:39.999Z] 22:46:39     INFO -  org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: id=AndroidJUnitRunner
[task 2020-05-05T22:46:39.999Z] 22:46:39     INFO -  org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: test=readTimeout
[task 2020-05-05T22:46:40.000Z] 22:46:40     INFO -  org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: class=org.mozilla.geckoview.test.WebExecutorTest
[task 2020-05-05T22:46:40.000Z] 22:46:40     INFO -  org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: stack=java.lang.Exception: Unexpected exception, expected<java.io.IOException> but was<java.util.concurrent.TimeoutException>
[task 2020-05-05T22:46:40.000Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	at org.junit.internal.runners.statements.ExpectException.evaluate(ExpectException.java:28)
[task 2020-05-05T22:46:40.000Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	at androidx.test.internal.runner.junit4.statement.RunBefores.evaluate(RunBefores.java:80)
[task 2020-05-05T22:46:40.000Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	at androidx.test.internal.runner.junit4.statement.RunAfters.evaluate(RunAfters.java:61)
[task 2020-05-05T22:46:40.000Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	at org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:239)
[task 2020-05-05T22:46:40.001Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	at org.junit.rules.RunRules.evaluate(RunRules.java:20)
[task 2020-05-05T22:46:40.001Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
[task 2020-05-05T22:46:40.001Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
[task 2020-05-05T22:46:40.001Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
[task 2020-05-05T22:46:40.001Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
[task 2020-05-05T22:46:40.001Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
[task 2020-05-05T22:46:40.002Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
[task 2020-05-05T22:46:40.002Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
[task 2020-05-05T22:46:40.002Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
[task 2020-05-05T22:46:40.002Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
[task 2020-05-05T22:46:40.002Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	at androidx.test.ext.junit.runners.AndroidJUnit4.run(AndroidJUnit4.java:104)
[task 2020-05-05T22:46:40.002Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.Suite.runChild(Suite.java:128)
[task 2020-05-05T22:46:40.002Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.Suite.runChild(Suite.java:27)
[task 2020-05-05T22:46:40.002Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
[task 2020-05-05T22:46:40.003Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
[task 2020-05-05T22:46:40.003Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
[task 2020-05-05T22:46:40.003Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
[task 2020-05-05T22:46:40.003Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
[task 2020-05-05T22:46:40.003Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
[task 2020-05-05T22:46:40.003Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
[task 2020-05-05T22:46:40.003Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
[task 2020-05-05T22:46:40.003Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	at androidx.test.internal.runner.TestExecutor.execute(TestExecutor.java:56)
[task 2020-05-05T22:46:40.004Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	at androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:388)
[task 2020-05-05T22:46:40.004Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1932)
[task 2020-05-05T22:46:40.004Z] 22:46:40     INFO -  org.mozilla.geckoview.test | Caused by: java.util.concurrent.TimeoutException
[task 2020-05-05T22:46:40.004Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	at org.mozilla.geckoview.GeckoResult.poll(GeckoResult.java:775)
[task 2020-05-05T22:46:40.004Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	at org.mozilla.geckoview.test.GeckoResultTestKt.pollDefault(GeckoResultTest.kt:16)
[task 2020-05-05T22:46:40.004Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	at org.mozilla.geckoview.test.WebExecutorTest.readTimeout(WebExecutorTest.kt:359)
[task 2020-05-05T22:46:40.005Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	at java.lang.reflect.Method.invoke(Native Method)
[task 2020-05-05T22:46:40.005Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
[task 2020-05-05T22:46:40.005Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
[task 2020-05-05T22:46:40.005Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
[task 2020-05-05T22:46:40.005Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
[task 2020-05-05T22:46:40.005Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	at org.junit.internal.runners.statements.ExpectException.evaluate(ExpectException.java:19)
[task 2020-05-05T22:46:40.005Z] 22:46:40     INFO -  org.mozilla.geckoview.test | 	... 27 more
[task 2020-05-05T22:46:40.005Z] 22:46:40     INFO -  org.mozilla.geckoview.test |
[task 2020-05-05T22:46:40.006Z] 22:46:40     INFO -  org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: current=644
[task 2020-05-05T22:46:40.006Z] 22:46:40     INFO -  org.mozilla.geckoview.test | INSTRUMENTATION_STATUS_CODE: -2
[task 2020-05-05T22:46:40.006Z] 22:46:40  WARNING -  TEST-UNEXPECTED-FAIL | org.mozilla.geckoview.test.WebExecutorTest.readTimeout | java.lang.Exception: Unexpected exception, expected<java.io.IOException> but was<java.util.concurrent.TimeoutException>
[task 2020-05-05T22:46:40.006Z] 22:46:40     INFO -  TEST-INFO took 30059ms
Flags: needinfo?(agi)
Pushed by asferro@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/a324be3f18c5 Catch exception thrown by newURI. r=snorp https://hg.mozilla.org/integration/autoland/rev/c837429d83c0 Only send ActionDelegate:Attached when the delegate is not null. r=snorp https://hg.mozilla.org/integration/autoland/rev/604268c82e23 Collect NewTab messages until a delegate is registered. r=snorp https://hg.mozilla.org/integration/autoland/rev/7fbcf8b8e0bf Add nativeMessagingFromContent privileged permission. r=zombie,snorp https://hg.mozilla.org/integration/autoland/rev/f6eea4ab6cfb Add IDs and nativeMessagingFromContent to tests. r=snorp https://hg.mozilla.org/integration/autoland/rev/999a674a5c42 Implement installBuiltIn. r=mixedpuppy,owlish,snorp https://hg.mozilla.org/integration/autoland/rev/e5179f522184 Use installBuiltIn in tests instead of registerWebExtension. r=snorp https://hg.mozilla.org/integration/autoland/rev/26d2567ff94a Make the test-support extension installable. r=owlish,snorp https://hg.mozilla.org/integration/autoland/rev/9bc60d63c9b4 Add deprecation notice for registerWebExtension. r=droeh

Thanks!

Flags: needinfo?(agi)
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: