initial commit

This commit is contained in:
groovecoder 2016-12-15 16:27:05 -06:00
parent f324a0644f
commit 5b753dc146
10 changed files with 180 additions and 2 deletions

4
.eslintrc.js Normal file
View file

@ -0,0 +1,4 @@
module.exports = {
"extends": "nightmare-mode",
"installedESLint": true
};

2
.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
README.html
*.xpi

View file

@ -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).
[![Available on Test Pilot](https://img.shields.io/badge/available_on-Test_Pilot-0996F8.svg)](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
View 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
View 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
View 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);

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

5
webextension/js/popup.js Normal file
View file

@ -0,0 +1,5 @@
browser.runtime.sendMessage('message-from-webextension').then(reply=> {
if (reply) {
console.log('response from sdk addon: ', reply.content);
}
});

View 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
View 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>