diff --git a/Gruntfile.coffee b/Gruntfile.coffee index 3553d9de45..685b1c2e52 100644 --- a/Gruntfile.coffee +++ b/Gruntfile.coffee @@ -108,6 +108,7 @@ taskManager.add 'integration_test', [ taskManager.add 'everything', [ 'build' 'test' + 'integration_test' ] # This is the target run by Travis. Targets in here should run locally @@ -359,6 +360,8 @@ module.exports = (grunt) -> 'scripts/background.static.js' '!**/*spec*' + 'generic_ui/style/*.css' + # extra components we use 'generic_ui/fonts/*' 'generic_ui/icons/*' @@ -442,6 +445,8 @@ module.exports = (grunt) -> '!data/generic_ui/polymer/vulcanized*inline.html' '!data/generic_ui/polymer/vulcanized.js' # vulcanized.html uses vulcanized.static.js + 'data/generic_ui/style/*.css' + 'data/fonts/*' 'data/icons/*' 'data/generic_ui/fonts/*' diff --git a/README.md b/README.md index 777a7b0a49..53b6b93166 100644 --- a/README.md +++ b/README.md @@ -104,7 +104,8 @@ of uProxy's Grunt commands: * `dist` - Generates distribution files, including the Firefox xpi * `clean` - Cleans up * `test` - Run unit tests - * `everything` - 'test', then 'build' + * `integration_test` - Run integration tests + * `everything` - 'build', 'test' and then 'integration_test' The easiest way to stay current is to pull changes, run `grunt build` to build your distribution, and re-run as you make changes to the files. diff --git a/bower.json b/bower.json index 006c6da511..1dc4adba41 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "uProxy", - "version": "0.8.6", + "version": "0.8.7", "dependencies": { "polymer": "^0.5.6", "paper-elements": "Polymer/paper-elements#^0.5.6", diff --git a/package.json b/package.json index 68ff234312..7597582a21 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "uProxy", "description": "Share your pathway to the Internet", - "version": "0.8.6", + "version": "0.8.7", "repository": { "type": "git", "url": "https://github.com/uproxy/uproxy" diff --git a/src/chrome/app/manifest.json b/src/chrome/app/manifest.json index 42e760c380..046482fca7 100644 --- a/src/chrome/app/manifest.json +++ b/src/chrome/app/manifest.json @@ -3,7 +3,7 @@ "name": "__MSG_appName__", "description": "__MSG_appDescription__", "minimum_chrome_version": "41.0.2272.63", - "version": "0.8.6", + "version": "0.8.7", "default_locale": "en", "icons": { "128": "icons/128_online.png" diff --git a/src/chrome/extension/manifest.json b/src/chrome/extension/manifest.json index aca583ddb8..ce3897cd7f 100644 --- a/src/chrome/extension/manifest.json +++ b/src/chrome/extension/manifest.json @@ -1,6 +1,6 @@ { "name": "__MSG_extName__", - "version": "0.8.6", + "version": "0.8.7", "manifest_version": 2, "description": "__MSG_extDescription__", "minimum_chrome_version": "41.0.2272.63", diff --git a/src/firefox/package.json b/src/firefox/package.json index bfaf63d2d1..4602294cd1 100644 --- a/src/firefox/package.json +++ b/src/firefox/package.json @@ -5,7 +5,7 @@ "description": "This is the alpha version of uProxy.", "author": "uProxy Team ", "license": "Apache 2.0", - "version": "0.8.6", + "version": "0.8.7", "permissions": { "private-browsing": true } diff --git a/src/generic_core/remote-user.ts b/src/generic_core/remote-user.ts index bd3c417bde..607c5f43e3 100644 --- a/src/generic_core/remote-user.ts +++ b/src/generic_core/remote-user.ts @@ -352,14 +352,10 @@ var log :logging.Log = new logging.Log('remote-user'); isOnline = true; } } - if (allInstanceIds.length === 0) { - // Don't send users to UI if they don't have any instances (i.e. are not + if (!this.network.areAllContactsUproxy() && allInstanceIds.length === 0) { + // For networks which give us profiles for non-uProxy contacts, don't + // send users to the UI unless they have instances (they may not be // uProxy users). - // TODO: ideally we should not have User objects for users without - // instances, but for now we create Users whenever we get a UserProfile - // or ClientState from the social provider that isn't - // ONLINE_WITH_OTHER_APP. For now this is necessary because we don't - // yet load instances from storage until User objects are created. return null; } @@ -465,7 +461,7 @@ var log :logging.Log = new logging.Log('remote-user'); this.instances_[instanceId] = new remote_instance.RemoteInstance(this, instanceId); onceLoadedPromises.push(this.instances_[instanceId].onceLoaded); } - + } Promise.all(onceLoadedPromises).then(this.fulfillStorageLoad_); diff --git a/src/generic_core/social.ts b/src/generic_core/social.ts index d0c6f57ba5..85eb889d93 100644 --- a/src/generic_core/social.ts +++ b/src/generic_core/social.ts @@ -40,15 +40,18 @@ import ui = ui_connector.connector; export var NETWORK_OPTIONS :{[name:string]:social.NetworkOptions} = { 'Google': { isFirebase: false, - enableMonitoring: true + enableMonitoring: true, + areAllContactsUproxy: false }, 'Facebook': { isFirebase: true, - enableMonitoring: true + enableMonitoring: true, + areAllContactsUproxy: true }, 'Google+': { isFirebase: true, - enableMonitoring: true + enableMonitoring: true, + areAllContactsUproxy: false } } @@ -259,6 +262,12 @@ import ui = ui_connector.connector; throw new Error('Operation not implemented'); } + public areAllContactsUproxy = () : boolean => { + // Default to false. + var options :social.NetworkOptions = NETWORK_OPTIONS[this.name]; + return options ? options.areAllContactsUproxy === true : false; + } + } // class AbstractNetwork diff --git a/src/generic_ui/index.html b/src/generic_ui/index.html index adb2c61aaf..bdaf4b6735 100644 --- a/src/generic_ui/index.html +++ b/src/generic_ui/index.html @@ -10,6 +10,7 @@ +