1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// found in the LICENSE file. 4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/** 6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @fileoverview Utilities for working with platforms. 7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */ 8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)goog.provide('cvox.PlatformFilter'); 11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)goog.provide('cvox.PlatformUtil'); 12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)goog.require('cvox.ChromeVox'); 14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/** 16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @enum 17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */ 18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)cvox.PlatformFilter = { 19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) NONE: 0, 20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) WINDOWS: 1, 21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) MAC: 2, 22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) LINUX: 4, 23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) WML: 7, 24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) CHROMEOS: 8, 25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) ANDROID: 16 26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}; 27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/** 30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *Checks whether the given filter matches the current platform. An undefined 31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * filter always matches the current platform. 32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @param {undefined|cvox.PlatformFilter|number} filter The filter. 33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @return {boolean} Whether the filter matches the current platform. 34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */ 35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)cvox.PlatformUtil.matchesPlatform = function(filter) { 36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) var uA = navigator.userAgent; 37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) if (filter == undefined) { 38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return true; 39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } else if (uA.indexOf('Android') != -1) { 40cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return (filter & cvox.PlatformFilter.ANDROID) != 0; 41cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } else if (uA.indexOf('Win') != -1) { 42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return (filter & cvox.PlatformFilter.WINDOWS) != 0; 43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } else if (uA.indexOf('Mac') != -1) { 44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return (filter & cvox.PlatformFilter.MAC) != 0; 45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } else if (uA.indexOf('Linux') != -1) { 46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return (filter & cvox.PlatformFilter.LINUX) != 0; 47cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } else if (uA.indexOf('CrOS') != -1) { 48cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return (filter & cvox.PlatformFilter.CHROMEOS) != 0; 49cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 50cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return false; 51cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}; 52