initial commit
This commit is contained in:
parent
f324a0644f
commit
5b753dc146
10 changed files with 180 additions and 2 deletions
4
.eslintrc.js
Normal file
4
.eslintrc.js
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
module.exports = {
|
||||||
|
"extends": "nightmare-mode",
|
||||||
|
"installedESLint": true
|
||||||
|
};
|
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
README.html
|
||||||
|
*.xpi
|
53
README.md
53
README.md
|
@ -1,3 +1,52 @@
|
||||||
# Test Pilot Containers
|
# Containers: Test Pilot Experiment
|
||||||
|
## AKA ??
|
||||||
|
|
||||||
This repo is the home of a *Containers*-based experiment to be launched in [Firefox Test Pilot](https://github.com/mozilla/testpilot).
|
[](https://testpilot.firefox.com/)
|
||||||
|
|
||||||
|
[Embedded Web Extension](https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Embedded_WebExtensions) to experiment with [Containers](https://blog.mozilla.org/tanvi/2016/06/16/contextual-identities-on-the-web/) in [Firefox Test Pilot](https://testpilot.firefox.com/) to learn:
|
||||||
|
|
||||||
|
* Will a general Firefox audience understand the Containers feature?
|
||||||
|
* Is the UI as currently implemented in Nightly clear or discoverable?
|
||||||
|
|
||||||
|
See [the Product Hypothesis Document for more
|
||||||
|
details](https://docs.google.com/document/d/1WQdHTVXROk7dYkSFluc6_hS44tqZjIrG9I-uPyzevE8/edit?ts=5824ba12#).
|
||||||
|
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
* Firefox 50+
|
||||||
|
|
||||||
|
|
||||||
|
## Run it
|
||||||
|
|
||||||
|
See Development
|
||||||
|
|
||||||
|
|
||||||
|
## Development
|
||||||
|
### Development Environment
|
||||||
|
|
||||||
|
Add-on development is better with [a particular environment](https://developer.mozilla.org/en-US/Add-ons/Setting_up_extension_development_environment). One simple way to get that environment set up is to install the [DevPrefs add-on](https://addons.mozilla.org/en-US/firefox/addon/devprefs/). You can make a custom Firefox profile that includes the DevPrefs add-on, and use that profile when you run the code in this repository.
|
||||||
|
|
||||||
|
1. Make a new profile by running `/path/to/firefox -P`, which launches the profile editor. "Create Profile" -- name it whatever you wish (e.g. 'addon_dev') and store it in the default location. It's probably best to deselect the option to "Use without asking," since you probably don't want to use this as your default profile.
|
||||||
|
|
||||||
|
2. Once you've created your profile, click "Start Firefox". A new instance of Firefox should launch. Go to Tools->Add-ons and search for "DevPrefs". Install it. Quit Firefox.
|
||||||
|
|
||||||
|
3. Now you have a new, vanilla Firefox profile with the DevPrefs add-on installed. You can use your new profile with the code in _this_ repository like so:
|
||||||
|
|
||||||
|
|
||||||
|
### Run with jpm
|
||||||
|
|
||||||
|
1. Clone this repo locally
|
||||||
|
2. `cd testpilot-containers`
|
||||||
|
3. `npm install`
|
||||||
|
4. `./node_modules/.bin/jpm run -p /Path/To/Firefox/Profiles/{junk}.addon_dev -b FirefoxDeveloperEdition`
|
||||||
|
|
||||||
|
Check out the [Browser Toolbox](https://developer.mozilla.org/en-US/docs/Tools/Browser_Toolbox) for more information about debugging add-on code.
|
||||||
|
|
||||||
|
|
||||||
|
### Testing
|
||||||
|
TBD
|
||||||
|
|
||||||
|
|
||||||
|
### Distributing
|
||||||
|
TBD
|
||||||
|
|
16
index.js
Normal file
16
index.js
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
const webExtension = require('sdk/webextension');
|
||||||
|
|
||||||
|
function handleWebExtensionMessage(message, sender, sendReply) {
|
||||||
|
console.log(message);
|
||||||
|
if (message === 'message-from-webextension') {
|
||||||
|
sendReply({
|
||||||
|
content: 'reply-from-sdk'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
webExtension.startup().then(api=> {
|
||||||
|
const {browser} = api;
|
||||||
|
|
||||||
|
browser.runtime.onMessage.addListener(handleWebExtensionMessage);
|
||||||
|
});
|
30
package.json
Normal file
30
package.json
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
"title": "Containers Experiment",
|
||||||
|
|
||||||
|
"name": "testpilot-containers",
|
||||||
|
|
||||||
|
"version": "0.0.1",
|
||||||
|
|
||||||
|
"description": "Containers works by isolating cookie jars using separate origin-attributes defined visually by colored ‘Container Tabs’. This add-on is a modified version of the containers feature for Firefox Test Pilot.",
|
||||||
|
|
||||||
|
"main": "index.js",
|
||||||
|
|
||||||
|
"author": "Luke Crouch & Jonathan Kingston",
|
||||||
|
|
||||||
|
"engines": {
|
||||||
|
"firefox": ">=50.0"
|
||||||
|
},
|
||||||
|
|
||||||
|
"license": "MPL2",
|
||||||
|
|
||||||
|
"keywords": [
|
||||||
|
"jetpack"
|
||||||
|
],
|
||||||
|
|
||||||
|
"hasEmbeddedWebExtension": true,
|
||||||
|
|
||||||
|
"devDependencies": {
|
||||||
|
"jpm": "^1.2.2",
|
||||||
|
"eslint": "^3.12.2"
|
||||||
|
}
|
||||||
|
}
|
19
test/test-index.js
Normal file
19
test/test-index.js
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
var main = require("../");
|
||||||
|
|
||||||
|
exports["test main"] = function(assert) {
|
||||||
|
assert.pass("Unit test running!");
|
||||||
|
};
|
||||||
|
|
||||||
|
exports["test main async"] = function(assert, done) {
|
||||||
|
assert.pass("async Unit test running!");
|
||||||
|
done();
|
||||||
|
};
|
||||||
|
|
||||||
|
exports["test dummy"] = function(assert, done) {
|
||||||
|
main.dummy("foo", function(text) {
|
||||||
|
assert.ok((text === "foo"), "Is the text actually 'foo'");
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
require("sdk/test").run(exports);
|
BIN
webextension/img/icon-50x50.png
Normal file
BIN
webextension/img/icon-50x50.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.3 KiB |
5
webextension/js/popup.js
Normal file
5
webextension/js/popup.js
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
browser.runtime.sendMessage('message-from-webextension').then(reply=> {
|
||||||
|
if (reply) {
|
||||||
|
console.log('response from sdk addon: ', reply.content);
|
||||||
|
}
|
||||||
|
});
|
36
webextension/manifest.json
Normal file
36
webextension/manifest.json
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
{
|
||||||
|
"manifest_version": 2,
|
||||||
|
"name": "Containers Experiment",
|
||||||
|
"version": "0.0.1",
|
||||||
|
|
||||||
|
"description": "Containers works by isolating cookie jars using separate origin-attributes defined visually by colored ‘Container Tabs’. This add-on is a modified version of the containers feature for Firefox Test Pilot.",
|
||||||
|
"icons": {
|
||||||
|
"48": "img/blok-48.png",
|
||||||
|
"96": "img/blok-96.png"
|
||||||
|
},
|
||||||
|
|
||||||
|
"applications": {
|
||||||
|
"gecko": {
|
||||||
|
"id": "testpilot-containers@mozilla.org",
|
||||||
|
"strict_min_version": "50.0",
|
||||||
|
"update_url": "https://testpilot.firefox.com/files/containers/updates.json"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"homepage_url": "https://testpilot.firefox.com/",
|
||||||
|
|
||||||
|
"permissions": [
|
||||||
|
],
|
||||||
|
|
||||||
|
"browser_action": {
|
||||||
|
"browser_style": true,
|
||||||
|
"default_icon": {
|
||||||
|
"16": "img/icon-50x50.png",
|
||||||
|
"32": "img/icon-50x50.png"
|
||||||
|
},
|
||||||
|
"default_title": "Containers",
|
||||||
|
"default_popup": "popup.html"
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
17
webextension/popup.html
Normal file
17
webextension/popup.html
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||||
|
<title>Containers browserAction Popup</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Containers!</h1>
|
||||||
|
<ul>
|
||||||
|
<li><a href="#">Personal</a></li>
|
||||||
|
<li><a href="#">Work</a></li>
|
||||||
|
<li><a href="#">Banking</a></li>
|
||||||
|
<li><a href="#">Shopping</a></li>
|
||||||
|
</ul>
|
||||||
|
<h3><a href="#">Edit Containers</a></h3>
|
||||||
|
<script src="js/popup.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Add table
Reference in a new issue