Convert specialpowers from a bootstrapped extension to a webextension

RESOLVED FIXED in Firefox 63

Status

enhancement
P3
normal
RESOLVED FIXED
Last year
11 months ago

People

(Reporter: aswan, Assigned: aswan)

Tracking

Version 3
mozilla63
Points:
---
Dependency tree / graph

Firefox Tracking Flags

(firefox63 fixed)

Details

Attachments

(1 attachment)

This will entail using a bundled WebExtension experiment
WebExtension experiment cannot currently provide APIs to extension content scripts so our choices here are:
1. Do a quick-and-dirty job to wrap all the current specialpowers code in an experimental API
2. Extend experiments to be able to provide content script APIs and then rewrite a bunch of the specialpowers injection code to use webextension content scripts.

Kris, with the amount of other stuff in front of us right now, I'm inclined to do option 1 right now.  That doesn't prevent us from doing option 2 some day.  Any objection?
Flags: needinfo?(kmaglione+bmo)
Priority: -- → P3
Attachment #8988603 - Flags: review?(kmaglione+bmo)
Comment on attachment 8988603 [details]
Bug 1451519 Convert specialpowers to a webextension

https://reviewboard.mozilla.org/r/253840/#review260598

\o/

::: testing/specialpowers/api.js:24
(Diff revision 2)
> -    observer.SpecialPowersObserverFactory
> -  );
> +
> +    ChromeUtils.import("resource://specialpowers/SpecialPowersObserver.jsm");
> +    this.observer = new SpecialPowersObserver();
> +    this.observer.init();
>  
> -  spObserver = new observer.SpecialPowersObserver();
> +    this.extension.callOnClose(this);

Can just replace `close` with `onShutdown` and get rid of this.
Attachment #8988603 - Flags: review?(kmaglione+bmo) → review+
Assignee: nobody → aswan
Comment on attachment 8988603 [details]
Bug 1451519 Convert specialpowers to a webextension

https://reviewboard.mozilla.org/r/253840/#review260690


Code analysis found 1 defect in this patch:
 - 1 defect found by mozlint

You can run this analysis locally with:
 - `./mach lint path/to/file` (JS/Python)


If you see a problem in this automated review, please report it here: http://bit.ly/2y9N9Vx


