FILE: C:\Windows\SystemApps\Microsoft.Windows.CloudExperienceHost_cw5n1h2txyewy\js\default.js
--
//
// Copyright (C) Microsoft. All rights reserved.
//
/// JS2055.DoNotReferenceBannedTerms
(function () {
"use strict";
var app = WinJS.Application;
var activation = Windows.ApplicationModel.Activation;
var appManager = null;
let canShowUI = false;
let isFirstActivation = true;
navigator.gamepadInputEmulation = "keyboard"; // The gamepad input should produce XYFocus style keyboard events.
app.onactivated = function (args) {
CloudExperienceHost.Telemetry.AppTelemetry.getInstance().logEvent("AppActivated", JSON.stringify({ 'Kind': args.detail.kind, 'PreviousExecutionState': args.detail.previousExecutionState }));
let thisPlatform = CloudExperienceHost.Environment.getPlatform();
function completeOnActivated(args) {
// In order to guard against dependencies taken on non-release MUA Test version of CXH, fast-fail
// unless on certain nonshippping(yet) Windows Core products which need internal selfhosting consistency for rsmaster/L3s
// or the dev-unlock Velocity feature is being used.
let familyName = Windows.ApplicationModel.Package.current.id.familyName;
if (familyName.indexOf('MultiUser') != -1) {
let allowedByPlatform = ((thisPlatform === CloudExperienceHost.TargetPlatform.WINDOWS8828080) || (thisPlatform === CloudExperienceHost.TargetPlatform.WINDOWSCORE) || (thisPlatform === CloudExperienceHost.TargetPlatform.SURFACEHUB));
let allowedByVelocityOverride = CloudExperienceHostAPI.FeatureStaging.isOobeFeatureEnabled("TestMultiUserCxhFastFailExempt");
if (!(allowedByPlatform || allowedByVelocityOverride)) {
throw new Error(CloudExperienceHost.ErrorNames.ActivationNotSupported);
}
}
if (args.detail.kind === activation.ActivationKind.webAccountProvider ||
args.detail.kind === activation.ActivationKind.componentUI) {
appManager = new CloudExperienceHost.MSATokenProviderManager();
} else {
appManager = new CloudExperienceHost.AppManager();
let argsWithUser = args.detail;
if (argsWithUser) {
CloudExperienceHost.IUserManager.getInstance().setIUser(argsWithUser.user);
}
}
require.config(new RequirePathConfig('/core'));
// Please note that the optional sample file included in the requireAsync below is for F5 purpose only and hence included in the jsproj and not the other manifests.
// In production cxh the 'optional' plugin will handle the failure to load the module and AppObjectFactory will route the api calls to the actual default winrt apis.
// In F5 environment AppObjectFactory replaces the default implementations with custom modules defined in the Samples.
args.setPromise(requireAsync(['lib/knockout', 'knockouthelpers', 'default-vm', 'legacy/appViewManager', 'legacy/navigationManager', 'lib/knockout-winjs', 'optional!sample/SampleImplementationCollection']).then((result) => {
let ko = result.lib_knockout;
let KnockoutHelpers = result.knockouthelpers;
let DefaultViewModel = result.default_vm;
let appViewManager = result.legacy_appViewManager;
let navManager = result.legacy_navigationManager;
return appManager.initialize(args).then(function () {
appViewManager.loadCss();
let knockoutHelpers = new KnockoutHelpers();
if (isFirstActivation) {
knockoutHelpers.registerFrameComponents();
}
let rootElement = document.getElementById("_defaultRoot");
let isBound = ko.dataFor(rootElement);
if (isBound) {
ko.cleanNode(rootElement);
}
let navMesh = appManager.getDiscoveryNavMesh();
let frameName = "default-frame";
if (navMesh) {
let meshFrameName = appManager.getDiscoveryNavMesh().getFrameName(); // "default-frame", "oobe-frame" or "sspr-frame"
if (meshFrameName) {
frameName = meshFrameName;
}
}
appManager.setAppViewManager(appViewManager);
appManager.setNavManager(navManager);
ko.applyBindings(new DefaultViewModel(frameName), rootElement);
return KnockoutHelpers.waitForInitialComponentLoadAsync();
}).then(() => {
return WinJS.UI.processAll();
}).then(function () {
canShowUI = true;
let previousExecutionState = args.detail.previousExecutionState;
switch (args.detail.previousExecutionState) {
case activation.ApplicationExecutionState.notRunning: /* The app is not running */
case activation.ApplicationExecutionState.closedByUser: /* The app was closed by the user */
appManager.start(args);
break;
case activation.ApplicationExecutionState.suspended: /* The app is suspended */
break;
case activation.ApplicationExecutionState.terminated: /* The app was terminated after being suspended */
appManager.resume(args);
break;
case activation.ApplicationExecutionState.running: /* The app is running */
// The previous running enviroment get lost and switch to new one.
appManager.start(args);
break;
default:
throw new Error(CloudExperienceHost.ErrorNames.ActivationNotSupported);
break;
}
isFirstActivation = false;
});
}));
}
if (thisPlatform === CloudExperienceHost.TargetPlatform.HOLOGRAPHIC) {
let op = MSApp.clearTemporaryWebDataAsync();
op.oncomplete = function () {
completeOnActivated(args);
};
op.start();
} else {
completeOnActivated(args);
}
};
app.oncheckpoint = function (args) {
// AppTelemetry events are sampled under the MEASURE policy yet, we require this code path to be always detected.
// Thus the creation of AppCheckpoint event, sampled under CRITICAL.
// We still fire the AppTelemetry event to ensure system event logs are produced.
CloudExperienceHost.Telemetry.AppTelemetry.getInstance().logEvent("AppCheckpoint");
CloudExperienceHost.Telemetry.AppTelemetry.getInstance().appCheckpoint();
if (appManager) {
appManager.checkpoint(args);
}
else {
CloudExperienceHost.Telemetry.AppTelemetry.getInstance().logEvent("AppCheckpoint but appManager is not ready", uri);
}
};
app.onloaded = function () {
// Process all resources
WinJS.Resources.processAll();
}
app.onerror = function (e) {
if (canShowUI == false) {
var data = e.detail;
var logData = new Object;
logData["errorCode"] = data && (data.number || (data.exception && (data.exception.number || data.exception.code)) || (data.error && data.error.number) || data.errorCode || 0);
logData["message"] = data && (data.message || data.errorMessage || (data.error && data.error.message) || (data.exception && data.exception.message) || null);
logData["stack"] = data && (data.stack || (data.exception && (data.exception.stack || data.exception.message)) || (data.error && data.error.stack) || null);
CloudExperienceHost.Telemetry.AppTelemetry.getInstance().logEvent("UnhandledException", JSON.stringify(logData));
return null;
}
return appManager ? appManager.onUnhandledException(e) : null;
}
app.restart = function (uri) {
CloudExperienceHost.Telemetry.AppTelemetry.getInstance().logEvent("AppRestart", uri);
if (appManager) {
appManager.restart(uri);
}
else {
CloudExperienceHost.Telemetry.AppTelemetry.getInstance().logEvent("AppRestart but appManager is not ready", uri);
}
};
app.start();
})();
--