1
0
mirror of https://github.com/adobe/brackets.git synced 2024-11-20 09:53:00 +01:00
brackets/test/TestPreferencesImpl.js

115 lines
4.6 KiB
JavaScript

/*
* Copyright (c) 2014 - present Adobe Systems Incorporated. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
*/
/**
* Generates the fully configured preferences systems used IN TESTING. This configuration does
* not manipulate the user's preferences.
*/
define(function (require, exports, module) {
"use strict";
var PreferencesBase = require("./PreferencesBase"),
// The SETTINGS_FILENAME is used with a preceding "." within user projects
SETTINGS_FILENAME = "brackets.json",
STATE_FILENAME = "state.json",
// User-level preferences
userPrefFile = null;
/**
* A deferred object which is used to indicate PreferenceManager readiness during the start-up.
* @private
* @type {$.Deferred}
*/
var _prefManagerReadyDeferred = new $.Deferred();
/**
* A boolean property indicating if the user scope configuration file is malformed.
*/
var userScopeCorrupt = false;
function isUserScopeCorrupt() {
return userScopeCorrupt;
}
var manager = new PreferencesBase.PreferencesSystem();
manager.pauseChangeEvents();
// Create a Project scope
var projectStorage = new PreferencesBase.FileStorage(undefined, true),
projectScope = new PreferencesBase.Scope(projectStorage),
projectPathLayer = new PreferencesBase.PathLayer(),
projectLanguageLayer = new PreferencesBase.LanguageLayer();
projectScope.addLayer(projectPathLayer);
projectScope.addLayer(projectLanguageLayer);
var userScope = new PreferencesBase.Scope(new PreferencesBase.MemoryStorage()),
userPathLayer = new PreferencesBase.PathLayer(),
userLanguageLayer = new PreferencesBase.LanguageLayer();
userScope.addLayer(userPathLayer);
userScope.addLayer(userLanguageLayer);
var userScopeLoading = manager.addScope("user", userScope);
// Set up the .brackets.json file handling
manager.addScope("project", projectScope, {
before: "user"
});
// Session Scope is for storing prefs in memory only but with the highest precedence.
manager.addScope("session", new PreferencesBase.MemoryStorage());
// Memory storages take no time to initialize
_prefManagerReadyDeferred.resolve();
// "State" is stored like preferences but it is not generally intended to be user-editable.
// It's for more internal, implicit things like window size, working set, etc.
var stateManager = new PreferencesBase.PreferencesSystem();
var smUserScope = new PreferencesBase.Scope(new PreferencesBase.MemoryStorage());
var stateProjectLayer = new PreferencesBase.ProjectLayer();
smUserScope.addLayer(stateProjectLayer);
var smUserScopeLoading = stateManager.addScope("user", smUserScope);
function _reloadUserPrefs() {
return;
}
// Semi-Public API. Use this at your own risk. The public API is in PreferencesManager.
exports.manager = manager;
exports.projectStorage = projectStorage;
exports.projectPathLayer = projectPathLayer;
exports.userScopeLoading = userScopeLoading;
exports.stateManager = stateManager;
exports.stateProjectLayer = stateProjectLayer;
exports.smUserScopeLoading = smUserScopeLoading;
exports.userPrefFile = userPrefFile;
exports.isUserScopeCorrupt = isUserScopeCorrupt;
exports.managerReady = _prefManagerReadyDeferred.promise();
exports.reloadUserPrefs = _reloadUserPrefs;
exports.STATE_FILENAME = STATE_FILENAME;
exports.SETTINGS_FILENAME = SETTINGS_FILENAME;
});