aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--Makefile19
-rw-r--r--contexts/Makefile364
-rw-r--r--contexts/README.md40
-rw-r--r--contexts/build.mk280
-rw-r--r--contexts/chrome/.gitignore1
-rw-r--r--contexts/data/fiveui/firefox/bootstrap.js22
-rw-r--r--doc/build.mk4
-rw-r--r--exampleData/ruleSets/colorRules/backgroundCheck.js4
-rw-r--r--exampleData/ruleSets/colorRules/foregroundCheck.js2
-rw-r--r--src/js/chrome/background.html (renamed from contexts/data/fiveui/chrome/background.html)15
-rw-r--r--src/js/chrome/build.mk48
-rw-r--r--src/js/chrome/injected/platform-compute.js (renamed from contexts/data/fiveui/chrome/chrome-injected-compute.js)0
-rw-r--r--src/js/chrome/injected/platform-ui.js (renamed from contexts/data/fiveui/chrome/chrome-injected-ui.js)0
-rw-r--r--src/js/chrome/js/platform-ajax.js (renamed from contexts/data/fiveui/chrome/ajax.js)0
-rw-r--r--src/js/chrome/js/platform-background.js (renamed from contexts/data/fiveui/chrome/background.js)12
-rw-r--r--src/js/chrome/js/platform-options.js (renamed from contexts/data/fiveui/chrome/chrome-options.js)3
-rw-r--r--src/js/chrome/js/platform-port.js (renamed from contexts/data/fiveui/chrome/chrome-port.js)0
-rw-r--r--src/js/chrome/manifest.json (renamed from contexts/manifest.json)12
-rw-r--r--src/js/firefox/build.mk102
-rw-r--r--src/js/firefox/icons/fiveui-icon.html (renamed from contexts/data/fiveui/firefox/icon-content.html)0
-rw-r--r--src/js/firefox/icons/fiveui-icon.js (renamed from contexts/data/fiveui/firefox/icon-script.js)0
-rw-r--r--src/js/firefox/icons/options-icon.html (renamed from contexts/data/fiveui/firefox/options-icon.html)0
-rw-r--r--src/js/firefox/icons/options-icon.js (renamed from contexts/data/fiveui/firefox/options-script.js)0
-rw-r--r--src/js/firefox/injected/platform-compute.js (renamed from contexts/data/fiveui/firefox/firefox-injected-compute.js)0
-rw-r--r--src/js/firefox/injected/platform-ui.js (renamed from contexts/data/fiveui/firefox/firefox-injected-ui.js)0
-rw-r--r--src/js/firefox/js/platform-ajax.js8
-rw-r--r--src/js/firefox/js/platform-options.js (renamed from contexts/data/fiveui/firefox/firefox-options.js)0
-rw-r--r--src/js/firefox/lib/ajax.js (renamed from contexts/data/fiveui/firefox/ajax.js)5
-rw-r--r--src/js/firefox/lib/main.js (renamed from contexts/data/fiveui/firefox/main.js)62
-rw-r--r--src/js/firefox/lib/storage-wrapper.js (renamed from contexts/data/fiveui/firefox/storage.js)8
-rw-r--r--src/js/firefox/lib/tabIds.js (renamed from contexts/data/fiveui/firefox/tabIds.js)20
-rw-r--r--src/js/firefox/package.json (renamed from contexts/package.json)4
-rw-r--r--src/js/firefox/test/test-main.js (renamed from contexts/data/fiveui/firefox/test/test-main.js)0
-rw-r--r--src/js/fiveui/build.mk129
-rw-r--r--src/js/fiveui/css/entry.css (renamed from contexts/data/fiveui/entry.css)0
-rw-r--r--src/js/fiveui/css/options.css (renamed from contexts/data/fiveui/options.css)2
-rw-r--r--src/js/fiveui/images/Gear_3.svg (renamed from contexts/data/fiveui/images/Gear_3.svg)0
-rw-r--r--src/js/fiveui/images/attribution.txt (renamed from contexts/data/fiveui/images/attribution.txt)0
-rw-r--r--src/js/fiveui/images/down-arrow.png (renamed from contexts/data/fiveui/images/down-arrow.png)bin4791 -> 4791 bytes
-rw-r--r--src/js/fiveui/images/down-arrow.svg (renamed from contexts/data/fiveui/images/down-arrow.svg)0
-rw-r--r--src/js/fiveui/images/errorCircle.png (renamed from contexts/data/fiveui/images/errorCircle.png)bin22950 -> 22950 bytes
-rw-r--r--src/js/fiveui/images/fiveui-icon-128.png (renamed from contexts/data/fiveui/images/fiveui-icon-128.png)bin4703 -> 4703 bytes
-rw-r--r--src/js/fiveui/images/fiveui-icon-16.png (renamed from contexts/data/fiveui/images/fiveui-icon-16.png)bin655 -> 655 bytes
-rw-r--r--src/js/fiveui/images/fiveui-icon-48.png (renamed from contexts/data/fiveui/images/fiveui-icon-48.png)bin1826 -> 1826 bytes
-rw-r--r--src/js/fiveui/images/fiveui-icon-disabled.png (renamed from contexts/data/fiveui/images/fiveui-icon-disabled.png)bin858 -> 858 bytes
-rw-r--r--src/js/fiveui/images/fiveui-icon-enabled.png (renamed from contexts/data/fiveui/images/fiveui-icon-enabled.png)bin900 -> 900 bytes
-rw-r--r--src/js/fiveui/images/fiveui-icon-working.png (renamed from contexts/data/fiveui/images/fiveui-icon-working.png)bin1107 -> 1107 bytes
-rw-r--r--src/js/fiveui/images/right-arrow.png (renamed from contexts/data/fiveui/images/right-arrow.png)bin4991 -> 4991 bytes
-rw-r--r--src/js/fiveui/images/right-arrow.svg (renamed from contexts/data/fiveui/images/right-arrow.svg)0
-rw-r--r--src/js/fiveui/images/warningTriangle.png (renamed from contexts/data/fiveui/images/warningTriangle.png)bin21341 -> 21341 bytes
-rw-r--r--src/js/fiveui/injected/compute.js (renamed from contexts/data/fiveui/injected/fiveui-injected-compute.js)4
-rw-r--r--src/js/fiveui/injected/injected.css (renamed from contexts/data/fiveui/injected/injected.css)0
-rw-r--r--src/js/fiveui/injected/jquery-plugins.js (renamed from contexts/data/fiveui/injected/jquery-plugins.js)0
-rw-r--r--src/js/fiveui/injected/prelude.js (renamed from contexts/data/fiveui/injected/prelude.js)4
-rw-r--r--src/js/fiveui/injected/ui.js (renamed from contexts/data/fiveui/injected/fiveui-injected-ui.js)0
-rw-r--r--src/js/fiveui/js/background.js (renamed from contexts/data/fiveui/background.js)26
-rw-r--r--src/js/fiveui/js/chan.js (renamed from contexts/data/fiveui/chan.js)0
-rw-r--r--src/js/fiveui/js/entry.js (renamed from contexts/data/fiveui/entry.js)0
-rw-r--r--src/js/fiveui/js/ffcheck.js (renamed from contexts/data/fiveui/ffcheck.js)0
-rw-r--r--src/js/fiveui/js/messenger.js (renamed from contexts/data/fiveui/messenger.js)0
-rw-r--r--src/js/fiveui/js/options.js (renamed from contexts/data/fiveui/options.js)0
-rw-r--r--src/js/fiveui/js/rules.js (renamed from contexts/data/fiveui/rules.js)13
-rw-r--r--src/js/fiveui/js/set.js (renamed from contexts/data/fiveui/set.js)0
-rw-r--r--src/js/fiveui/js/settings.js (renamed from contexts/data/fiveui/settings.js)4
-rw-r--r--src/js/fiveui/js/state.js (renamed from contexts/data/fiveui/state.js)0
-rw-r--r--src/js/fiveui/js/update-manager.js (renamed from contexts/data/fiveui/update-manager.js)0
-rw-r--r--src/js/fiveui/js/url-pat.js (renamed from contexts/data/fiveui/url-pat.js)0
-rw-r--r--src/js/fiveui/js/utils.js (renamed from contexts/data/fiveui/utils.js)0
-rw-r--r--src/js/fiveui/options.html (renamed from contexts/data/fiveui/options.html)23
-rw-r--r--src/js/lib/backbone.js (renamed from contexts/data/lib/backbone.js)0
-rwxr-xr-xsrc/js/lib/jquery/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png (renamed from contexts/data/lib/jquery/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png)bin260 -> 260 bytes
-rwxr-xr-xsrc/js/lib/jquery/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png (renamed from contexts/data/lib/jquery/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png)bin251 -> 251 bytes
-rwxr-xr-xsrc/js/lib/jquery/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png (renamed from contexts/data/lib/jquery/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png)bin178 -> 178 bytes
-rwxr-xr-xsrc/js/lib/jquery/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png (renamed from contexts/data/lib/jquery/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png)bin104 -> 104 bytes
-rwxr-xr-xsrc/js/lib/jquery/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png (renamed from contexts/data/lib/jquery/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png)bin153 -> 153 bytes
-rwxr-xr-xsrc/js/lib/jquery/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png (renamed from contexts/data/lib/jquery/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png)bin105 -> 105 bytes
-rwxr-xr-xsrc/js/lib/jquery/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png (renamed from contexts/data/lib/jquery/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png)bin4427 -> 4427 bytes
-rwxr-xr-xsrc/js/lib/jquery/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png (renamed from contexts/data/lib/jquery/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png)bin90 -> 90 bytes
-rwxr-xr-xsrc/js/lib/jquery/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png (renamed from contexts/data/lib/jquery/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png)bin129 -> 129 bytes
-rwxr-xr-xsrc/js/lib/jquery/css/ui-lightness/images/ui-icons_222222_256x240.png (renamed from contexts/data/lib/jquery/css/ui-lightness/images/ui-icons_222222_256x240.png)bin4369 -> 4369 bytes
-rwxr-xr-xsrc/js/lib/jquery/css/ui-lightness/images/ui-icons_228ef1_256x240.png (renamed from contexts/data/lib/jquery/css/ui-lightness/images/ui-icons_228ef1_256x240.png)bin4369 -> 4369 bytes
-rwxr-xr-xsrc/js/lib/jquery/css/ui-lightness/images/ui-icons_ef8c08_256x240.png (renamed from contexts/data/lib/jquery/css/ui-lightness/images/ui-icons_ef8c08_256x240.png)bin4369 -> 4369 bytes
-rwxr-xr-xsrc/js/lib/jquery/css/ui-lightness/images/ui-icons_ffd27a_256x240.png (renamed from contexts/data/lib/jquery/css/ui-lightness/images/ui-icons_ffd27a_256x240.png)bin4369 -> 4369 bytes
-rwxr-xr-xsrc/js/lib/jquery/css/ui-lightness/images/ui-icons_ffffff_256x240.png (renamed from contexts/data/lib/jquery/css/ui-lightness/images/ui-icons_ffffff_256x240.png)bin4369 -> 4369 bytes
-rwxr-xr-xsrc/js/lib/jquery/css/ui-lightness/jquery-ui-1.9.2.custom.css (renamed from contexts/data/lib/jquery/css/ui-lightness/jquery-ui-1.9.2.custom.css)0
-rwxr-xr-xsrc/js/lib/jquery/css/ui-lightness/jquery-ui-1.9.2.custom.min.css (renamed from contexts/data/lib/jquery/css/ui-lightness/jquery-ui-1.9.2.custom.min.css)0
l---------src/js/lib/jquery/css/ui-lightness/jquery-ui.css (renamed from contexts/data/lib/jquery/css/ui-lightness/jquery-ui.css)0
-rwxr-xr-xsrc/js/lib/jquery/jquery-1.8.3.js (renamed from contexts/data/lib/jquery/jquery-1.8.3.js)0
-rwxr-xr-xsrc/js/lib/jquery/jquery-ui-1.9.2.custom.js (renamed from contexts/data/lib/jquery/jquery-ui-1.9.2.custom.js)0
-rwxr-xr-xsrc/js/lib/jquery/jquery-ui-1.9.2.custom.min.js (renamed from contexts/data/lib/jquery/jquery-ui-1.9.2.custom.min.js)0
l---------src/js/lib/jquery/jquery-ui.js (renamed from contexts/data/lib/jquery/jquery-ui.js)0
l---------src/js/lib/jquery/jquery.js (renamed from contexts/data/lib/jquery/jquery.js)0
-rw-r--r--[-rwxr-xr-x]src/js/lib/md5.js (renamed from contexts/data/lib/jshash/md5.js)0
-rw-r--r--src/js/lib/phantomjs_jasmine/jasmine-1.0.2/MIT.LICENSE (renamed from contexts/data/lib/phantomjs_jasmine/jasmine-1.0.2/MIT.LICENSE)0
-rw-r--r--src/js/lib/phantomjs_jasmine/jasmine-1.0.2/jasmine-html.js (renamed from contexts/data/lib/phantomjs_jasmine/jasmine-1.0.2/jasmine-html.js)0
-rw-r--r--src/js/lib/phantomjs_jasmine/jasmine-1.0.2/jasmine.css (renamed from contexts/data/lib/phantomjs_jasmine/jasmine-1.0.2/jasmine.css)0
-rw-r--r--src/js/lib/phantomjs_jasmine/jasmine-1.0.2/jasmine.js (renamed from contexts/data/lib/phantomjs_jasmine/jasmine-1.0.2/jasmine.js)0
-rw-r--r--src/js/lib/phantomjs_jasmine/jasmine-reporters/jasmine.phantomjs-reporter.js (renamed from contexts/data/lib/phantomjs_jasmine/jasmine-reporters/jasmine.phantomjs-reporter.js)0
-rw-r--r--src/js/lib/phantomjs_jasmine/jasmine_favicon.png (renamed from contexts/data/lib/jasmine/jasmine_favicon.png)bin905 -> 905 bytes
-rw-r--r--src/js/lib/phantomjs_jasmine/phantomjs_jasminexml_runner.js (renamed from contexts/data/lib/phantomjs_jasmine/phantomjs_jasminexml_runner.js)0
-rw-r--r--src/js/lib/phantomjs_jasmine/utils/core.js (renamed from contexts/data/lib/phantomjs_jasmine/utils/core.js)0
-rw-r--r--src/js/lib/underscore.js (renamed from contexts/data/lib/underscore.js)0
-rw-r--r--src/js/selenium/selenium-injected-compute.js (renamed from contexts/data/fiveui/selenium/selenium-injected-compute.js)0
-rw-r--r--src/js/tests/.gitignore1
-rw-r--r--src/js/tests/PhantomJSJasmineRunner.html (renamed from contexts/data/tests/PhantomJSJasmineRunner.html)16
-rw-r--r--src/js/tests/README.md (renamed from contexts/data/tests/README.md)0
-rw-r--r--src/js/tests/SpecRunner.html (renamed from contexts/data/tests/SpecRunner.html)26
-rw-r--r--src/js/tests/build.mk18
-rw-r--r--src/js/tests/jasmine/MIT.LICENSE (renamed from contexts/data/lib/jasmine/MIT.LICENSE)0
-rw-r--r--src/js/tests/jasmine/boot.js (renamed from contexts/data/lib/jasmine/boot.js)0
-rw-r--r--src/js/tests/jasmine/jasmine-html.js (renamed from contexts/data/lib/jasmine/jasmine-html.js)0
-rw-r--r--src/js/tests/jasmine/jasmine.css (renamed from contexts/data/lib/jasmine/jasmine.css)0
-rw-r--r--src/js/tests/jasmine/jasmine.js (renamed from contexts/data/lib/jasmine/jasmine.js)0
-rw-r--r--src/js/tests/jasmine/jasmine_favicon.png (renamed from contexts/data/lib/phantomjs_jasmine/jasmine_favicon.png)bin905 -> 905 bytes
-rw-r--r--src/js/tests/mock-storage.js (renamed from contexts/data/tests/mock-storage.js)0
-rw-r--r--src/js/tests/specs/messenger.js (renamed from contexts/data/tests/specs/messenger.js)0
-rw-r--r--src/js/tests/specs/prelude.js (renamed from contexts/data/tests/specs/prelude.js)0
-rw-r--r--src/js/tests/specs/rules.js (renamed from contexts/data/tests/specs/rules.js)0
-rw-r--r--src/js/tests/specs/set.js (renamed from contexts/data/tests/specs/set.js)0
-rw-r--r--src/js/tests/specs/settings.js (renamed from contexts/data/tests/specs/settings.js)0
-rw-r--r--src/js/tests/specs/state.js (renamed from contexts/data/tests/specs/state.js)0
-rw-r--r--src/js/tests/specs/utils.js (renamed from contexts/data/tests/specs/utils.js)0
123 files changed, 463 insertions, 839 deletions
diff --git a/.gitignore b/.gitignore
index d657933..f8a7b52 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,3 +11,4 @@ fiveui.xpi
contexts/data/tests/reports
Config.mk
+fiveui.pem
diff --git a/Makefile b/Makefile
index d98b544..f00f25c 100644
--- a/Makefile
+++ b/Makefile
@@ -59,7 +59,11 @@ clean::
# Subdirs ######################################################################
-$(eval $(call subdir,contexts))
+$(eval $(call subdir,src/js/fiveui))
+$(eval $(call subdir,src/js/chrome))
+$(eval $(call subdir,src/js/firefox))
+$(eval $(call subdir,src/js/tests))
+
$(eval $(call subdir,profiles))
$(eval $(call subdir,doc))
@@ -92,16 +96,3 @@ test: fiveui.crx fiveui.xpi $(topdir)/profiles/chrome $(topdir)/profiles/firefox
cd $(HEADLESS_DIR) && $(MVN_TEST_CMD)
endif
-
-
-# JS Unit Tests ###############################################################
-
-ifneq "$(PHANTOM_EXE)" ""
-
-test: test-js
-test-js:
- cd $(topdir)/contexts/data && $(PHANTOM_EXE) \
- lib/phantomjs_jasmine/phantomjs_jasminexml_runner.js \
- tests/PhantomJSJasmineRunner.html tests/reports/
-
-endif
diff --git a/contexts/Makefile b/contexts/Makefile
deleted file mode 100644
index 530a3dc..0000000
--- a/contexts/Makefile
+++ /dev/null
@@ -1,364 +0,0 @@
-# Module : Makefile
-# Copyright : (c) 2011-2012, Galois, Inc.
-#
-# Maintainer :
-# Stability : Provisional
-# Portability: Portable
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-# Entry Point ##################################################################
-
-.PHONY: all
-all: compile package install ;
-
-
-# Environment ##################################################################
-
-BUILD_ROOT := $(CURDIR)
-REPO_ROOT := $(CURDIR)/..
-INSTALL_DIR := $(REPO_ROOT)/binaries
-
-ADDON_SDK := $(REPO_ROOT)/tools/addon-sdk
-BUILD_DIR := $(REPO_ROOT)/build
-
-CHROME_DIR := $(BUILD_ROOT)/chrome
-DATA_DIR := $(BUILD_ROOT)/data
-
-BIN_DIR := $(DATA_DIR)/target
-FIVEUI_DATA_DIR := $(DATA_DIR)/fiveui
-LIB_DIR := $(DATA_DIR)/lib
-
-MV := mv
-
-# FiveUI project Javascript sources
-js_sources := $(wildcard $(FIVEUI_DATA_DIR)/*.js)
-
-# Namespaces, derived from the project sources.
-js_namespaces := $(shell ./namespaces.awk $(js_sources))
-
-# FiveUI project Javascript, known to contain application code, not library
-# code.
-js_app_sources := \
- $(FIVEUI_DATA_DIR)/options.js \
- $(FIVEUI_DATA_DIR)/firefox/firefox-options.js \
- $(FIVEUI_DATA_DIR)/chrome/chrome-options.js
-
-# Namespaces that are known to be just applications
-js_app_namespaces := $(shell ./namespaces.awk $(js_app_sources))
-
-# Namespaces that contain only library code
-js_lib_namespaces := $(foreach ns,$(js_app_namespaces),\
- $(filter-out $(ns),$(js_namespaces)))
-
-# The path to the closure library
-CLOSURE_LIB := $(DATA_DIR)/lib/closure-library
-
-
-# Macros #######################################################################
-
-# Generate a set of targets that will allow directory creation to be depended on
-# by other targets.
-#
-# $1 - the directory name
-define dir-exists
-$1/.token:
- mkdir $1 && touch $$@
-endef
-
-dir-dep = $1/.token
-
-# The ../../../../../ correpsonds to the relative path from
-# goog/base.js to the context directory.
-#
-# $1 - The path (relative to BUILD_ROOT) to generate a root_with_prefix pair for
-goog-relative = $(BUILD_ROOT)/$1 ../../../../../$1
-
-# Remove the target of the current rule when the provided command exits on
-# failure.
-#
-# $1 - The command to run
-rm-on-failure = ( $1 || ($(RM) $@; exit 1) )
-
-define profile
-.PHONY: profile-$1
-profile-$1: $(REPO_ROOT)/profiles/$1/.token
-
-$(REPO_ROOT)/profiles/$1/.token: $(REPO_ROOT)/profiles/$1.tar
- $(MAKE) -C $(REPO_ROOT)/profiles $1
-
-.PHONY: clean-profile-$1
-clean-profile-$1:
- $(MAKE) -C $(REPO_ROOT)/profiles clean-$1
-
-clean: clean-profile-$1
-endef
-
-# General Targets ##############################################################
-
-.PHONY: compile
-compile:
-
-.PHONY: package
-package:
-
-.PHONY: install
-install:
-
-.PHONY: clean
-clean:
-
-# Print out the value of a variable, useful for debugging.
-print-%:
- @echo "$* = $($*)"
-
-# BIN_DIR management
-$(eval $(call dir-exists,$(BIN_DIR)))
-
-clean: clean-BIN_DIR
-
-.PHONY: clean-BIN_DIR
-clean-BIN_DIR:
- @echo "Cleaning $(BIN_DIR)"
- $(RM) -r $(BIN_DIR)
-
-
-# CSS Utilities ################################################################
-
-css_bundle := $(BUILD_DIR)/css-bundle.py
-
-# The jquery-ui css, in a form that has its image dependencies compiled in as
-# base-64 encoded data.
-$(BIN_DIR)/bundled.css: $(call dir-dep,$(BIN_DIR))
- cd $(LIB_DIR)/jquery/css/ui-lightness/ && \
- $(css_bundle) jquery-ui.css $@
-
-# The injected css, with its images compiled in.
-$(BIN_DIR)/injected.css: $(call dir-dep,$(BIN_DIR)) \
- $(FIVEUI_DATA_DIR)/injected/injected.css
- cd $(FIVEUI_DATA_DIR)/injected && \
- $(css_bundle) injected.css $@
-
-
-# Javascript Utilities #########################################################
-
-cl_linter := $(BUILD_DIR)/closure-linter
-#cl_compiler := $(BUILD_DIR)/closure-compiler
-#cl_typecheck := $(BUILD_DIR)/closure-typechecker
-
-# Files to ignore when running the linter
-lint_excludes := lib/jquery.js
-
-# Run the linter over the project javascript sources.
-.PHONY: lint
-lint:
- find data/fiveui -name "*.js" | xargs $(cl_linter) --strict --exclude_files=$(lint_excludes)
-
-closurebuilder := $(CLOSURE_LIB)/closure/bin/build/closurebuilder.py \
- --root=$(CLOSURE_LIB) --root=$(FIVEUI_DATA_DIR) \
- --compiler_jar=$(REPO_ROOT)/tools/closure_compiler/compiler.jar \
- --compiler_flags="--jscomp_error=checkTypes"
-
-# Typecheck all the project javascript source.
-.PHONY: typecheck
-typecheck: $(js_sources)
- $(closurebuilder) --output_file=$(BIN_DIR)/trash.out --output_mode=compiled \
- $(foreach ns,$(js_namespaces),--namespace=$(ns)) && \
- $(RM) $(BIN_DIR)/trash.out
-
-
-depswriter := /usr/bin/env $(CLOSURE_LIB)/closure/bin/build/depswriter.py
-
-# The dependency graph for the project javascript.
-$(BIN_DIR)/deps.js: $(call dir-dep,$(BIN_DIR)) $(js_sources)
- $(depswriter) --root_with_prefix="$(call goog-relative,data/fiveui)" \
- --output_file=$@
-
-.PHONY: deps
-deps: $(BIN_DIR)/deps.js;
-
-compile: deps
-
-closure-js := $(CLOSURE_LIB)/closure/bin/build/closurebuilder.py \
- --root=$(CLOSURE_LIB) \
- --root=$(FIVEUI_DATA_DIR) \
- --compiler_jar=$(REPO_ROOT)/tools/closure_compiler/compiler.jar \
- --compiler_flags="--accept_const_keyword" \
- --compiler_flags="--formatting=PRETTY_PRINT" \
- --output_mode="compiled"
-
-compile-js := $(BUILD_ROOT)/compile-js.sh --output_mode=script
-
-# Chrome Compilation ###########################################################
-
-CHROME_OPTS := --pack-extension=$(BIN_DIR)/src \
- --pack-extension-key=$(BIN_DIR)/fiveui.pem
-
-compile: compile-chrome
-
-CHROME_TARGETS := $(BIN_DIR)/chrome-background.js $(BIN_DIR)/bundled.css \
- $(BIN_DIR)/chrome-options.js $(BIN_DIR)/injected.css
-
-.PHONY: compile-chrome
-compile-chrome: $(CHROME_TARGETS)
-
-# Build the compiled chrome backend script.
-$(BIN_DIR)/chrome-background.js: $(call dir-dep,$(BIN_DIR)) $(js_sources)
- $(call rm-on-failure,$(compile-js) --namespace=fiveui.chrome.background > $@)
-
-# Build the compiled options script.
-$(BIN_DIR)/chrome-options.js: $(call dir-dep,$(BIN_DIR)) $(js_sources)
- $(call rm-on-failure,$(compile-js) \
- --namespace=fiveui.chrome.options.init > $@)
-
-# Clean chrome extension build artifacts.
-.PHONY: clean-chrome
-clean-chrome:
- @echo Cleaning Chrome extension...
- $(RM) fiveui.crx
-
-clean: clean-chrome
-
-
-# Firefox Compilation ##########################################################
-
-# Sources the correct environment before invoking the cfx command.
-#
-# $1 - The desired arguments to the cfx command.
-cfx = ( cd $(ADDON_SDK) > /dev/null && \
- . bin/activate > /dev/null && \
- cd - > /dev/null && \
- cfx $1)
-
-.PHONY: firefox
-firefox: package-firefox
-
-$(eval $(call profile,firefox))
-
-compile: compile-firefox
-
-FIREFOX_TARGETS := profile-firefox $(BIN_DIR)/firefox-main.js \
- $(BIN_DIR)/bundled.css $(BIN_DIR)/firefox-options.js \
- $(BIN_DIR)/injected.css
-
-.PHONY: compile-firefox
-compile-firefox: $(FIREFOX_TARGETS)
-
-$(BIN_DIR)/fiveui.js: $(call dir-dep,$(BIN_DIR)) $(js_sources)
- $(call rm-on-failure,$(compile-js) \
- $(foreach ns,$(js_lib_namespaces), --namespace=$(ns)) > $@)
- echo 'exports.fiveui = fiveui;' >> $@
-
-$(BIN_DIR)/firefox-main.js: $(call dir-dep,$(BIN_DIR)) $(js_sources)
- $(call rm-on-failure,$(compile-js) --namespace=fiveui.firefox.main > $@)
-
-
-# TODO: remove 2 lines below, duplicate of above?
-# compile with the closure compiler instead of the script output mode
-# $(call rm-on-failure,$(closure-js) --namespace=fiveui.firefox.main > $@)
-
-# Build the compiled options script.
-$(BIN_DIR)/firefox-options.js: $(call dir-dep,$(BIN_DIR)) $(js_sources)
- $(call rm-on-failure,$(compile-js) \
- --namespace=fiveui.firefox.options.init > $@)
-
-# Use the cfx command to debug a firefox extension.
-.PHONY: run-firefox
-run-firefox: $(FIREFOX_TARGETS)
- @echo Running Firefox extension...
- $(call cfx,run -p $(REPO_ROOT)/profiles/firefox)
-
-# Use the cfx command to debug a firefox extension.
-.PHONY: test-firefox
-test-firefox: $(FIREFOX_TARGETS) $(BIN_DIR)/fiveui.js
- @echo Testing Firefox extension...
- $(call cfx,test -v -p $(REPO_ROOT)/profiles/firefox)
-
-# Clean firefox extension build artifacts.
-.PHONY: clean-firefox
-clean-firefox:
- @echo Cleaning Firefox extension...
- rm -rf profile
-
-clean: clean-firefox
-
-
-# Package Staging ##############################################################
-
-STAGE_DIR := $(BUILD_ROOT)/stage
-
-$(eval $(call dir-exists,$(STAGE_DIR)))
-
-define copy-dir
-mkdir -p $(STAGE_DIR)/$(dir $1)
-cp -r $(BUILD_ROOT)/$1 $(STAGE_DIR)/$(dir $1)
-endef
-
-PACKAGE_SPECS := $(addprefix $(BUILD_ROOT)/,manifest.json package.json)
-
-.PHONY: stage
-stage: $(call dir-dep,$(STAGE_DIR)) compile $(PACKAGE_SPECS)
- $(call copy-dir,data/target)
- $(call copy-dir,data/fiveui)
- $(call copy-dir,data/lib)
- cp $(PACKAGE_SPECS) $(STAGE_DIR)
-
-.PHONY: clean-stage
-clean-stage:
- $(RM) -r $(STAGE_DIR)
-clean: clean-stage
-
-
-# CRX Generation ###############################################################
-
-MAKE_CRX := $(BUILD_DIR)/makecrx
-
-$(BUILD_ROOT)/fiveui.crx: stage
- $(MAKE_CRX) $(STAGE_DIR) $(CHROME_DIR)/fiveui.pem fiveui
-
-.PHONY: clean-crx
-clean-crx:
- $(RM) $(BUILD_ROOT)/fiveui.crx
-clean: clean-crx
-
-.PHONY: package-chrome
-package-chrome: $(BUILD_ROOT)/fiveui.crx
-package: package-chrome
-
-
-# XPI Generation ###############################################################
-
-$(BUILD_ROOT)/fiveui.xpi: stage
- $(call cfx,xpi \
- -p $(REPO_ROOT)/profiles/firefox \
- --pkgdir=$(STAGE_DIR))
-
-.PHONY: run-firefox-staged
-run-firefox-staged: stage
- $(call cfx,run -p $(REPO_ROOT)/profiles/firefox \
- --pkgdir=$(STAGE_DIR))
-
-.PHONY: clean-xpi
-clean-xpi:
- $(RM) $(BUILD_ROOT)/fiveui.xpi
-clean: clean-xpi
-
-.PHONY: package-firefox
-package-firefox: $(BUILD_ROOT)/fiveui.xpi ;
-package: package-firefox
-
-# Installation #################################################################
-
-install:
- $(MV) $(BUILD_ROOT)/fiveui.{crx,xpi} $(INSTALL_DIR)
diff --git a/contexts/README.md b/contexts/README.md
deleted file mode 100644
index 0f1a6c2..0000000
--- a/contexts/README.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# FiveUI
-
-FiveUI is an extensible tool for evaluating HTML user interfaces
-against sets of codified UI Guidelines.
-
-## Installation and getting started
-
-FiveUI is a basic browser extension with support for Firefox and
-Google Chrome. If you're familiar with browser extensions, you can
-quickly install FiveUI from the binaries:
-
- - Chrome: [fiveui.crx](http://galoisinc.github.com/FiveUI/binaries/fiveui.crx)
- - FireFox: [fiveui.xpi](http://galoisinc.github.com/FiveUI/binaries/fiveui.xpi)
-
-The [Installation Guide](doc/manual_src/install.md) describes the
-installation process for Firefox and Google Chrome.
-
-After you've installed FiveUI, take a look at the [Getting Started
-Guide](doc/manual_src/gettingStarted.md) to learn about Rule Sets and
-setting URL Patterns to match web sites to codified guidelines.
-
-## Building FiveUI
-
-Most (if not all) the FiveUI dependencies are included in the
-repository, so building FiveUI should be as simple as running:
-
- $ make
-
-In the top-level FiveUI repository root. On success, this will put
-the generated extensions in the repository root.
-
-### Chrome signing key
-
-Note that you will need to first place a Chrome key in:
-
- chrome\fiveui.pem
-
-before the chrome extension will build successfully.
-
-
diff --git a/contexts/build.mk b/contexts/build.mk
deleted file mode 100644
index 0e55997..0000000
--- a/contexts/build.mk
+++ /dev/null
@@ -1,280 +0,0 @@
-
-# Source Info ##################################################################
-
-# source and resources
-data-dir := $(path)/data
-
-# fiveui source directory
-fiveui-dir := $(data-dir)/fiveui
-
-lib-dir := $(data-dir)/lib
-
-# packaged extension directory
-bin-dir := $(data-dir)/target
-
-
-# Extension Staging ############################################################
-#
-# The purpose of this step is to setup all the compiled scripts necessary for
-# both plugins in a common tree. From this state, we can pick and choose what
-# goes into each extension.
-
-stage-dir := $(build-dir)/stage
-target-dir := $(stage-dir)/data/target
-
-define stage-files-from
-$(stage-dir)/$1/$2: | $(stage-dir)/$1
- $$(call cmd,mkdir)
-
-$(stage-dir)/$1/$2/%: $(path)/$1/$2/% | $(stage-dir)/$1/$2
- $$(call cmd,cp)
-endef
-
-$(eval $(call stage-files-from,data/fiveui,images))
-$(eval $(call stage-files-from,data/fiveui,chrome))
-$(eval $(call stage-files-from,data/fiveui,injected))
-$(eval $(call stage-files-from,data/lib,codemirror))
-$(eval $(call stage-files-from,data/lib,jquery))
-$(eval $(call stage-files-from,data/lib,jshash))
-
-
-
-$(eval $(call stage-files-from,data/fiveui/firefox,test))
-$(eval $(call stage-files-from,data/fiveui,firefox))
-
-$(eval $(call stage-files-from,data,fiveui))
-$(eval $(call stage-files-from,data,lib))
-
-
-$(target-dir): | $(stage-dir)/data
- $(call cmd,mkdir)
-
-$(stage-dir)/data: | $(stage-dir)
- $(call cmd,mkdir)
-
-$(stage-dir): | $(build-dir)
- $(call cmd,mkdir)
-
-
-stage-path = $(patsubst $(path)/%,$(stage-dir)/%,$1)
-stage-all = $(call stage-path,$(wildcard $(path)/$1/*))
-
-
-# Javascript "Compilation" #####################################################
-#
-# In order to turn a number of different javascript modules into a single one,
-# we just concatenate them all together. This should be fine, as all of the
-# modules we define just provide functions, or register callbacks.
-
-quiet_cmd_compilejs = JSC $(call drop-prefix,$@)
- cmd_compilejs = cat $^ > $@
-
-# generic background script dependencies
-background-deps := \
- $(addprefix $(fiveui-dir)/, \
- set.js \
- background.js \
- url-pat.js \
- settings.js \
- messenger.js \
- state.js \
- rules.js)
-
-# generic options page dependencies
-options-deps := $(addprefix $(fiveui-dir)/,\
- settings.js \
- chan.js \
- messenger.js \
- options.js \
- update-manager.js \
- utils.js \
- entry.js \
- rules.js \
- url-pat.js )
-
-
-# CSS Staging ##################################################################
-
-css-bundle := $(topdir)/tools/bin/css-bundle.py
-
-quiet_cmd_cssbundle = CSSC $(call drop-prefix,$@)
- cmd_cssbundle = ( cd $(dir $(TARGET)) && \
- $(css-bundle) $(notdir $(TARGET)) $@ $(redir) )
-
-$(stage-dir)/data/target/bundled.css: TARGET := $(lib-dir)/jquery/css/ui-lightness/jquery-ui.css
-$(stage-dir)/data/target/bundled.css: \
- $(wildcard $(lib-dir)/jquery/css/ui-lightness/*.css) \
- $(wildcard $(lib-dir)/jquery/css/ui-lightness/images/*.png) \
- | $(stage-dir)/data
- $(call cmd,cssbundle)
-
-$(stage-dir)/data/target/injected.css: TARGET := $(fiveui-dir)/injected/injected.css
-$(stage-dir)/data/target/injected.css: \
- $(fiveui-dir)/injected/injected.css \
- $(fiveui-dir)/images/errorCircle.png \
- $(fiveui-dir)/images/warningTriangle.png \
- $(fiveui-dir)/images/right-arrow.png \
- $(fiveui-dir)/images/down-arrow.png \
- | $(stage-dir)/data/target
- $(call cmd,cssbundle)
-
-
-
-# Both Extensions ##############################################################
-
-jquery := $(addprefix $(path)/data/lib/jquery/,\
- jquery-1.8.3.js \
- jquery-ui-1.9.2.custom.js)
-
-$(stage-dir)/data/underscore.js: $(lib-dir)/underscore.js
- $(call cmd,cp)
-
-$(stage-dir)/data/backbone.js: $(lib-dir)/backbone.js
- $(call cmd,cp)
-
-all: $(stage-dir)/data/fiveui/options.html \
- $(stage-dir)/data/fiveui/options.css \
- $(stage-dir)/data/fiveui/entry.css \
- $(stage-dir)/data/fiveui/ffcheck.js \
- $(stage-dir)/data/target/injected.css \
- $(stage-dir)/data/target/bundled.css \
- $(call stage-all,data/fiveui/images) \
- $(call stage-all,data/lib/codemirror) \
- $(call stage-path,$(jquery)) \
- $(call stage-all,data/lib/jshash) \
- $(stage-dir)/data/fiveui/injected/prelude.js \
- $(stage-dir)/data/fiveui/injected/jquery-plugins.js \
- $(stage-dir)/data/fiveui/injected/fiveui-injected-compute.js \
- $(stage-dir)/data/fiveui/injected/fiveui-injected-ui.js \
- $(stage-dir)/data/underscore.js \
- $(stage-dir)/data/backbone.js
-
-# Chrome Extension #############################################################
-#
-# Use the staged artifacts to build the chrome extension in contexts/fiveui.crx
-
-chrome-dir := $(path)/chrome
-
-all: $(topdir)/fiveui.crx
-
-clean::
- $(RM) $(topdir)/fiveui.crx
-
-$(topdir)/fiveui.crx: $(build-dir)/fiveui.crx
- $(call cmd,cp)
-
-# Create the chrome extension
-$(build-dir)/fiveui.crx: \
- $(target-dir)/chrome-background.js \
- $(target-dir)/chrome-options.js \
- $(stage-dir)/manifest.json \
- $(stage-dir)/data/fiveui/chrome/background.html \
- $(stage-dir)/data/fiveui/chrome/chrome-port.js \
- $(stage-dir)/data/fiveui/chrome/chrome-injected-compute.js \
- $(stage-dir)/data/fiveui/chrome/chrome-injected-ui.js
- $(call label,MAKECRX $(call drop-prefix,$@)) ( cd $(build-dir) \
- && $(topdir)/tools/bin/makecrx stage \
- $(topdir)/contexts/chrome/fiveui.pem fiveui \
- $(redir) )
-
-
-# install the extension manifest in the stage directory
-$(stage-dir)/manifest.json: $(path)/manifest.json | $(stage-dir)
- $(call cmd,cp)
-
-chrome-src := $(fiveui-dir)/chrome
-
-# the chrome-specific background javascript
-$(target-dir)/chrome-background.js: $(background-deps) \
- $(chrome-src)/background.js \
- $(chrome-src)/chrome-port.js \
- | $(target-dir)
- $(call cmd,compilejs)
-
-
-# the chrome-specific options javascript
-$(target-dir)/chrome-options.js: $(options-deps) \
- $(chrome-src)/ajax.js \
- $(chrome-src)/chrome-options.js \
- | $(target-dir)
- $(call cmd,compilejs)
-
-
-# Firefox Compilation ##########################################################
-
-firefox-dir := $(fiveui-dir)/firefox
-
-addon-sdk := $(topdir)/tools/addon-sdk
-
-all: $(topdir)/fiveui.xpi
-
-clean::
- $(RM) $(topdir)/fiveui.xpi
-
-$(topdir)/fiveui.xpi: $(build-dir)/fiveui.xpi
- $(call cmd,cp)
-
-
-# wrapper for setting up the environment for the running the cfx command
-cfx = ( cd $(addon-sdk) $(redir) && \
- . bin/activate $(redir) && \
- cd $1 $(redir) && \
- cfx $2 $(redir) )
-
-run-firefox: $(build-dir)/fiveui.xpi
- $(call cfx,$(stage-dir),run)
-
-test-firefox: $(build-dir)/fiveui.xpi \
- $(stage-dir)/data/fiveui/firefox/test \
- $(call stage-all,data/fiveui/firefox/test) \
- | $(topdir)/profiles/firefox
- $(call cfx,$(stage-dir),test -v -p $(topdir)/profiles/firefox)
-
-# build the actual extension
-$(build-dir)/fiveui.xpi: \
- $(stage-dir)/package.json \
- $(target-dir)/firefox-main.js \
- $(target-dir)/firefox-options.js \
- $(call stage-path,$(path)/data/fiveui/firefox/firefox-injected-compute.js) \
- $(call stage-path,$(path)/data/fiveui/firefox/firefox-injected-ui.js) \
- $(call stage-path,$(path)/data/fiveui/firefox/icon-content.html) \
- $(call stage-path,$(path)/data/fiveui/firefox/icon-script.js) \
- $(call stage-path,$(path)/data/fiveui/firefox/options-icon.html) \
- $(call stage-path,$(path)/data/fiveui/firefox/options-script.js) \
- $(call stage-path,$(path)/data/fiveui/firefox/firefox-options.js) \
- | $(topdir)/profiles/firefox
- $(call label,XPI $(call drop-prefix,$@))\
- $(call cfx,$(build-dir),xpi -p $(topdir)/profiles/firefox \
- --pkgdir=$(stage-dir) )
-
-# stage the package description
-$(stage-dir)/package.json: $(path)/package.json | $(stage-dir)
- $(call cmd,cp)
-
-# build the main script
-$(target-dir)/firefox-main.js: \
- $(firefox-dir)/main.js \
- $(firefox-dir)/storage.js \
- $(firefox-dir)/tabIds.js \
- $(firefox-dir)/ajax.js \
- $(fiveui-dir)/settings.js \
- $(fiveui-dir)/messenger.js \
- $(fiveui-dir)/rules.js \
- $(fiveui-dir)/background.js \
- $(fiveui-dir)/utils.js \
- $(fiveui-dir)/set.js \
- $(fiveui-dir)/state.js \
- $(fiveui-dir)/url-pat.js \
- | $(target-dir)
- $(call cmd,compilejs)
-
-
-# the chrome-specific options javascript
-$(target-dir)/firefox-options.js: \
- $(lib-dir)/jquery/jquery-1.8.3.js \
- $(lib-dir)/underscore.js \
- $(lib-dir)/backbone.js \
- $(options-deps) \
- $(firefox-dir)/firefox-options.js \
- | $(target-dir)
- $(call cmd,compilejs)
diff --git a/contexts/chrome/.gitignore b/contexts/chrome/.gitignore
deleted file mode 100644
index 3fe6a20..0000000
--- a/contexts/chrome/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-fiveui.pem
diff --git a/contexts/data/fiveui/firefox/bootstrap.js b/contexts/data/fiveui/firefox/bootstrap.js
deleted file mode 100644
index e7f0b34..0000000
--- a/contexts/data/fiveui/firefox/bootstrap.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Module : firefox/bootstrap.js
- * Copyright : (c) 2011-2012, Galois, Inc.
- *
- * Maintainer :
- * Stability : Provisional
- * Portability: Portable
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var fiveui = fiveui || {};
diff --git a/doc/build.mk b/doc/build.mk
index f62ef54..f628a6c 100644
--- a/doc/build.mk
+++ b/doc/build.mk
@@ -60,7 +60,7 @@ $(eval $(call stage-doc-dir,$(path)/images))
doc: $(jsdoc-dir)/index.html
$(jsdoc-dir)/index.html: \
- $(topdir)/contexts/data/fiveui/injected/prelude.js \
- $(topdir)/contexts/data/fiveui/injected/jquery-plugins.js \
+ $(topdir)/src/js/fiveui/injected/prelude.js \
+ $(topdir)/src/js/fiveui/injected/jquery-plugins.js \
| $(build-dir)
$(call label,JSDOC)$(topdir)/tools/bin/jsdoc $^ $(redir)
diff --git a/exampleData/ruleSets/colorRules/backgroundCheck.js b/exampleData/ruleSets/colorRules/backgroundCheck.js
index 4ce7043..98df08c 100644
--- a/exampleData/ruleSets/colorRules/backgroundCheck.js
+++ b/exampleData/ruleSets/colorRules/backgroundCheck.js
@@ -8,11 +8,11 @@ exports.description =
exports.rule = function() {
var allow = '#00 #FF #3D #F7 #C2 #B4 #4E'.split(' ');
- report("broken");
+ this.report("broken");
$5(':visible')
.cssIsNot('background-color', allow, fiveui.color.colorToHex)
.each(function(i, elt) {
var color = fiveui.color.colorToHex($(elt).css('background-color'));
- report('non-standard background color: ' + color, $(elt));
+ this.report('non-standard background color: ' + color, $(elt));
});
};
diff --git a/exampleData/ruleSets/colorRules/foregroundCheck.js b/exampleData/ruleSets/colorRules/foregroundCheck.js
index 5b1e04b..2cf2b5f 100644
--- a/exampleData/ruleSets/colorRules/foregroundCheck.js
+++ b/exampleData/ruleSets/colorRules/foregroundCheck.js
@@ -11,6 +11,6 @@ exports.rule = function() {
.cssIsNot('color', allow, fiveui.color.colorToHex)
.each(function(i, elt) {
var color = fiveui.color.colorToHex($(elt).css('color'));
- report('foreground color: ' + color, elt);
+ this.report('foreground color: ' + color, elt);
});
};
diff --git a/contexts/data/fiveui/chrome/background.html b/src/js/chrome/background.html
index ea90678..8ca54fd 100644
--- a/contexts/data/fiveui/chrome/background.html
+++ b/src/js/chrome/background.html
@@ -22,10 +22,17 @@
<html>
<head>
<title>Background Page</title>
- <script src="../../lib/jquery/jquery-1.8.3.js"></script>
- <script src="../../underscore.js"></script>
- <script src="../../backbone.js"></script>
- <script src="../../target/chrome-background.js"></script>
+ <script src="underscore.js"></script>
+ <script src="backbone.js"></script>
+ <script src="js/set.js"></script>
+ <script src="js/background.js"></script>
+ <script src="js/url-pat.js"></script>
+ <script src="js/settings.js"></script>
+ <script src="js/messenger.js"></script>
+ <script src="js/state.js"></script>
+ <script src="js/rules.js"></script>
+ <script src="js/platform-port.js"></script>
+ <script src="js/platform-background.js"></script>
</head>
<body/>
</html>
diff --git a/src/js/chrome/build.mk b/src/js/chrome/build.mk
new file mode 100644
index 0000000..b93cc6f
--- /dev/null
+++ b/src/js/chrome/build.mk
@@ -0,0 +1,48 @@
+
+
+# Chrome Extension #############################################################
+
+all: $(build-dir)/fiveui.crx
+
+chrome-dir := $(path)
+
+chrome-build := $(build-dir)/chrome
+
+
+# Generic Extension Parts ######################################################
+
+# pull in the base fiveui extension
+$(eval $(call stage-fiveui,$(chrome-build),$(build-dir)/fiveui.crx))
+
+
+# Chrome File Staging ##########################################################
+
+# copy over scripts from the chrome extension
+$(chrome-build)/data/js/%: $(chrome-dir)/js/% | $(chrome-build)/data/js
+ $(call cmd,cp)
+
+$(chrome-build)/data/injected/%: $(chrome-dir)/injected/% | $(chrome-build)/data/injected
+ $(call cmd,cp)
+
+$(chrome-build)/data/%: $(chrome-dir)/% | $(chrome-build)/data
+ $(call cmd,cp)
+
+$(chrome-build)/%: $(chrome-dir)/% | $(chrome-build)
+ $(call cmd,cp)
+
+$(chrome-build): | $(build-dir)
+ $(call cmd,mkdir)
+
+
+# Packaging ####################################################################
+
+# generate the executable after copying over all files
+$(build-dir)/fiveui.crx: $(chrome-build)/manifest.json \
+ $(chrome-build)/data/background.html \
+ $(chrome-build)/data/js/platform-port.js \
+ $(chrome-build)/data/js/platform-background.js \
+ | $(chrome-build)
+ $(call label,MAKECRX $(call drop-prefix,$@)) ( cd $(build-dir) \
+ && $(topdir)/tools/bin/makecrx $(chrome-build) \
+ $(topdir)/fiveui.pem fiveui \
+ $(redir) )
diff --git a/contexts/data/fiveui/chrome/chrome-injected-compute.js b/src/js/chrome/injected/platform-compute.js
index a372913..a372913 100644
--- a/contexts/data/fiveui/chrome/chrome-injected-compute.js
+++ b/src/js/chrome/injected/platform-compute.js
diff --git a/contexts/data/fiveui/chrome/chrome-injected-ui.js b/src/js/chrome/injected/platform-ui.js
index 939a62d..939a62d 100644
--- a/contexts/data/fiveui/chrome/chrome-injected-ui.js
+++ b/src/js/chrome/injected/platform-ui.js
diff --git a/contexts/data/fiveui/chrome/ajax.js b/src/js/chrome/js/platform-ajax.js
index 68ced39..68ced39 100644
--- a/contexts/data/fiveui/chrome/ajax.js
+++ b/src/js/chrome/js/platform-ajax.js
diff --git a/contexts/data/fiveui/chrome/background.js b/src/js/chrome/js/platform-background.js
index 7f74a33..6ffecf8 100644
--- a/contexts/data/fiveui/chrome/background.js
+++ b/src/js/chrome/js/platform-background.js
@@ -40,11 +40,11 @@ fiveui.chrome.background = function() {
* @return {void}
*/
var loadScripts = function(tabid, inScripts, inFrames) {
- var chromeScripts = [dataLoader('fiveui/chrome/chrome-port.js')];
+ var chromeScripts = [dataLoader('js/platform-port.js')];
if(inFrames) {
- chromeScripts.push(dataLoader('fiveui/chrome/chrome-injected-compute.js'));
+ chromeScripts.push(dataLoader('injected/platform-compute.js'));
} else {
- chromeScripts.push(dataLoader('fiveui/chrome/chrome-injected-ui.js'));
+ chromeScripts.push(dataLoader('injected/platform-ui.js'));
}
var scripts = _.flatten([chromeScripts, inScripts]);
@@ -108,9 +108,9 @@ fiveui.chrome.background = function() {
var updateWidget = function(tabState) {
if(null == tabState) {
- setIcon('../images/fiveui-icon-disabled.png');
+ setIcon('images/fiveui-icon-disabled.png');
} else {
- setIcon('../images/fiveui-icon-enabled.png');
+ setIcon('images/fiveui-icon-enabled.png');
updateIconText(tabState);
}
};
@@ -160,6 +160,6 @@ fiveui.chrome.background = function() {
// Add event listeners once the DOM has fully loaded by listening for the
// `DOMContentLoaded` event on the document, and adding your listeners to
// specific elements when it triggers.
-jQuery(fiveui.chrome.background);
+fiveui.chrome.background();
})();
diff --git a/contexts/data/fiveui/chrome/chrome-options.js b/src/js/chrome/js/platform-options.js
index 9abccea..b049122 100644
--- a/contexts/data/fiveui/chrome/chrome-options.js
+++ b/src/js/chrome/js/platform-options.js
@@ -42,4 +42,7 @@ _.extend(fiveui.chrome.options, {
}
});
+// run the init function when the page loads
+jQuery(fiveui.chrome.options.init);
+
})();
diff --git a/contexts/data/fiveui/chrome/chrome-port.js b/src/js/chrome/js/platform-port.js
index 8a5aeae..8a5aeae 100644
--- a/contexts/data/fiveui/chrome/chrome-port.js
+++ b/src/js/chrome/js/platform-port.js
diff --git a/contexts/manifest.json b/src/js/chrome/manifest.json
index 584f5d0..9202276 100644
--- a/contexts/manifest.json
+++ b/src/js/chrome/manifest.json
@@ -5,20 +5,20 @@
"version": "0.2",
"description": "UI Constraint Checker",
- "icons": { "16": "data/fiveui/images/fiveui-icon-16.png",
- "48": "data/fiveui/images/fiveui-icon-48.png",
- "128": "data/fiveui/images/fiveui-icon-128.png"
+ "icons": { "16": "data/images/fiveui-icon-16.png",
+ "48": "data/images/fiveui-icon-48.png",
+ "128": "data/images/fiveui-icon-128.png"
},
"background": {
"persistent": true,
- "page": "data/fiveui/chrome/background.html"
+ "page": "data/background.html"
},
- "options_page": "data/fiveui/options.html",
+ "options_page": "data/options.html",
"browser_action": {
- "default_icon": "data/fiveui/images/fiveui-icon-disabled.png",
+ "default_icon": "data/images/fiveui-icon-disabled.png",
"default_title": "Five UI"
},
"permissions": [
diff --git a/src/js/firefox/build.mk b/src/js/firefox/build.mk
new file mode 100644
index 0000000..4696930
--- /dev/null
+++ b/src/js/firefox/build.mk
@@ -0,0 +1,102 @@
+
+# Firefox Extension ############################################################
+
+all: $(build-dir)/firefox.xpi
+
+firefox-dir := $(path)
+
+firefox-build := $(build-dir)/firefox
+
+$(firefox-build): | $(build-dir)
+ $(call cmd,mkdir)
+
+
+# Generic Extension ############################################################
+
+$(eval $(call stage-fiveui,$(firefox-build),stage-firefox))
+
+
+# Firefox File Staging #########################################################
+
+# copy in firefox scripts
+$(firefox-build)/data/js/%: $(firefox-dir)/js/% | $(firefox-build)/data/js
+ $(call cmd,cp)
+
+# copy in firefox scripts
+$(firefox-build)/data/injected/%: $(firefox-dir)/injected/% \
+ | $(firefox-build)/data/injected
+ $(call cmd,cp)
+
+$(firefox-build)/data/icons/%: $(firefox-dir)/icons/% \
+ | $(firefox-build)/data/icons
+ $(call cmd,cp)
+
+$(firefox-build)/data/icons: | $(firefox-build)/data
+ $(call cmd,mkdir)
+
+$(firefox-build)/data/%: $(firefox-dir)/lib/% | $(firefox-build)/data
+ $(call cmd,cp)
+
+
+$(firefox-build)/%: $(firefox-dir)/% | $(firefox-build)
+ $(call cmd,cp)
+
+
+# Wrapper Compilation ##########################################################
+
+# In order to turn a number of different javascript modules into a single one,
+# we just concatenate them all together. This should be fine, as all of the
+# modules we define just provide functions, or register callbacks.
+quiet_cmd_compilejs = JSC $(call drop-prefix,$@)
+ cmd_compilejs = cat $^ > $@
+
+# we have to build one big source for the firefox main.js, as we can't really
+# share reuse the CommonJS module system in the chrome version.
+$(firefox-build)/data/main.js: \
+ $(firefox-dir)/lib/main.js \
+ $(fiveui-dir)/js/set.js \
+ $(fiveui-dir)/js/url-pat.js \
+ $(fiveui-dir)/js/url-pat.js \
+ $(fiveui-dir)/js/settings.js \
+ $(fiveui-dir)/js/messenger.js \
+ $(fiveui-dir)/js/state.js \
+ $(fiveui-dir)/js/utils.js \
+ $(fiveui-dir)/js/rules.js \
+ $(fiveui-dir)/js/background.js \
+ | $(firefox-build)/data
+ $(call cmd,compilejs)
+
+
+# Packaging ####################################################################
+
+addon-sdk := $(topdir)/tools/addon-sdk
+
+# wrapper for setting up the environment for the running the cfx command
+cfx = ( cd $(addon-sdk) $(redir) && \
+ . bin/activate $(redir) && \
+ cd $1 $(redir) && \
+ cfx $2 $(redir) )
+
+.PHONY: stage-firefox
+stage-firefox: \
+ $(firefox-build)/package.json \
+ $(firefox-build)/data/main.js \
+ $(firefox-build)/data/ajax.js \
+ $(firefox-build)/data/storage-wrapper.js \
+ $(firefox-build)/data/tabIds.js \
+ $(firefox-build)/data/icons/fiveui-icon.html \
+ $(firefox-build)/data/icons/fiveui-icon.js \
+ $(firefox-build)/data/icons/options-icon.html \
+ $(firefox-build)/data/icons/options-icon.js \
+ | $(firefox-build)
+
+$(build-dir)/firefox.xpi: stage-firefox
+ $(call label,XPI $(call drop-prefix,$@))\
+ $(call cfx,$(build-dir),xpi -p $(topdir)/profiles/firefox \
+ --pkgdir=$(firefox-build) )
+
+
+# Testing ######################################################################
+
+run-firefox: stage-firefox
+ $(call label,RUNFF)$(call cfx,$(firefox-build),run)
diff --git a/contexts/data/fiveui/firefox/icon-content.html b/src/js/firefox/icons/fiveui-icon.html
index d943367..d943367 100644
--- a/contexts/data/fiveui/firefox/icon-content.html
+++ b/src/js/firefox/icons/fiveui-icon.html
diff --git a/contexts/data/fiveui/firefox/icon-script.js b/src/js/firefox/icons/fiveui-icon.js
index 61545da..61545da 100644
--- a/contexts/data/fiveui/firefox/icon-script.js
+++ b/src/js/firefox/icons/fiveui-icon.js
diff --git a/contexts/data/fiveui/firefox/options-icon.html b/src/js/firefox/icons/options-icon.html
index 850b530..850b530 100644
--- a/contexts/data/fiveui/firefox/options-icon.html
+++ b/src/js/firefox/icons/options-icon.html
diff --git a/contexts/data/fiveui/firefox/options-script.js b/src/js/firefox/icons/options-icon.js
index 2008883..2008883 100644
--- a/contexts/data/fiveui/firefox/options-script.js
+++ b/src/js/firefox/icons/options-icon.js
diff --git a/contexts/data/fiveui/firefox/firefox-injected-compute.js b/src/js/firefox/injected/platform-compute.js
index 1f1dc48..1f1dc48 100644
--- a/contexts/data/fiveui/firefox/firefox-injected-compute.js
+++ b/src/js/firefox/injected/platform-compute.js
diff --git a/contexts/data/fiveui/firefox/firefox-injected-ui.js b/src/js/firefox/injected/platform-ui.js
index 79636c1..79636c1 100644
--- a/contexts/data/fiveui/firefox/firefox-injected-ui.js
+++ b/src/js/firefox/injected/platform-ui.js
diff --git a/src/js/firefox/js/platform-ajax.js b/src/js/firefox/js/platform-ajax.js
new file mode 100644
index 0000000..e32225a
--- /dev/null
+++ b/src/js/firefox/js/platform-ajax.js
@@ -0,0 +1,8 @@
+
+/**
+ * Placeholder function, as all ajax should be done in the backend
+ */
+var fiveui = fiveui || {};
+fiveui.ajax = fiveui.ajax || {};
+
+fiveui.ajax.get = function () {};
diff --git a/contexts/data/fiveui/firefox/firefox-options.js b/src/js/firefox/js/platform-options.js
index 0ae65f9..0ae65f9 100644
--- a/contexts/data/fiveui/firefox/firefox-options.js
+++ b/src/js/firefox/js/platform-options.js
diff --git a/contexts/data/fiveui/firefox/ajax.js b/src/js/firefox/lib/ajax.js
index da95c38..404deee 100644
--- a/contexts/data/fiveui/firefox/ajax.js
+++ b/src/js/firefox/lib/ajax.js
@@ -1,17 +1,16 @@
var fiveui = fiveui || {};
var Request = require('request').Request;
+var _ = require('underscore');
(function() {
-fiveui.ajax = fiveui.ajax || {};
-
/**
* Use the request api to make an XHR request from the extension context.
* Behaves somewhat like the jQuery.ajax method, but only ever returns the text
* content of the response.
*/
-fiveui.ajax.get = function(url, opts) {
+exports.get = function(url, opts) {
_.defaults(opts, {
success: function() {},
diff --git a/contexts/data/fiveui/firefox/main.js b/src/js/firefox/lib/main.js
index 2723c72..84619ea 100644
--- a/contexts/data/fiveui/firefox/main.js
+++ b/src/js/firefox/lib/main.js
@@ -19,11 +19,15 @@
* limitations under the License.
*/
-_ = require('underscore');
-Backbone = require('backbone');
+_ = require('underscore');
+Backbone = require('backbone');
+StorageWrapper = require('storage-wrapper').StorageWrapper;
+TabIds = require('tabIds').TabIds;
var fiveui = fiveui || {};
+fiveui.ajax = require('ajax');
+
(function() {
fiveui.firefox = fiveui.firefox || {};
@@ -34,7 +38,7 @@ const data = require("self").data;
const pageMod = require("page-mod");
fiveui.firefox.main = function() {
- var settings = new fiveui.Settings(new fiveui.firefox.StorageWrapper());
+ var settings = new fiveui.Settings(new StorageWrapper());
var activeId = 0;
// initialze the background functionality
@@ -43,10 +47,10 @@ fiveui.firefox.main = function() {
var icon = widgets.Widget({
id: "FiveUI-Icon",
label: "FiveUI",
- contentURL: data.url('fiveui/firefox/icon-content.html'),
+ contentURL: data.url('icons/fiveui-icon.html'),
contentScriptFile: [
- data.url('lib/jquery/jquery-1.8.3.js'),
- data.url('fiveui/firefox/icon-script.js')
+ data.url('jquery/jquery-1.8.3.js'),
+ data.url('icons/fiveui-icon.js')
],
onClick: function() {
background.showUI(activeId);
@@ -56,10 +60,10 @@ fiveui.firefox.main = function() {
var optionsButton = widgets.Widget(
{ id: "FiveUI-Options",
label: "FiveUI",
- contentURL: data.url('fiveui/firefox/options-icon.html'),
+ contentURL: data.url('icons/options-icon.html'),
contentScriptFile: [
- data.url('lib/jquery/jquery-1.8.3.js'),
- data.url('fiveui/firefox/options-script.js')
+ data.url('jquery/jquery-1.8.3.js'),
+ data.url('icons/options-icon.js')
]
}
);
@@ -84,8 +88,8 @@ fiveui.firefox.main = function() {
// store the contents of the injected css, so that we can inject it later
var injectedCSS = [
- data.load('target/injected.css'),
- data.load('target/bundled.css')
+ data.load('injected/injected.css'),
+ data.load('jquery/bundled.css')
].join('\n');
/**
@@ -100,15 +104,14 @@ fiveui.firefox.main = function() {
var loadScripts = function(tabId, inScripts, inFrames, tab) {
if(inFrames) {
- var firefoxScripts = [dataLoader('fiveui/firefox/firefox-injected-compute.js')];
+ var firefoxScripts = [dataLoader('injected/platform-compute.js')];
} else {
- var firefoxScripts = [dataLoader('fiveui/firefox/firefox-injected-ui.js')];
+ var firefoxScripts = [dataLoader('injected/platform-ui.js')];
}
// just scripts, css gets filtered out.
var scripts = _.filter(_.flatten([firefoxScripts, inScripts]),
function(script) {
- console.log(script);
return script.search(/\.css$/i) == -1;
});
@@ -129,7 +132,7 @@ fiveui.firefox.main = function() {
var background = new fiveui.Background(settings, updateWidget,
loadScripts, dataLoader);
- var tabIds = new fiveui.firefox.TabIds();
+ var tabIds = new TabIds();
var handleNewTab = function(tab) {
var tabId = tabIds.allocate();
@@ -175,19 +178,32 @@ fiveui.firefox.main = function() {
var showOptions = function() {
// TODO does not make use of existing options tabs, if any are open:
- tabs.open(data.url('fiveui/options.html'));
+ tabs.open(data.url('options.html'));
};
// set up a page-mod to be active on the options page, so that
// page can communicate with the add-on:
pageMod.PageMod(
- { include: data.url('fiveui/options.html'),
- contentScriptWhen: 'end',
- contentScriptFile: [
- data.url("target/firefox-options.js")
- ],
- contentScript: "fiveui.firefox.options.init()",
- onAttach: function (worker) {
+ { include: data.url('options.html')
+ , contentScriptWhen: 'end'
+ , contentScriptFile:
+ [ data.url('jquery/jquery-1.8.3.js')
+ , data.url('underscore.js')
+ , data.url('backbone.js')
+ , data.url('js/settings.js')
+ , data.url('js/chan.js')
+ , data.url('js/messenger.js')
+ , data.url('js/options.js')
+ , data.url('js/update-manager.js')
+ , data.url('js/utils.js')
+ , data.url('js/entry.js')
+ , data.url('js/rules.js')
+ , data.url('js/url-pat.js')
+ , data.url('js/platform-ajax.js')
+ , data.url('js/platform-options.js')
+ ]
+ , contentScript: 'fiveui.firefox.options.init();'
+ , onAttach: function (worker) {
fiveui.Settings.manager(worker.port, settings);
}
});
diff --git a/contexts/data/fiveui/firefox/storage.js b/src/js/firefox/lib/storage-wrapper.js
index 9aa51aa..03bfeec 100644
--- a/contexts/data/fiveui/firefox/storage.js
+++ b/src/js/firefox/lib/storage-wrapper.js
@@ -19,15 +19,11 @@
* limitations under the License.
*/
-if (typeof goog != 'undefined') {
- goog.provide('fiveui.firefox.StorageWrapper');
-} else {
- var fiveui = fiveui || {};
- fiveui.firefox = fiveui.firefox || {};
-}
const ss = require('simple-storage');
+var fiveui = { firefox : {} };
+
/**
* A wraper around the Firefox Simple-Storage API to match the w3c Storage interface:
* http://dev.w3.org/html5/webstorage/#storage-0
diff --git a/contexts/data/fiveui/firefox/tabIds.js b/src/js/firefox/lib/tabIds.js
index babd7cf..f5dad78 100644
--- a/contexts/data/fiveui/firefox/tabIds.js
+++ b/src/js/firefox/lib/tabIds.js
@@ -19,18 +19,20 @@
* limitations under the License.
*/
-(function() {
+var _ = require('underscore');
-fiveui.firefox.TabIds = function() {
+exports.TabIds = function() {
this.next = 0;
};
-fiveui.firefox.TabIds.prototype.allocate = function() {
- var tabId = this.next;
- this.next = this.next + 1;
- return tabId;
-};
+_.extend(exports.TabIds.prototype, {
+
+ allocate:function() {
+ var tabId = this.next;
+ this.next = this.next + 1;
+ return tabId;
+ },
-fiveui.firefox.TabIds.prototype.free = function(tabId) {};
+ free:function(tabId) {}
-})();
+});
diff --git a/contexts/package.json b/src/js/firefox/package.json
index eea95f1..b3b2df2 100644
--- a/contexts/package.json
+++ b/src/js/firefox/package.json
@@ -11,6 +11,6 @@
"id": "jid1-oquzbbbog1fmxq",
"description": "UI Constraint Checker",
"lib": "data/",
- "main": "target/firefox-main",
- "tests": "data/fiveui/firefox/test"
+ "main": "main.js",
+ "tests": "test"
}
diff --git a/contexts/data/fiveui/firefox/test/test-main.js b/src/js/firefox/test/test-main.js
index c25fec5..c25fec5 100644
--- a/contexts/data/fiveui/firefox/test/test-main.js
+++ b/src/js/firefox/test/test-main.js
diff --git a/src/js/fiveui/build.mk b/src/js/fiveui/build.mk
new file mode 100644
index 0000000..aeb00a1
--- /dev/null
+++ b/src/js/fiveui/build.mk
@@ -0,0 +1,129 @@
+
+# Generic FiveUI Build Staging #################################################
+
+fiveui-dir := $(path)
+lib-dir := $(topdir)/src/js/lib
+fiveui-files := $(shell find $(fiveui-dir))
+
+
+# $1 - target directory
+# $2 - $(topdir)/src/js/fiveui relative directory
+define fiveui-files
+
+# scripts in the target
+$1/$2: | $1
+ $$(call cmd,mkdir)
+
+$1/$2/%: $(fiveui-dir)/$2/% | $1/$2
+ $$(call cmd,cp)
+
+endef
+
+
+# Because firefox has strange requirements on the layout of the extension
+# directory, we just use that as the layout for all extensions.
+#
+# $1 - sub-directory off of $(build-dir) to stage into
+# $2 - top-level target to augment with dependencies
+define stage-fiveui
+
+# Common Files #################################################################
+
+$1/data/injected/injected.css: $(build-dir)/injected.css
+ $$(call cmd,cp)
+
+$(call fiveui-files,$1/data,injected)
+$2: $1/data/injected/compute.js \
+ $1/data/injected/ui.js \
+ $1/data/injected/injected.css \
+ $1/data/injected/prelude.js \
+ $1/data/injected/jquery-plugins.js
+
+
+$(call fiveui-files,$1/data,js)
+$2: $(patsubst $(fiveui-dir)/%,$1/data/%,$(wildcard $(fiveui-dir)/js/*))
+
+
+$(call fiveui-files,$1/data,css)
+$2: $1/data/css/entry.css \
+ $1/data/css/options.css
+
+
+$(call fiveui-files,$1/data,images)
+$2: $(patsubst $(fiveui-dir)/%,$1/data/%,$(wildcard $(fiveui-dir)/images/*))
+
+
+# Libraries ####################################################################
+
+# simple libraries
+$1/data/%: $(lib-dir)/% | $1/data
+ $$(call cmd,cp)
+
+$2: $1/data/underscore.js \
+ $1/data/backbone.js \
+ $1/data/md5.js
+
+
+# jquery
+$1/data/jquery: | $1/data
+ $$(call cmd,mkdir)
+
+$1/data/jquery/bundled.css: $(build-dir)/bundled.css
+ $$(call cmd,cp)
+
+$1/data/jquery/%: $(lib-dir)/jquery/% | $1/data/jquery
+ $$(call cmd,cp)
+
+$2: $1/data/jquery/jquery-1.8.3.js \
+ $1/data/jquery/jquery-ui-1.9.2.custom.js \
+ $1/data/jquery/bundled.css
+
+
+# Other Files ##################################################################
+
+# top-level fiveui stuff
+$1/data/%: $(fiveui-dir)/% | $1/data
+ $$(call cmd,cp)
+
+$2: $1/data/options.html
+
+
+$1/data: | $1
+ $$(call cmd,mkdir)
+
+
+
+# files provided by the platform
+$2: $1/data/js/platform-ajax.js \
+ $1/data/js/platform-options.js \
+ $1/data/injected/platform-compute.js \
+ $1/data/injected/platform-ui.js
+
+
+endef
+
+
+# Generic Bundled jQuery CSS ###################################################
+
+css-bundle := $(topdir)/tools/bin/css-bundle.py
+
+quiet_cmd_cssbundle = CSSC $(call drop-prefix,$@)
+ cmd_cssbundle = ( cd $(dir $(TARGET)) && \
+ $(css-bundle) $(notdir $(TARGET)) $@ $(redir) )
+
+$(build-dir)/bundled.css: TARGET := $(lib-dir)/jquery/css/ui-lightness/jquery-ui.css
+$(build-dir)/bundled.css: \
+ $(wildcard $(lib-dir)/jquery/css/ui-lightness/*.css) \
+ $(wildcard $(lib-dir)/jquery/css/ui-lightness/images/*.png) \
+ | $(build-dir)
+ $(call cmd,cssbundle)
+
+$(build-dir)/injected.css: TARGET := $(fiveui-dir)/injected/injected.css
+$(build-dir)/injected.css: \
+ $(fiveui-dir)/injected/injected.css \
+ $(fiveui-dir)/images/errorCircle.png \
+ $(fiveui-dir)/images/warningTriangle.png \
+ $(fiveui-dir)/images/right-arrow.png \
+ $(fiveui-dir)/images/down-arrow.png \
+ | $(build-dir)
+ $(call cmd,cssbundle)
diff --git a/contexts/data/fiveui/entry.css b/src/js/fiveui/css/entry.css
index ec4791c..ec4791c 100644
--- a/contexts/data/fiveui/entry.css
+++ b/src/js/fiveui/css/entry.css
diff --git a/contexts/data/fiveui/options.css b/src/js/fiveui/css/options.css
index efe7d05..5070572 100644
--- a/contexts/data/fiveui/options.css
+++ b/src/js/fiveui/css/options.css
@@ -32,7 +32,7 @@ html body, body {
div#icon {
float: right;
opacity: 0.25;
- background-image: url(images/fiveui-icon-128.png);
+ background-image: url(../images/fiveui-icon-128.png);
background-repeat: no-repeat;
background-position-x: 16px;
background-position: 0px 16px;
diff --git a/contexts/data/fiveui/images/Gear_3.svg b/src/js/fiveui/images/Gear_3.svg
index ca241ce..ca241ce 100644
--- a/contexts/data/fiveui/images/Gear_3.svg
+++ b/src/js/fiveui/images/Gear_3.svg
diff --git a/contexts/data/fiveui/images/attribution.txt b/src/js/fiveui/images/attribution.txt
index fb8c49c..fb8c49c 100644
--- a/contexts/data/fiveui/images/attribution.txt
+++ b/src/js/fiveui/images/attribution.txt
diff --git a/contexts/data/fiveui/images/down-arrow.png b/src/js/fiveui/images/down-arrow.png
index 4fd7d54..4fd7d54 100644
--- a/contexts/data/fiveui/images/down-arrow.png
+++ b/src/js/fiveui/images/down-arrow.png
Binary files differ
diff --git a/contexts/data/fiveui/images/down-arrow.svg b/src/js/fiveui/images/down-arrow.svg
index 6b4ba07..6b4ba07 100644
--- a/contexts/data/fiveui/images/down-arrow.svg
+++ b/src/js/fiveui/images/down-arrow.svg
diff --git a/contexts/data/fiveui/images/errorCircle.png b/src/js/fiveui/images/errorCircle.png
index d5c1dc0..d5c1dc0 100644
--- a/contexts/data/fiveui/images/errorCircle.png
+++ b/src/js/fiveui/images/errorCircle.png
Binary files differ
diff --git a/contexts/data/fiveui/images/fiveui-icon-128.png b/src/js/fiveui/images/fiveui-icon-128.png
index 1f0b6c4..1f0b6c4 100644
--- a/contexts/data/fiveui/images/fiveui-icon-128.png
+++ b/src/js/fiveui/images/fiveui-icon-128.png
Binary files differ
diff --git a/contexts/data/fiveui/images/fiveui-icon-16.png b/src/js/fiveui/images/fiveui-icon-16.png
index cc256e0..cc256e0 100644
--- a/contexts/data/fiveui/images/fiveui-icon-16.png
+++ b/src/js/fiveui/images/fiveui-icon-16.png
Binary files differ
diff --git a/contexts/data/fiveui/images/fiveui-icon-48.png b/src/js/fiveui/images/fiveui-icon-48.png
index 2d586fa..2d586fa 100644
--- a/contexts/data/fiveui/images/fiveui-icon-48.png
+++ b/src/js/fiveui/images/fiveui-icon-48.png
Binary files differ
diff --git a/contexts/data/fiveui/images/fiveui-icon-disabled.png b/src/js/fiveui/images/fiveui-icon-disabled.png
index 66b6a63..66b6a63 100644
--- a/contexts/data/fiveui/images/fiveui-icon-disabled.png
+++ b/src/js/fiveui/images/fiveui-icon-disabled.png
Binary files differ
diff --git a/contexts/data/fiveui/images/fiveui-icon-enabled.png b/src/js/fiveui/images/fiveui-icon-enabled.png
index 144f64e..144f64e 100644
--- a/contexts/data/fiveui/images/fiveui-icon-enabled.png
+++ b/src/js/fiveui/images/fiveui-icon-enabled.png
Binary files differ
diff --git a/contexts/data/fiveui/images/fiveui-icon-working.png b/src/js/fiveui/images/fiveui-icon-working.png
index 94643c7..94643c7 100644
--- a/contexts/data/fiveui/images/fiveui-icon-working.png
+++ b/src/js/fiveui/images/fiveui-icon-working.png
Binary files differ
diff --git a/contexts/data/fiveui/images/right-arrow.png b/src/js/fiveui/images/right-arrow.png
index 614e65d..614e65d 100644
--- a/contexts/data/fiveui/images/right-arrow.png
+++ b/src/js/fiveui/images/right-arrow.png
Binary files differ
diff --git a/contexts/data/fiveui/images/right-arrow.svg b/src/js/fiveui/images/right-arrow.svg
index 192f654..192f654 100644
--- a/contexts/data/fiveui/images/right-arrow.svg
+++ b/src/js/fiveui/images/right-arrow.svg
diff --git a/contexts/data/fiveui/images/warningTriangle.png b/src/js/fiveui/images/warningTriangle.png
index dac1d03..dac1d03 100644
--- a/contexts/data/fiveui/images/warningTriangle.png
+++ b/src/js/fiveui/images/warningTriangle.png
Binary files differ
diff --git a/contexts/data/fiveui/injected/fiveui-injected-compute.js b/src/js/fiveui/injected/compute.js
index 7ae9848..225c794 100644
--- a/contexts/data/fiveui/injected/fiveui-injected-compute.js
+++ b/src/js/fiveui/injected/compute.js
@@ -220,7 +220,9 @@
var scope = {
name: theRule.name,
description: theRule.description,
- ruleSet: core.rules
+ ruleSet: core.rules,
+ // maybe it would be better for this to be an argument to the rule?
+ report: report
};
if (theRule.rule) {
diff --git a/contexts/data/fiveui/injected/injected.css b/src/js/fiveui/injected/injected.css
index 2f50058..2f50058 100644
--- a/contexts/data/fiveui/injected/injected.css
+++ b/src/js/fiveui/injected/injected.css
diff --git a/contexts/data/fiveui/injected/jquery-plugins.js b/src/js/fiveui/injected/jquery-plugins.js
index 0f13c2a..0f13c2a 100644
--- a/contexts/data/fiveui/injected/jquery-plugins.js
+++ b/src/js/fiveui/injected/jquery-plugins.js
diff --git a/contexts/data/fiveui/injected/prelude.js b/src/js/fiveui/injected/prelude.js
index 3f3b4f5..a77a1de 100644
--- a/contexts/data/fiveui/injected/prelude.js
+++ b/src/js/fiveui/injected/prelude.js
@@ -32,8 +32,6 @@
*/
var fiveui = fiveui || {};
-(function() {
-
/**
* A global namespace for statistics collection.
*
@@ -428,5 +426,3 @@ JSON.stringify = JSON.stringify || function (obj) {
return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}");
}
};
-
-})();
diff --git a/contexts/data/fiveui/injected/fiveui-injected-ui.js b/src/js/fiveui/injected/ui.js
index 6831436..6831436 100644
--- a/contexts/data/fiveui/injected/fiveui-injected-ui.js
+++ b/src/js/fiveui/injected/ui.js
diff --git a/contexts/data/fiveui/background.js b/src/js/fiveui/js/background.js
index 284b443..c0d4e07 100644
--- a/contexts/data/fiveui/background.js
+++ b/src/js/fiveui/js/background.js
@@ -19,7 +19,7 @@
* limitations under the License.
*/
-fiveui = fiveui || {};
+var fiveui = fiveui || {};
(function() {
/**
@@ -148,25 +148,25 @@ fiveui.Background.prototype.pageLoad = function(tabId, url, data) {
}
var computeScripts = _.flatten(
- [ [ this.dataLoader('lib/jquery/jquery-1.8.3.js')
- , this.dataLoader('fiveui/injected/prelude.js')
- , this.dataLoader('lib/jshash/md5.js')
- , this.dataLoader('fiveui/injected/jquery-plugins.js')
+ [ [ this.dataLoader('jquery/jquery-1.8.3.js')
+ , this.dataLoader('md5.js')
+ , this.dataLoader('injected/prelude.js')
+ , this.dataLoader('injected/jquery-plugins.js')
]
, dependencies
- , [ this.dataLoader('fiveui/injected/fiveui-injected-compute.js')
+ , [ this.dataLoader('injected/compute.js')
]
]);
this.loadScripts(tabId, computeScripts, true, data);
var uiScripts = _.flatten(
- [ this.dataLoader('target/injected.css')
- , this.dataLoader('target/bundled.css')
- , this.dataLoader('lib/jquery/jquery-1.8.3.js')
- , this.dataLoader('lib/jquery/jquery-ui-1.9.2.custom.js')
- , this.dataLoader('fiveui/injected/prelude.js')
- , this.dataLoader('fiveui/injected/fiveui-injected-ui.js')
- , this.dataLoader('fiveui/injected/jquery-plugins.js')
+ [ this.dataLoader('jquery/bundled.css')
+ , this.dataLoader('jquery/jquery-1.8.3.js')
+ , this.dataLoader('jquery/jquery-ui-1.9.2.custom.js')
+ , this.dataLoader('injected/injected.css')
+ , this.dataLoader('injected/prelude.js')
+ , this.dataLoader('injected/ui.js')
+ , this.dataLoader('injected/jquery-plugins.js')
]);
this.loadScripts(tabId, uiScripts, false, data);
}
diff --git a/contexts/data/fiveui/chan.js b/src/js/fiveui/js/chan.js
index 47c6145..47c6145 100644
--- a/contexts/data/fiveui/chan.js
+++ b/src/js/fiveui/js/chan.js
diff --git a/contexts/data/fiveui/entry.js b/src/js/fiveui/js/entry.js
index 025034a..025034a 100644
--- a/contexts/data/fiveui/entry.js
+++ b/src/js/fiveui/js/entry.js
diff --git a/contexts/data/fiveui/ffcheck.js b/src/js/fiveui/js/ffcheck.js
index 2157ed0..2157ed0 100644
--- a/contexts/data/fiveui/ffcheck.js
+++ b/src/js/fiveui/js/ffcheck.js
diff --git a/contexts/data/fiveui/messenger.js b/src/js/fiveui/js/messenger.js
index fc1962c..fc1962c 100644
--- a/contexts/data/fiveui/messenger.js
+++ b/src/js/fiveui/js/messenger.js
diff --git a/contexts/data/fiveui/options.js b/src/js/fiveui/js/options.js
index 2b29f8d..2b29f8d 100644
--- a/contexts/data/fiveui/options.js
+++ b/src/js/fiveui/js/options.js
diff --git a/contexts/data/fiveui/rules.js b/src/js/fiveui/js/rules.js
index 68d821d..314d50b 100644
--- a/contexts/data/fiveui/rules.js
+++ b/src/js/fiveui/js/rules.js
@@ -136,12 +136,13 @@ fiveui.RuleSet.load = function(manifest_url, options) {
success: function(text) {
try {
- var manifest = JSON.parse(fiveui.utils.filterJSON(text,'json'));
+ var sanitized = fiveui.utils.filterJSON(text,'json');
+ var manifest = JSON.parse(sanitized);
} catch(e) {
// XXX incoming error continuation is empty
// (and we may have syntax error details in e)
- options.error();
+ options.error('failed to parse manifest');
return;
}
@@ -152,7 +153,9 @@ fiveui.RuleSet.load = function(manifest_url, options) {
loadRules(manifest, rules);
},
- error: options.error,
+ error: function() {
+ options.error('failed to retrieve manifest');
+ },
});
@@ -199,13 +202,13 @@ fiveui.RuleSetModel = Backbone.Model.extend({
var rsMethod = method == 'update' ? 'updateRuleSet' : 'addRuleSet';
msg.send('loadRuleSet', source, function(obj) {
- if(obj) {
+ if(!obj.error) {
obj.id = id;
obj.source = source;
msg.send(rsMethod, obj, options.success);
} else {
- options.error('failed to load manifest');
+ options.error(obj.error);
}
});
break;
diff --git a/contexts/data/fiveui/set.js b/src/js/fiveui/js/set.js
index 7015a3e..7015a3e 100644
--- a/contexts/data/fiveui/set.js
+++ b/src/js/fiveui/js/set.js
diff --git a/contexts/data/fiveui/settings.js b/src/js/fiveui/js/settings.js
index c284db8..a17a9e0 100644
--- a/contexts/data/fiveui/settings.js
+++ b/src/js/fiveui/js/settings.js
@@ -336,8 +336,8 @@ fiveui.Settings.manager = function(chan, settings) {
fiveui.RuleSet.load(url, {
success:respond,
- error:function() {
- respond(null);
+ error:function(msg) {
+ respond({ error : msg });
},
});
});
diff --git a/contexts/data/fiveui/state.js b/src/js/fiveui/js/state.js
index 226a439..226a439 100644
--- a/contexts/data/fiveui/state.js
+++ b/src/js/fiveui/js/state.js
diff --git a/contexts/data/fiveui/update-manager.js b/src/js/fiveui/js/update-manager.js
index 8013d2f..8013d2f 100644
--- a/contexts/data/fiveui/update-manager.js
+++ b/src/js/fiveui/js/update-manager.js
diff --git a/contexts/data/fiveui/url-pat.js b/src/js/fiveui/js/url-pat.js
index d723021..d723021 100644
--- a/contexts/data/fiveui/url-pat.js
+++ b/src/js/fiveui/js/url-pat.js
diff --git a/contexts/data/fiveui/utils.js b/src/js/fiveui/js/utils.js
index 0ab3128..0ab3128 100644
--- a/contexts/data/fiveui/utils.js
+++ b/src/js/fiveui/js/utils.js
diff --git a/contexts/data/fiveui/options.html b/src/js/fiveui/options.html
index 8994a69..1da5e33 100644
--- a/contexts/data/fiveui/options.html
+++ b/src/js/fiveui/options.html
@@ -26,13 +26,22 @@
<title id="title">Five UI</title>
<link id="favicon" rel="icon" href="images/fiveui-icon-16.png" />
- <link rel="stylesheet" href="options.css" />
- <link rel="stylesheet" href="entry.css" />
- <script src="../lib/jquery/jquery-1.8.3.js"></script>
- <script src="../underscore.js"></script>
- <script src="../backbone.js"></script>
- <script src="../target/chrome-options.js"></script>
- <script src="ffcheck.js"></script>
+ <link rel="stylesheet" href="css/options.css" />
+ <link rel="stylesheet" href="css/entry.css" />
+ <script src="jquery/jquery-1.8.3.js"></script>
+ <script src="underscore.js"></script>
+ <script src="backbone.js"></script>
+ <script src="js/settings.js"></script>
+ <script src="js/chan.js"></script>
+ <script src="js/messenger.js"></script>
+ <script src="js/options.js"></script>
+ <script src="js/update-manager.js"></script>
+ <script src="js/utils.js"></script>
+ <script src="js/entry.js"></script>
+ <script src="js/rules.js"></script>
+ <script src="js/url-pat.js"></script>
+ <script src="js/platform-ajax.js"></script>
+ <script src="js/platform-options.js"></script>
</head>
<body>
diff --git a/contexts/data/lib/backbone.js b/src/js/lib/backbone.js
index 3512d42..3512d42 100644
--- a/contexts/data/lib/backbone.js
+++ b/src/js/lib/backbone.js
diff --git a/contexts/data/lib/jquery/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png b/src/js/lib/jquery/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png
index 954e22d..954e22d 100755
--- a/contexts/data/lib/jquery/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png
+++ b/src/js/lib/jquery/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png
Binary files differ
diff --git a/contexts/data/lib/jquery/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png b/src/js/lib/jquery/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png
index 64ece57..64ece57 100755
--- a/contexts/data/lib/jquery/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png
+++ b/src/js/lib/jquery/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png
Binary files differ
diff --git a/contexts/data/lib/jquery/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png b/src/js/lib/jquery/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png
index abdc010..abdc010 100755
--- a/contexts/data/lib/jquery/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png
+++ b/src/js/lib/jquery/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png
Binary files differ
diff --git a/contexts/data/lib/jquery/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png b/src/js/lib/jquery/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png
index 9b383f4..9b383f4 100755
--- a/contexts/data/lib/jquery/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png
+++ b/src/js/lib/jquery/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png
Binary files differ
diff --git a/contexts/data/lib/jquery/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png b/src/js/lib/jquery/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png
index 859c264..859c264 100755
--- a/contexts/data/lib/jquery/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png
+++ b/src/js/lib/jquery/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png
Binary files differ
diff --git a/contexts/data/lib/jquery/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png b/src/js/lib/jquery/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png
index 42ccba2..42ccba2 100755
--- a/contexts/data/lib/jquery/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png
+++ b/src/js/lib/jquery/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png
Binary files differ
diff --git a/contexts/data/lib/jquery/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png b/src/js/lib/jquery/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png
index 1b1972b..1b1972b 100755
--- a/contexts/data/lib/jquery/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png
+++ b/src/js/lib/jquery/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png
Binary files differ
diff --git a/contexts/data/lib/jquery/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png b/src/js/lib/jquery/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
index f127367..f127367 100755
--- a/contexts/data/lib/jquery/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
+++ b/src/js/lib/jquery/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
Binary files differ
diff --git a/contexts/data/lib/jquery/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png b/src/js/lib/jquery/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png
index 359397a..359397a 100755
--- a/contexts/data/lib/jquery/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png
+++ b/src/js/lib/jquery/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png
Binary files differ
diff --git a/contexts/data/lib/jquery/css/ui-lightness/images/ui-icons_222222_256x240.png b/src/js/lib/jquery/css/ui-lightness/images/ui-icons_222222_256x240.png
index b273ff1..b273ff1 100755
--- a/contexts/data/lib/jquery/css/ui-lightness/images/ui-icons_222222_256x240.png
+++ b/src/js/lib/jquery/css/ui-lightness/images/ui-icons_222222_256x240.png
Binary files differ
diff --git a/contexts/data/lib/jquery/css/ui-lightness/images/ui-icons_228ef1_256x240.png b/src/js/lib/jquery/css/ui-lightness/images/ui-icons_228ef1_256x240.png
index a641a37..a641a37 100755
--- a/contexts/data/lib/jquery/css/ui-lightness/images/ui-icons_228ef1_256x240.png
+++ b/src/js/lib/jquery/css/ui-lightness/images/ui-icons_228ef1_256x240.png
Binary files differ
diff --git a/contexts/data/lib/jquery/css/ui-lightness/images/ui-icons_ef8c08_256x240.png b/src/js/lib/jquery/css/ui-lightness/images/ui-icons_ef8c08_256x240.png
index 85e63e9..85e63e9 100755
--- a/contexts/data/lib/jquery/css/ui-lightness/images/ui-icons_ef8c08_256x240.png
+++ b/src/js/lib/jquery/css/ui-lightness/images/ui-icons_ef8c08_256x240.png
Binary files differ
diff --git a/contexts/data/lib/jquery/css/ui-lightness/images/ui-icons_ffd27a_256x240.png b/src/js/lib/jquery/css/ui-lightness/images/ui-icons_ffd27a_256x240.png
index e117eff..e117eff 100755
--- a/contexts/data/lib/jquery/css/ui-lightness/images/ui-icons_ffd27a_256x240.png
+++ b/src/js/lib/jquery/css/ui-lightness/images/ui-icons_ffd27a_256x240.png
Binary files differ
diff --git a/contexts/data/lib/jquery/css/ui-lightness/images/ui-icons_ffffff_256x240.png b/src/js/lib/jquery/css/ui-lightness/images/ui-icons_ffffff_256x240.png
index 42f8f99..42f8f99 100755
--- a/contexts/data/lib/jquery/css/ui-lightness/images/ui-icons_ffffff_256x240.png
+++ b/src/js/lib/jquery/css/ui-lightness/images/ui-icons_ffffff_256x240.png
Binary files differ
diff --git a/contexts/data/lib/jquery/css/ui-lightness/jquery-ui-1.9.2.custom.css b/src/js/lib/jquery/css/ui-lightness/jquery-ui-1.9.2.custom.css
index 330a89c..330a89c 100755
--- a/contexts/data/lib/jquery/css/ui-lightness/jquery-ui-1.9.2.custom.css
+++ b/src/js/lib/jquery/css/ui-lightness/jquery-ui-1.9.2.custom.css
diff --git a/contexts/data/lib/jquery/css/ui-lightness/jquery-ui-1.9.2.custom.min.css b/src/js/lib/jquery/css/ui-lightness/jquery-ui-1.9.2.custom.min.css
index 294a082..294a082 100755
--- a/contexts/data/lib/jquery/css/ui-lightness/jquery-ui-1.9.2.custom.min.css
+++ b/src/js/lib/jquery/css/ui-lightness/jquery-ui-1.9.2.custom.min.css
diff --git a/contexts/data/lib/jquery/css/ui-lightness/jquery-ui.css b/src/js/lib/jquery/css/ui-lightness/jquery-ui.css
index 59dfc3c..59dfc3c 120000
--- a/contexts/data/lib/jquery/css/ui-lightness/jquery-ui.css
+++ b/src/js/lib/jquery/css/ui-lightness/jquery-ui.css
diff --git a/contexts/data/lib/jquery/jquery-1.8.3.js b/src/js/lib/jquery/jquery-1.8.3.js
index a86bf79..a86bf79 100755
--- a/contexts/data/lib/jquery/jquery-1.8.3.js
+++ b/src/js/lib/jquery/jquery-1.8.3.js
diff --git a/contexts/data/lib/jquery/jquery-ui-1.9.2.custom.js b/src/js/lib/jquery/jquery-ui-1.9.2.custom.js
index a2ea7bc..a2ea7bc 100755
--- a/contexts/data/lib/jquery/jquery-ui-1.9.2.custom.js
+++ b/src/js/lib/jquery/jquery-ui-1.9.2.custom.js
diff --git a/contexts/data/lib/jquery/jquery-ui-1.9.2.custom.min.js b/src/js/lib/jquery/jquery-ui-1.9.2.custom.min.js
index 9529672..9529672 100755
--- a/contexts/data/lib/jquery/jquery-ui-1.9.2.custom.min.js
+++ b/src/js/lib/jquery/jquery-ui-1.9.2.custom.min.js
diff --git a/contexts/data/lib/jquery/jquery-ui.js b/src/js/lib/jquery/jquery-ui.js
index 072d3a5..072d3a5 120000
--- a/contexts/data/lib/jquery/jquery-ui.js
+++ b/src/js/lib/jquery/jquery-ui.js
diff --git a/contexts/data/lib/jquery/jquery.js b/src/js/lib/jquery/jquery.js
index 6217889..6217889 120000
--- a/contexts/data/lib/jquery/jquery.js
+++ b/src/js/lib/jquery/jquery.js
diff --git a/contexts/data/lib/jshash/md5.js b/src/js/lib/md5.js
index 8773a96..8773a96 100755..100644
--- a/contexts/data/lib/jshash/md5.js
+++ b/src/js/lib/md5.js
diff --git a/contexts/data/lib/phantomjs_jasmine/jasmine-1.0.2/MIT.LICENSE b/src/js/lib/phantomjs_jasmine/jasmine-1.0.2/MIT.LICENSE
index 1eb9b49..1eb9b49 100644
--- a/contexts/data/lib/phantomjs_jasmine/jasmine-1.0.2/MIT.LICENSE
+++ b/src/js/lib/phantomjs_jasmine/jasmine-1.0.2/MIT.LICENSE
diff --git a/contexts/data/lib/phantomjs_jasmine/jasmine-1.0.2/jasmine-html.js b/src/js/lib/phantomjs_jasmine/jasmine-1.0.2/jasmine-html.js
index 046cb5c..046cb5c 100644
--- a/contexts/data/lib/phantomjs_jasmine/jasmine-1.0.2/jasmine-html.js
+++ b/src/js/lib/phantomjs_jasmine/jasmine-1.0.2/jasmine-html.js
diff --git a/contexts/data/lib/phantomjs_jasmine/jasmine-1.0.2/jasmine.css b/src/js/lib/phantomjs_jasmine/jasmine-1.0.2/jasmine.css
index 6583fe7..6583fe7 100644
--- a/contexts/data/lib/phantomjs_jasmine/jasmine-1.0.2/jasmine.css
+++ b/src/js/lib/phantomjs_jasmine/jasmine-1.0.2/jasmine.css
diff --git a/contexts/data/lib/phantomjs_jasmine/jasmine-1.0.2/jasmine.js b/src/js/lib/phantomjs_jasmine/jasmine-1.0.2/jasmine.js
index 63e415d..63e415d 100644
--- a/contexts/data/lib/phantomjs_jasmine/jasmine-1.0.2/jasmine.js
+++ b/src/js/lib/phantomjs_jasmine/jasmine-1.0.2/jasmine.js
diff --git a/contexts/data/lib/phantomjs_jasmine/jasmine-reporters/jasmine.phantomjs-reporter.js b/src/js/lib/phantomjs_jasmine/jasmine-reporters/jasmine.phantomjs-reporter.js
index c326ded..c326ded 100644
--- a/contexts/data/lib/phantomjs_jasmine/jasmine-reporters/jasmine.phantomjs-reporter.js
+++ b/src/js/lib/phantomjs_jasmine/jasmine-reporters/jasmine.phantomjs-reporter.js
diff --git a/contexts/data/lib/jasmine/jasmine_favicon.png b/src/js/lib/phantomjs_jasmine/jasmine_favicon.png
index 218f3b4..218f3b4 100644
--- a/contexts/data/lib/jasmine/jasmine_favicon.png
+++ b/src/js/lib/phantomjs_jasmine/jasmine_favicon.png
Binary files differ
diff --git a/contexts/data/lib/phantomjs_jasmine/phantomjs_jasminexml_runner.js b/src/js/lib/phantomjs_jasmine/phantomjs_jasminexml_runner.js
index 8804a29..8804a29 100644
--- a/contexts/data/lib/phantomjs_jasmine/phantomjs_jasminexml_runner.js
+++ b/src/js/lib/phantomjs_jasmine/phantomjs_jasminexml_runner.js
diff --git a/contexts/data/lib/phantomjs_jasmine/utils/core.js b/src/js/lib/phantomjs_jasmine/utils/core.js
index 8441e13..8441e13 100644
--- a/contexts/data/lib/phantomjs_jasmine/utils/core.js
+++ b/src/js/lib/phantomjs_jasmine/utils/core.js
diff --git a/contexts/data/lib/underscore.js b/src/js/lib/underscore.js
index 32ca0c1..32ca0c1 100644
--- a/contexts/data/lib/underscore.js
+++ b/src/js/lib/underscore.js
diff --git a/contexts/data/fiveui/selenium/selenium-injected-compute.js b/src/js/selenium/selenium-injected-compute.js
index d0327b3..d0327b3 100644
--- a/contexts/data/fiveui/selenium/selenium-injected-compute.js
+++ b/src/js/selenium/selenium-injected-compute.js
diff --git a/src/js/tests/.gitignore b/src/js/tests/.gitignore
new file mode 100644
index 0000000..a9a1bd3
--- /dev/null
+++ b/src/js/tests/.gitignore
@@ -0,0 +1 @@
+reports/
diff --git a/contexts/data/tests/PhantomJSJasmineRunner.html b/src/js/tests/PhantomJSJasmineRunner.html
index b240f46..e8e07e6 100644
--- a/contexts/data/tests/PhantomJSJasmineRunner.html
+++ b/src/js/tests/PhantomJSJasmineRunner.html
@@ -18,14 +18,14 @@
<script type="text/javascript" src="mock-storage.js"></script>
<!-- source files -->
- <script type="text/javascript" src="../fiveui/set.js"></script>
- <script type="text/javascript" src="../fiveui/utils.js"></script>
- <script type="text/javascript" src="../fiveui/chan.js"></script>
- <script type="text/javascript" src="../fiveui/rules.js"></script>
- <script type="text/javascript" src="../fiveui/messenger.js"></script>
- <script type="text/javascript" src="../fiveui/url-pat.js"></script>
- <script type="text/javascript" src="../fiveui/settings.js"></script>
- <script type="text/javascript" src="../fiveui/state.js"></script>
+ <script type="text/javascript" src="../fiveui/js/set.js"></script>
+ <script type="text/javascript" src="../fiveui/js/utils.js"></script>
+ <script type="text/javascript" src="../fiveui/js/chan.js"></script>
+ <script type="text/javascript" src="../fiveui/js/rules.js"></script>
+ <script type="text/javascript" src="../fiveui/js/messenger.js"></script>
+ <script type="text/javascript" src="../fiveui/js/url-pat.js"></script>
+ <script type="text/javascript" src="../fiveui/js/settings.js"></script>
+ <script type="text/javascript" src="../fiveui/js/state.js"></script>
<script type="text/javascript" src="../fiveui/injected/prelude.js"></script>
<!-- spec files -->
diff --git a/contexts/data/tests/README.md b/src/js/tests/README.md
index dbd8435..dbd8435 100644
--- a/contexts/data/tests/README.md
+++ b/src/js/tests/README.md
diff --git a/contexts/data/tests/SpecRunner.html b/src/js/tests/SpecRunner.html
index 4a7ec8c..3469bfd 100644
--- a/contexts/data/tests/SpecRunner.html
+++ b/src/js/tests/SpecRunner.html
@@ -4,26 +4,26 @@
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Jasmine Spec Runner v2.0.0-alpha</title>
- <link rel="shortcut icon" type="image/png" href="../lib/jasmine/jasmine_favicon.png">
- <link rel="stylesheet" type="text/css" href="../lib/jasmine/jasmine.css">
+ <link rel="shortcut icon" type="image/png" href="jasmine/jasmine_favicon.png">
+ <link rel="stylesheet" type="text/css" href="jasmine/jasmine.css">
- <script type="text/javascript" src="../lib/jasmine/jasmine.js"></script>
- <script type="text/javascript" src="../lib/jasmine/jasmine-html.js"></script>
- <script type="text/javascript" src="../lib/jasmine/boot.js"></script>
+ <script type="text/javascript" src="jasmine/jasmine.js"></script>
+ <script type="text/javascript" src="jasmine/jasmine-html.js"></script>
+ <script type="text/javascript" src="jasmine/boot.js"></script>
<script type="text/javascript" src="../lib/jquery/jquery-1.8.3.js"></script>
<script type="text/javascript" src="../lib/underscore.js"></script>
<script type="text/javascript" src="../lib/backbone.js"></script>
<script type="text/javascript" src="mock-storage.js"></script>
- <script type="text/javascript" src="../fiveui/set.js"></script>
- <script type="text/javascript" src="../fiveui/utils.js"></script>
- <script type="text/javascript" src="../fiveui/chan.js"></script>
- <script type="text/javascript" src="../fiveui/rules.js"></script>
- <script type="text/javascript" src="../fiveui/messenger.js"></script>
- <script type="text/javascript" src="../fiveui/url-pat.js"></script>
- <script type="text/javascript" src="../fiveui/settings.js"></script>
- <script type="text/javascript" src="../fiveui/state.js"></script>
+ <script type="text/javascript" src="../fiveui/js/set.js"></script>
+ <script type="text/javascript" src="../fiveui/js/utils.js"></script>
+ <script type="text/javascript" src="../fiveui/js/chan.js"></script>
+ <script type="text/javascript" src="../fiveui/js/rules.js"></script>
+ <script type="text/javascript" src="../fiveui/js/messenger.js"></script>
+ <script type="text/javascript" src="../fiveui/js/url-pat.js"></script>
+ <script type="text/javascript" src="../fiveui/js/settings.js"></script>
+ <script type="text/javascript" src="../fiveui/js/state.js"></script>
<script type="text/javascript" src="../fiveui/injected/prelude.js"></script>
<script type="text/javascript" src="specs/set.js"></script>
diff --git a/src/js/tests/build.mk b/src/js/tests/build.mk
new file mode 100644
index 0000000..b49109d
--- /dev/null
+++ b/src/js/tests/build.mk
@@ -0,0 +1,18 @@
+
+js-test-dir := $(path)
+
+clean::
+ $(RM) -r $(js-test-dir)/reports
+
+
+# Jasmine Specs ###############################################################
+
+ifneq "$(PHANTOM_EXE)" ""
+
+test: test-js
+test-js:
+ cd $(topdir)/src/js && $(PHANTOM_EXE) \
+ lib/phantomjs_jasmine/phantomjs_jasminexml_runner.js \
+ tests/PhantomJSJasmineRunner.html tests/reports/
+
+endif
diff --git a/contexts/data/lib/jasmine/MIT.LICENSE b/src/js/tests/jasmine/MIT.LICENSE
index 7c435ba..7c435ba 100644
--- a/contexts/data/lib/jasmine/MIT.LICENSE
+++ b/src/js/tests/jasmine/MIT.LICENSE
diff --git a/contexts/data/lib/jasmine/boot.js b/src/js/tests/jasmine/boot.js
index aea8e00..aea8e00 100644
--- a/contexts/data/lib/jasmine/boot.js
+++ b/src/js/tests/jasmine/boot.js
diff --git a/contexts/data/lib/jasmine/jasmine-html.js b/src/js/tests/jasmine/jasmine-html.js
index dcc8913..dcc8913 100644
--- a/contexts/data/lib/jasmine/jasmine-html.js
+++ b/src/js/tests/jasmine/jasmine-html.js
diff --git a/contexts/data/lib/jasmine/jasmine.css b/src/js/tests/jasmine/jasmine.css
index 0a0ce80..0a0ce80 100644
--- a/contexts/data/lib/jasmine/jasmine.css
+++ b/src/js/tests/jasmine/jasmine.css
diff --git a/contexts/data/lib/jasmine/jasmine.js b/src/js/tests/jasmine/jasmine.js
index 32c580e..32c580e 100644
--- a/contexts/data/lib/jasmine/jasmine.js
+++ b/src/js/tests/jasmine/jasmine.js
diff --git a/contexts/data/lib/phantomjs_jasmine/jasmine_favicon.png b/src/js/tests/jasmine/jasmine_favicon.png
index 218f3b4..218f3b4 100644
--- a/contexts/data/lib/phantomjs_jasmine/jasmine_favicon.png
+++ b/src/js/tests/jasmine/jasmine_favicon.png
Binary files differ
diff --git a/contexts/data/tests/mock-storage.js b/src/js/tests/mock-storage.js
index 71c667f..71c667f 100644
--- a/contexts/data/tests/mock-storage.js
+++ b/src/js/tests/mock-storage.js
diff --git a/contexts/data/tests/specs/messenger.js b/src/js/tests/specs/messenger.js
index 12bd9e1..12bd9e1 100644
--- a/contexts/data/tests/specs/messenger.js
+++ b/src/js/tests/specs/messenger.js
diff --git a/contexts/data/tests/specs/prelude.js b/src/js/tests/specs/prelude.js
index 31510e7..31510e7 100644
--- a/contexts/data/tests/specs/prelude.js
+++ b/src/js/tests/specs/prelude.js
diff --git a/contexts/data/tests/specs/rules.js b/src/js/tests/specs/rules.js
index b9db6b3..b9db6b3 100644
--- a/contexts/data/tests/specs/rules.js
+++ b/src/js/tests/specs/rules.js
diff --git a/contexts/data/tests/specs/set.js b/src/js/tests/specs/set.js
index a0dfb71..a0dfb71 100644
--- a/contexts/data/tests/specs/set.js
+++ b/src/js/tests/specs/set.js
diff --git a/contexts/data/tests/specs/settings.js b/src/js/tests/specs/settings.js
index a89b532..a89b532 100644
--- a/contexts/data/tests/specs/settings.js
+++ b/src/js/tests/specs/settings.js
diff --git a/contexts/data/tests/specs/state.js b/src/js/tests/specs/state.js
index 65ff0b1..65ff0b1 100644
--- a/contexts/data/tests/specs/state.js
+++ b/src/js/tests/specs/state.js
diff --git a/contexts/data/tests/specs/utils.js b/src/js/tests/specs/utils.js
index f4ed399..f4ed399 100644
--- a/contexts/data/tests/specs/utils.js
+++ b/src/js/tests/specs/utils.js