1/* 2 * Copyright (C) 2009 Google Inc. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions are 6 * met: 7 * 8 * * Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * * Redistributions in binary form must reproduce the above 11 * copyright notice, this list of conditions and the following disclaimer 12 * in the documentation and/or other materials provided with the 13 * distribution. 14 * * Neither the name of Google Inc. nor the names of its 15 * contributors may be used to endorse or promote products derived from 16 * this software without specific prior written permission. 17 * 18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 */ 30 31 32var Preferences = { 33 maxInlineTextChildLength: 80, 34 minConsoleHeight: 75, 35 minSidebarWidth: 100, 36 minElementsSidebarWidth: 200, 37 minScriptsSidebarWidth: 200, 38 styleRulesExpandedState: {}, 39 showMissingLocalizedStrings: false, 40 samplingCPUProfiler: false, 41 showColorNicknames: true 42} 43 44WebInspector.populateFrontendSettings = function(settingsString) 45{ 46 WebInspector.settings._load(settingsString); 47} 48 49WebInspector.Settings = function() 50{ 51} 52 53WebInspector.Settings.prototype = { 54 _load: function(settingsString) 55 { 56 try { 57 this._store = JSON.parse(settingsString); 58 } catch (e) { 59 // May fail; 60 this._store = {}; 61 } 62 63 this._installSetting("eventListenersFilter", "event-listeners-filter", "all"); 64 this._installSetting("colorFormat", "color-format", "hex"); 65 this._installSetting("resourcesLargeRows", "resources-large-rows", true); 66 this._installSetting("watchExpressions", "watch-expressions", []); 67 this._installSetting("lastViewedScriptFile", "last-viewed-script-file"); 68 this._installSetting("showInheritedComputedStyleProperties", "show-inherited-computed-style-properties", false); 69 this._installSetting("showUserAgentStyles", "show-user-agent-styles", true); 70 this._installSetting("resourceViewTab", "resource-view-tab", "content"); 71 this.dispatchEventToListeners("loaded"); 72 }, 73 74 _installSetting: function(name, propertyName, defaultValue) 75 { 76 this.__defineGetter__(name, this._get.bind(this, propertyName)); 77 this.__defineSetter__(name, this._set.bind(this, propertyName)); 78 if (!(propertyName in this._store)) { 79 this._store[propertyName] = defaultValue; 80 } 81 }, 82 83 _get: function(propertyName) 84 { 85 return this._store[propertyName]; 86 }, 87 88 _set: function(propertyName, newValue) 89 { 90 this._store[propertyName] = newValue; 91 try { 92 InspectorBackend.saveFrontendSettings(JSON.stringify(this._store)); 93 } catch (e) { 94 // May fail; 95 } 96 } 97} 98 99WebInspector.Settings.prototype.__proto__ = WebInspector.Object.prototype; 100