You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by ag...@apache.org on 2013/10/24 03:55:59 UTC
[20/21] git commit: Fix app harness menu items restart and update.
Fix app harness menu items restart and update.
Project: http://git-wip-us.apache.org/repos/asf/cordova-app-harness/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-app-harness/commit/951d8ee2
Tree: http://git-wip-us.apache.org/repos/asf/cordova-app-harness/tree/951d8ee2
Diff: http://git-wip-us.apache.org/repos/asf/cordova-app-harness/diff/951d8ee2
Branch: refs/heads/master
Commit: 951d8ee2d45469d7b41f11722c0f785a6d7ceaa0
Parents: 0ae80c8
Author: Andrew Grieve <ag...@chromium.org>
Authored: Wed Oct 23 14:35:11 2013 -0400
Committer: Andrew Grieve <ag...@chromium.org>
Committed: Wed Oct 23 21:55:18 2013 -0400
----------------------------------------------------------------------
www/cdvah/js/AppsService.js | 12 +-----
www/cdvah/js/ContextMenuInjectScript.js | 20 +++++-----
www/cdvah/js/Installer.js | 7 ++--
www/cdvah/js/ListCtrl.js | 58 +++++++++++++---------------
www/cdvahcm/ContextMenu.js | 31 ++++++---------
5 files changed, 55 insertions(+), 73 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-app-harness/blob/951d8ee2/www/cdvah/js/AppsService.js
----------------------------------------------------------------------
diff --git a/www/cdvah/js/AppsService.js b/www/cdvah/js/AppsService.js
index 6b14e08..65e5d49 100644
--- a/www/cdvah/js/AppsService.js
+++ b/www/cdvah/js/AppsService.js
@@ -6,9 +6,8 @@
var platformId = cordova.platformId;
// Map of type -> installer.
var _installerFactories = {};
-
+ // Array of installer objects.
var _installers = null;
- var _lastLaunchedAppId = null;
function createInstallHandlersFromJson(json) {
var appList = json['appList'] || [];
@@ -42,14 +41,12 @@
return readAppsJson()
.then(function(appsJson) {
- _lastLaunchedAppId = appsJson['lastLaunched'];
_installers = createInstallHandlersFromJson(appsJson);
});
}
function writeAppsJson() {
var appsJson = {
- 'lastLaunched': _lastLaunchedAppId,
'appList': []
};
var appList = appsJson['appList'];
@@ -77,12 +74,7 @@
},
launchApp : function(installer) {
- _lastLaunchedAppId = installer.appId;
- return writeAppsJson()
- .then(function() {
- var installPath = INSTALL_DIRECTORY + '/' + installer.appId;
- return installer.launch(installPath);
- })
+ return installer.launch(_installers.indexOf(installer))
.then(function(launchUrl) {
window.location = launchUrl;
});
http://git-wip-us.apache.org/repos/asf/cordova-app-harness/blob/951d8ee2/www/cdvah/js/ContextMenuInjectScript.js
----------------------------------------------------------------------
diff --git a/www/cdvah/js/ContextMenuInjectScript.js b/www/cdvah/js/ContextMenuInjectScript.js
index 7e64813..95ca108 100644
--- a/www/cdvah/js/ContextMenuInjectScript.js
+++ b/www/cdvah/js/ContextMenuInjectScript.js
@@ -3,19 +3,21 @@
/* global myApp */
myApp.factory("ContextMenuInjectScript", [ function () {
var toInject = function() {
- document.addEventListener('deviceready', function() {
- console.log("Injecting menu script");
- var contextScript = document.createElement("script");
- contextScript.setAttribute("src", "app-harness:///cdvahcm/ContextMenu.js");
- window.__cordovaAppHarnessAppName = "appPlaceHolder";
- document.getElementsByTagName("head")[0].appendChild(contextScript);
- });
+ console.log("Menu script injected.");
+ var contextScript = document.createElement("script");
+ contextScript.setAttribute("src", "app-harness:///cdvahcm/ContextMenu.js");
+ window.__cordovaAppHarnessData = {
+ 'appIndex': appIndexPlaceHolder,
+ 'appName': 'appNamePlaceHolder'
+ };
+ document.getElementsByTagName("head")[0].appendChild(contextScript);
};
return {
- getInjectString : function(appName){
+ getInjectString : function(appName, appIndex) {
var string = "\n(" + toInject.toString() + ")();";
- string = string.replace("appPlaceHolder", appName);
+ string = string.replace('appNamePlaceHolder', appName);
+ string = string.replace('appIndexPlaceHolder', appIndex);
return string;
}
};
http://git-wip-us.apache.org/repos/asf/cordova-app-harness/blob/951d8ee2/www/cdvah/js/Installer.js
----------------------------------------------------------------------
diff --git a/www/cdvah/js/Installer.js b/www/cdvah/js/Installer.js
index fa15f52..3e835ba 100644
--- a/www/cdvah/js/Installer.js
+++ b/www/cdvah/js/Installer.js
@@ -62,10 +62,11 @@
return $q.when();
};
- Installer.prototype.launch = function() {
+ Installer.prototype.launch = function(appIndex) {
var installPath = this.installPath;
+ var appId = this.appId;
if (!installPath) {
- throw new Error('App ' + this.appId + ' requires an update');
+ throw new Error('App ' + appId + ' requires an update');
}
var configLocation = installPath + '/config.xml';
@@ -75,7 +76,7 @@
var harnessUrl = urlutil.makeAbsolute(location.pathname);
var harnessDir = harnessUrl.replace(/\/[^\/]*\/[^\/]*$/, '');
var installUrl = urlutil.makeAbsolute(installPath);
- var injectString = ContextMenuInjectScript.getInjectString();
+ var injectString = ContextMenuInjectScript.getInjectString(appId, appIndex);
var startLocation = urlutil.makeAbsolute(rawStartLocation).replace('/cdvah/', '/');
// On iOS, file:// URLs can't be re-routed via an NSURLProtocol for top-level navications.
// http://stackoverflow.com/questions/12058203/using-a-custom-nsurlprotocol-on-ios-for-file-urls-causes-frame-load-interrup
http://git-wip-us.apache.org/repos/asf/cordova-app-harness/blob/951d8ee2/www/cdvah/js/ListCtrl.js
----------------------------------------------------------------------
diff --git a/www/cdvah/js/ListCtrl.js b/www/cdvah/js/ListCtrl.js
index 2495b97..5195086 100644
--- a/www/cdvah/js/ListCtrl.js
+++ b/www/cdvah/js/ListCtrl.js
@@ -1,42 +1,34 @@
(function(){
"use strict";
/* global myApp */
- myApp.controller("ListCtrl", [ "AppBundle", "notifier", "$rootScope", "$scope", "$routeParams", "AppsService", function (AppBundle, notifier, $rootScope, $scope, $routeParams, AppsService) {
+ myApp.controller("ListCtrl", ['$location', "notifier", "$rootScope", "$scope", "$routeParams", "AppsService", function ($location, notifier, $rootScope, $scope, $routeParams, AppsService) {
$scope.appList = [];
$rootScope.appTitle = 'Cordova App Harness';
- initialise();
-
function initialise() {
- //if we are navigating here after running an app, reset any aliases set for the app by app harness or any aliases setup by the previous app
- return AppBundle.reset()
- .then(function(){
- if($routeParams.lastLaunched) {
- return AppsService.getLastRunApp()
- .then(AppsService.launchApp, function(e){
- e = e || {};
- console.error("Error launching last run app: " + e);
- notifier.error('' + e);
- });
- }
- else if($routeParams.updateLastLaunched) {
- var app;
- // updating may take a while so we show the apps list like we normally do
- return $scope.loadAppsList()
- .then(AppsService.getLastRunApp)
- .then(function(_app){
- app = _app;
- return AppsService.updateApp(app);
- })
- .then(function(){
- return AppsService.launchApp(app);
- }, function(e){
- e = e || {};
- console.error("Error updating last run app: " + e);
- notifier.error('' + e);
- });
- } else {
- return $scope.loadAppsList();
+ return $scope.loadAppsList()
+ .then(AppsService.getAppList)
+ .then(function(appList) {
+ var action = $routeParams['action'];
+ if (action) {
+ var appIndex = +$routeParams['appIndex'];
+ var activeApp = appList[appIndex];
+ if (action == 'restart') {
+ return AppsService.launchApp(activeApp)
+ .then(null, function(e){
+ console.error("Error launching last run app: " + e);
+ notifier.error('' + e);
+ });
+ } else if (action == 'update') {
+ // updating may take a while so we show the apps list like we normally do
+ return AppsService.updateApp(activeApp)
+ .then(function() {
+ return AppsService.launchApp(activeApp);
+ }).then(null, function(e){
+ console.error("Error updating last run app: " + e);
+ notifier.error('' + e);
+ });
+ }
}
});
}
@@ -91,6 +83,8 @@
});
}
}
+
+ initialise();
}]);
})();
http://git-wip-us.apache.org/repos/asf/cordova-app-harness/blob/951d8ee2/www/cdvahcm/ContextMenu.js
----------------------------------------------------------------------
diff --git a/www/cdvahcm/ContextMenu.js b/www/cdvahcm/ContextMenu.js
index 0a7e433..085fea7 100644
--- a/www/cdvahcm/ContextMenu.js
+++ b/www/cdvahcm/ContextMenu.js
@@ -1,43 +1,36 @@
(function () {
+ var contextMenuIframeEl = null;
function initialise() {
setupIframe();
- sendAppNameToIframe();
setupIframeMessaging();
//loadFirebug(false);
attachErrorListener();
}
- var contextMenuIframe = "__cordovaappharness_contextMenu_iframe";
function setupIframe(){
var contextHTMLUrl = "app-harness:///cdvahcm/contextMenu.html";
var el = document.createElement("iframe");
- el.setAttribute("id", contextMenuIframe);
- el.setAttribute("src", contextHTMLUrl);
- el.setAttribute("style", "position: fixed; left : 0px; top : 0px; z-index: 2000; width: 100%; height: 100%; display : none;");
+ contextMenuIframeEl = el;
+ el.src = contextHTMLUrl;
+ el.style.cssText = 'position: fixed; left: 0; top: 0; z-index: 2000; width: 100%; height: 100%; border: none; display:none';
+ el.onload = function() {
+ el.contentWindow.postMessage("AppHarnessAppName:" + __cordovaAppHarnessData['appName'], "*");
+ };
document.body.appendChild(el);
// Setup the listeners to toggle the context menu
document.addEventListener("touchmove", function (event) {
- if(event.touches.length >= 3) {
- document.getElementById(contextMenuIframe).style.display = "inline";
+ if (event.touches.length >= 3) {
+ el.style.display = '';
}
}, false);
}
- function sendAppNameToIframe(){
- if(window.__cordovaAppHarnessAppName){
- var el = document.getElementById(contextMenuIframe);
- el.onload = function(){
- el.contentWindow.postMessage("AppHarnessAppName:" + window.__cordovaAppHarnessAppName, "*");
- };
- }
- }
-
function onContextMenuUpdateClicked(){
- window.location = "app-harness:///cdvah/index.html#/?updateLastLaunched=true";
+ window.location = "app-harness:///cdvah/index.html#/?action=update&appIndex=" + __cordovaAppHarnessData['appIndex'];
}
function onContextMenuRestartClicked(){
- window.location = "app-harness:///cdvah/index.html#/?lastLaunched=true";
+ window.location = "app-harness:///cdvah/index.html#/?action=restart&appIndex=" + __cordovaAppHarnessData['appIndex'];
}
var firebugFirstOpen = true;
function onContextMenuFirebugClicked(){
@@ -67,7 +60,7 @@
window.location = "app-harness:///cdvah/index.html";
}
function onContextMenuHideClicked(){
- document.getElementById(contextMenuIframe).style.display = "none";
+ contextMenuIframeEl.style.display = "none";
}
function onContextMenuWeinreNameChanged(newName){
var el = document.createElement("script");