Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(93)

Side by Side Diff: remoting/webapp/base/js/platform.js

Issue 1154023007: [Chromoting] Fix os detection logic in logs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 'use strict'; 5 'use strict';
6 6
7 /** @suppress {duplicate} */ 7 /** @suppress {duplicate} */
8 var remoting = remoting || {}; 8 var remoting = remoting || {};
9 9
10 /** @enum {string} */
11 remoting.Os = {
12 WINDOWS: 'Windows',
13 LINUX: 'Linux',
14 MAC: 'Mac',
15 CHROMEOS: 'ChromeOS',
16 UNKNOWN: 'Unknown'
17 };
18
19 /**
20 * @typedef {{
21 * os_name: remoting.Os,
22 * os_version: string,
23 * cpu: string,
24 * chrome_version: string
Jamie 2015/06/06 01:05:41 I realize this is mostly copy/paste, but you might
kelvinp 2015/06/06 02:09:54 Done.
25 * }}
26 */
27 remoting.SystemInfo;
28
29 (function() {
30
10 /** 31 /**
11 * Returns full Chrome version. 32 * Returns full Chrome version.
12 * @return {string?} 33 * @return {string?}
13 */ 34 */
14 remoting.getChromeVersion = function() { 35 remoting.getChromeVersion = function() {
15 var match = new RegExp('Chrome/([0-9.]*)').exec(navigator.userAgent); 36 return remoting.getSystemInfo().chrome_version;
16 if (match && (match.length >= 2)) {
17 return match[1];
18 }
19 return null;
20 }; 37 };
21 38
22 /** 39 /**
23 * Returns Chrome major version.
24 * @return {number}
25 */
26 remoting.getChromeMajorVersion = function() {
27 var match = new RegExp('Chrome/([0-9]+)\.').exec(navigator.userAgent);
28 if (match && (match.length >= 2)) {
29 return parseInt(match[1], 10);
30 }
31 return 0;
32 };
33
34 /**
35 * Tests whether we are running on Mac. 40 * Tests whether we are running on Mac.
36 * 41 *
37 * @return {boolean} True if the platform is Mac. 42 * @return {boolean} True if the platform is Mac.
38 */ 43 */
39 remoting.platformIsMac = function() { 44 remoting.platformIsMac = function() {
40 return navigator.platform.indexOf('Mac') != -1; 45 return remoting.getSystemInfo().os_name === remoting.Os.MAC;
41 } 46 };
42 47
43 /** 48 /**
44 * Tests whether we are running on Windows. 49 * Tests whether we are running on Windows.
45 * 50 *
46 * @return {boolean} True if the platform is Windows. 51 * @return {boolean} True if the platform is Windows.
47 */ 52 */
48 remoting.platformIsWindows = function() { 53 remoting.platformIsWindows = function() {
49 return (navigator.platform.indexOf('Win32') != -1) || 54 return remoting.getSystemInfo().os_name === remoting.Os.WINDOWS;
50 (navigator.platform.indexOf('Win64') != -1); 55 };
51 }
52 56
53 /** 57 /**
54 * Tests whether we are running on Linux. 58 * Tests whether we are running on Linux.
55 * 59 *
56 * @return {boolean} True if the platform is Linux. 60 * @return {boolean} True if the platform is Linux.
57 */ 61 */
58 remoting.platformIsLinux = function() { 62 remoting.platformIsLinux = function() {
59 return (navigator.platform.indexOf('Linux') != -1) && 63 return remoting.getSystemInfo().os_name === remoting.Os.LINUX;
60 !remoting.platformIsChromeOS(); 64 };
61 }
62 65
63 /** 66 /**
64 * Tests whether we are running on ChromeOS. 67 * Tests whether we are running on ChromeOS.
65 * 68 *
66 * @return {boolean} True if the platform is ChromeOS. 69 * @return {boolean} True if the platform is ChromeOS.
67 */ 70 */
68 remoting.platformIsChromeOS = function() { 71 remoting.platformIsChromeOS = function() {
69 return navigator.userAgent.match(/\bCrOS\b/) != null; 72 return remoting.getSystemInfo().os_name === remoting.Os.CHROMEOS;
70 } 73 };
74
75 /**
76 * @return {?remoting.SystemInfo}
77 */
78 remoting.getSystemInfo = function() {
kelvinp 2015/06/06 00:48:47 mainly copied from remoting.ServerLogEntry.extract
79 var userAgent = remoting.getUserAgent();
80
81 /** @type {remoting.SystemInfo} */
82 var result = {
83 chrome_version: '',
84 os_name: remoting.Os.UNKNOWN,
85 os_version: '',
86 cpu: ''
87 };
88
89 // See platform_unittest.js for sample user agent strings.
90 var chromeVersion = new RegExp('Chrome/([0-9.]*)').exec(userAgent);
91 if (chromeVersion && chromeVersion.length >= 2) {
92 result.chrome_version = chromeVersion[1];
93 }
94
95 var match = new RegExp('Windows NT ([0-9\\.]*)').exec(userAgent);
96 if (match && (match.length >= 2)) {
97 result.os_name = remoting.Os.WINDOWS;
98 result.os_version = match[1];
99 return result;
100 }
101
102 match = new RegExp('Linux ([a-zA-Z0-9_]*)').exec(userAgent);
103 if (match && (match.length >= 2)) {
104 result.os_name = remoting.Os.LINUX;
105 result.os_version = '';
106 result.cpu = match[1];
107 return result;
108 }
109
110 match = new RegExp('([a-zA-Z]*) Mac OS X ([0-9_]*)').exec(userAgent);
111 if (match && (match.length >= 3)) {
112 result.os_name = remoting.Os.MAC;
113 result.os_version = match[2].replace(/_/g, '.');
114 result.cpu = match[1];
115 return result;
116 }
117
118 match = new RegExp('CrOS ([a-zA-Z0-9_]*) ([0-9.]*)').exec(userAgent);
119 if (match && (match.length >= 3)) {
120 result.os_name = remoting.Os.CHROMEOS;
121 result.os_version = match[2];
122 result.cpu = match[1];
123 return result;
124 }
125 return null;
126 };
127
128 /**
129 * To be overwritten by unit test.
130 *
131 * @return {!string}
132 */
133 remoting.getUserAgent = function() {
134 return navigator.userAgent;
135 };
136
137 })();
138
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698