::: browser/components/extensions/test/browser/browser_ext_autocompletepopup.js:6
(Diff revision 3)
>  /* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
>  /* vim: set sts=2 sw=2 et tw=80: */
>  "use strict";
>  
>  add_task(async function testAutocompletePopup() {
> +  debugger;

Error: Unexpected 'debugger' statement. [eslint: no-debugger]
Pushed by aswan@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/722113b8204d
Convert specialpowers to a webextension r=kmag
Backed out changeset 722113b8204d (bug 1451519) for browser-chrome failures at browser/base/content/test/performance/browser_startup_content.js

Backout: https://hg.mozilla.org/integration/autoland/rev/a9fc2e1230218572f529ce51b44008f1efa40928

Failure push: https://treeherder.mozilla.org/#/jobs?repo=autoland&revision=722113b8204d8abfe8abfba74df5689ac1c31029

Failure log: https://treeherder.mozilla.org/logviewer.html#?job_id=185629013&repo=autoland&lineNumber=2012

11:23:09     INFO - checking window state
11:23:09     INFO - TEST-START | browser/base/content/test/performance/browser_startup_content.js
11:23:09     INFO - Console message: [JavaScript Warning: "Use of nsIFile in content process is deprecated." {file: "resource://gre/modules/FileUtils.jsm" line: 170}]
11:23:09     INFO - GECKO(826) | 2018-06-29 11:23:09.920 plugin-container[831:8656] *** CFMessagePort: bootstrap_register(): failed 1100 (0x44c) 'Permission denied', port = 0x9047, name = 'com.apple.tsm.portname'
11:23:09     INFO - GECKO(826) | See /usr/include/servers/bootstrap_defs.h for the error codes.
11:23:09     INFO - Console message: [JavaScript Warning: "Use of nsIFile in content process is deprecated." {file: "resource://gre/modules/FileUtils.jsm" line: 170}]
11:23:09     INFO - GECKO(826) | 2018-06-29 11:23:09.980 plugin-container[832:8699] *** CFMessagePort: bootstrap_register(): failed 1100 (0x44c) 'Permission denied', port = 0x935b, name = 'com.apple.tsm.portname'
11:23:09     INFO - GECKO(826) | See /usr/include/servers/bootstrap_defs.h for the error codes.
11:23:10     INFO - TEST-PASS | browser/base/content/test/performance/browser_startup_content.js | should have no unexpected components loaded on content process startup - 
11:23:10     INFO - TEST-PASS | browser/base/content/test/performance/browser_startup_content.js | all components whitelist entries should have been used - 
11:23:10     INFO - TEST-INFO | started process screencapture
11:23:10     INFO - TEST-INFO | screencapture: exit 0
11:23:10     INFO - Buffered messages logged at 11:23:09
11:23:10     INFO - Entering test bound 
11:23:10     INFO - Buffered messages finished
11:23:10     INFO - TEST-UNEXPECTED-FAIL | browser/base/content/test/performance/browser_startup_content.js | should have no unexpected modules loaded on content process startup - Got 3, expected 0
11:23:10     INFO - Stack trace:
11:23:10     INFO - chrome://mochikit/content/browser-test.js:test_is:1300
11:23:10     INFO - chrome://mochitests/content/browser/browser/base/content/test/performance/browser_startup_content.js:null:148
11:23:10     INFO - chrome://mochikit/content/browser-test.js:Tester_execTest/<:1098
11:23:10     INFO - chrome://mochikit/content/browser-test.js:Tester_execTest:1089
11:23:10     INFO - chrome://mochikit/content/browser-test.js:nextTest/<:991
11:23:10     INFO - chrome://mochikit/content/tests/SimpleTest/SimpleTest.js:SimpleTest.waitForFocus/waitForFocusInner/focusedOrLoaded/<:795
11:23:10     INFO - Not taking screenshot here: see the one that was previously logged
11:23:10     INFO - TEST-UNEXPECTED-FAIL | browser/base/content/test/performance/browser_startup_content.js | Unexpected modules loaded during content process startup: resource://specialpowers/MockFilePicker.jsm - 
11:23:10     INFO - Stack trace:
11:23:10     INFO - chrome://mochitests/content/browser/browser/base/content/test/performance/browser_startup_content.js:null:152
11:23:10     INFO - chrome://mochikit/content/browser-test.js:Tester_execTest/<:1098
11:23:10     INFO - chrome://mochikit/content/browser-test.js:Tester_execTest:1089
11:23:10     INFO - chrome://mochikit/content/browser-test.js:nextTest/<:991
11:23:10     INFO - chrome://mochikit/content/tests/SimpleTest/SimpleTest.js:SimpleTest.waitForFocus/waitForFocusInner/focusedOrLoaded/<:795
11:23:10     INFO - Stack that loaded resource://specialpowers/MockFilePicker.jsm:
11:23:10     INFO - 
11:23:10     INFO - 0 <TOP LEVEL> ["resource://specialpowers/specialpowersAPI.js":15]
11:23:10     INFO - 
11:23:10     INFO - Not taking screenshot here: see the one that was previously logged
11:23:10     INFO - TEST-UNEXPECTED-FAIL | browser/base/content/test/performance/browser_startup_content.js | Unexpected modules loaded during content process startup: resource://specialpowers/MockPermissionPrompt.jsm - 
11:23:10     INFO - Stack trace:
Flags: needinfo?(aswan)
rebased, updated, re-landed
Flags: needinfo?(aswan)
Pushed by aswan@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/c1335d07ea34
Convert specialpowers to a webextension r=kmag
https://hg.mozilla.org/mozilla-central/rev/c1335d07ea34
Status: NEW → RESOLVED
Closed: Last year
Resolution: --- → FIXED
Target Milestone: --- → mozilla63
Flags: needinfo?(kmaglione+bmo)
You need to log in before you can comment on or make changes to this bug.