1 /* 2 * Copyright (C) 2014 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 6 * are met: 7 * 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of 14 * its contributors may be used to endorse or promote products derived 15 * from this software without specific prior written permission. 16 * 17 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 18 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 20 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 21 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 22 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 24 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29 /** 30 * @return {string} 31 */ 32 WebInspector.platform = function() 33 { 34 if (!WebInspector._platform) 35 WebInspector._platform = InspectorFrontendHost.platform(); 36 return WebInspector._platform; 37 } 38 39 /** 40 * @return {boolean} 41 */ 42 WebInspector.isMac = function() 43 { 44 if (typeof WebInspector._isMac === "undefined") 45 WebInspector._isMac = WebInspector.platform() === "mac"; 46 47 return WebInspector._isMac; 48 } 49 50 /** 51 * @return {boolean} 52 */ 53 WebInspector.isWin = function() 54 { 55 if (typeof WebInspector._isWin === "undefined") 56 WebInspector._isWin = WebInspector.platform() === "windows"; 57 58 return WebInspector._isWin; 59 } 60 61 WebInspector.PlatformFlavor = { 62 WindowsVista: "windows-vista", 63 MacTiger: "mac-tiger", 64 MacLeopard: "mac-leopard", 65 MacSnowLeopard: "mac-snowleopard", 66 MacLion: "mac-lion" 67 } 68 69 /** 70 * @return {string} 71 */ 72 WebInspector.platformFlavor = function() 73 { 74 function detectFlavor() 75 { 76 const userAgent = navigator.userAgent; 77 78 if (WebInspector.platform() === "windows") { 79 var match = userAgent.match(/Windows NT (\d+)\.(?:\d+)/); 80 if (match && match[1] >= 6) 81 return WebInspector.PlatformFlavor.WindowsVista; 82 return null; 83 } else if (WebInspector.platform() === "mac") { 84 var match = userAgent.match(/Mac OS X\s*(?:(\d+)_(\d+))?/); 85 if (!match || match[1] != 10) 86 return WebInspector.PlatformFlavor.MacSnowLeopard; 87 switch (Number(match[2])) { 88 case 4: 89 return WebInspector.PlatformFlavor.MacTiger; 90 case 5: 91 return WebInspector.PlatformFlavor.MacLeopard; 92 case 6: 93 return WebInspector.PlatformFlavor.MacSnowLeopard; 94 case 7: 95 return WebInspector.PlatformFlavor.MacLion; 96 case 8: // Matches the default version 97 case 9: // Matches the default version 98 default: 99 return ""; 100 } 101 } 102 } 103 104 if (!WebInspector._platformFlavor) 105 WebInspector._platformFlavor = detectFlavor(); 106 107 return WebInspector._platformFlavor; 108 } 109 110 /** 111 * @return {string} 112 */ 113 WebInspector.port = function() 114 { 115 if (!WebInspector._port) 116 WebInspector._port = InspectorFrontendHost.port(); 117 118 return WebInspector._port; 119 } 120 121 /** 122 * @return {string} 123 */ 124 WebInspector.fontFamily = function() 125 { 126 if (WebInspector._fontFamily) 127 return WebInspector._fontFamily; 128 switch (WebInspector.platform()) { 129 case "linux": 130 WebInspector._fontFamily = "Ubuntu, Arial, sans-serif"; 131 break; 132 case "mac": 133 WebInspector._fontFamily = "'Lucida Grande', sans-serif"; 134 break; 135 case "windows": 136 WebInspector._fontFamily = "'Segoe UI', Tahoma, sans-serif"; 137 break; 138 } 139 return WebInspector._fontFamily; 140 } 141 142 /** 143 * @return {string} 144 */ 145 WebInspector.monospaceFontFamily = function() 146 { 147 if (WebInspector._monospaceFontFamily) 148 return WebInspector._monospaceFontFamily; 149 switch (WebInspector.platform()) { 150 case "linux": 151 WebInspector._monospaceFontFamily = "dejavu sans mono, monospace"; 152 break; 153 case "mac": 154 WebInspector._monospaceFontFamily = "Menlo, monospace"; 155 break; 156 case "windows": 157 WebInspector._monospaceFontFamily = "Consolas, monospace"; 158 break; 159 } 160 return WebInspector._monospaceFontFamily; 161 } 162 163 /** 164 * @return {boolean} 165 */ 166 WebInspector.isWorkerFrontend = function() 167 { 168 return !!Runtime.queryParam("dedicatedWorkerId") || !!Runtime.queryParam("isSharedWorker"); 169 } 170