| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 /** @type {remoting.HostSession} */ remoting.hostSession = null; | 10 /** @type {remoting.HostSession} */ remoting.hostSession = null; |
| (...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 417 var result = {}; | 417 var result = {}; |
| 418 var parts = window.location.search.substring(1).split('&'); | 418 var parts = window.location.search.substring(1).split('&'); |
| 419 for (var i = 0; i < parts.length; i++) { | 419 for (var i = 0; i < parts.length; i++) { |
| 420 var pair = parts[i].split('='); | 420 var pair = parts[i].split('='); |
| 421 result[pair[0]] = decodeURIComponent(pair[1]); | 421 result[pair[0]] = decodeURIComponent(pair[1]); |
| 422 } | 422 } |
| 423 return result; | 423 return result; |
| 424 } | 424 } |
| 425 | 425 |
| 426 /** | 426 /** |
| 427 * @param {string} jsonString A JSON-encoded string. | |
| 428 * @return {*} The decoded object, or undefined if the string cannot be parsed. | |
| 429 */ | |
| 430 function jsonParseSafe(jsonString) { | |
| 431 try { | |
| 432 return JSON.parse(jsonString); | |
| 433 } catch (err) { | |
| 434 return undefined; | |
| 435 } | |
| 436 } | |
| 437 | |
| 438 /** | |
| 439 * Return the current time as a formatted string suitable for logging. | 427 * Return the current time as a formatted string suitable for logging. |
| 440 * | 428 * |
| 441 * @return {string} The current time, formatted as [mmdd/hhmmss.xyz] | 429 * @return {string} The current time, formatted as [mmdd/hhmmss.xyz] |
| 442 */ | 430 */ |
| 443 remoting.timestamp = function() { | 431 remoting.timestamp = function() { |
| 444 /** | 432 /** |
| 445 * @param {number} num A number. | 433 * @param {number} num A number. |
| 446 * @param {number} len The required length of the answer. | 434 * @param {number} len The required length of the answer. |
| 447 * @return {string} The number, formatted as a string of the specified length | 435 * @return {string} The number, formatted as a string of the specified length |
| 448 * by prepending zeroes as necessary. | 436 * by prepending zeroes as necessary. |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 521 if (oauthSettings.indexOf(setting) == -1) { | 509 if (oauthSettings.indexOf(setting) == -1) { |
| 522 var copy = {} | 510 var copy = {} |
| 523 copy[setting] = window.localStorage.getItem(setting); | 511 copy[setting] = window.localStorage.getItem(setting); |
| 524 chrome.storage.local.set(copy); | 512 chrome.storage.local.set(copy); |
| 525 window.localStorage.removeItem(setting); | 513 window.localStorage.removeItem(setting); |
| 526 } | 514 } |
| 527 } | 515 } |
| 528 } | 516 } |
| 529 | 517 |
| 530 /** | 518 /** |
| 531 * Generate a nonce, to be used as an xsrf protection token. | |
| 532 * | |
| 533 * @return {string} A URL-Safe Base64-encoded 128-bit random value. */ | |
| 534 remoting.generateXsrfToken = function() { | |
| 535 var random = new Uint8Array(16); | |
| 536 window.crypto.getRandomValues(random); | |
| 537 var base64Token = window.btoa(String.fromCharCode.apply(null, random)); | |
| 538 return base64Token.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, ''); | |
| 539 }; | |
| 540 | |
| 541 /** | |
| 542 * Tests whether we are running on Mac. | 519 * Tests whether we are running on Mac. |
| 543 * | 520 * |
| 544 * @return {boolean} True if the platform is Mac. | 521 * @return {boolean} True if the platform is Mac. |
| 545 */ | 522 */ |
| 546 remoting.platformIsMac = function() { | 523 remoting.platformIsMac = function() { |
| 547 return navigator.platform.indexOf('Mac') != -1; | 524 return navigator.platform.indexOf('Mac') != -1; |
| 548 } | 525 } |
| 549 | 526 |
| 550 /** | 527 /** |
| 551 * Tests whether we are running on Windows. | 528 * Tests whether we are running on Windows. |
| (...skipping 16 matching lines...) Expand all Loading... |
| 568 } | 545 } |
| 569 | 546 |
| 570 /** | 547 /** |
| 571 * Tests whether we are running on ChromeOS. | 548 * Tests whether we are running on ChromeOS. |
| 572 * | 549 * |
| 573 * @return {boolean} True if the platform is ChromeOS. | 550 * @return {boolean} True if the platform is ChromeOS. |
| 574 */ | 551 */ |
| 575 remoting.platformIsChromeOS = function() { | 552 remoting.platformIsChromeOS = function() { |
| 576 return navigator.userAgent.match(/\bCrOS\b/) != null; | 553 return navigator.userAgent.match(/\bCrOS\b/) != null; |
| 577 } | 554 } |
| OLD | NEW |