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