Home | History | Annotate | Download | only in front-end
      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 
     32 var 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 
     44 WebInspector.populateFrontendSettings = function(settingsString)
     45 {
     46     WebInspector.settings._load(settingsString);
     47 }
     48 
     49 WebInspector.Settings = function()
     50 {
     51 }
     52 
     53 WebInspector.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 
     99 WebInspector.Settings.prototype.__proto__ = WebInspector.Object.prototype;
    100