11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright (c) 2014 The Chromium Authors. All rights reserved.
21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be
31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file.
41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivar DEFAULT_SCHEME = 3;
61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivar MAX_SCHEME = 5;
71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifunction $(id) {
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return document.getElementById(id);
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifunction getEnabled() {
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  var result = localStorage['enabled'];
141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  if (result === 'true' || result === 'false') {
151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    return (result === 'true');
161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  }
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  localStorage['enabled'] = 'true';
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return true;
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifunction setEnabled(enabled) {
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  localStorage['enabled'] = enabled;
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifunction getKeyAction() {
261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  var keyAction = localStorage['keyaction'];
271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  if (keyAction == 'global' || keyAction == 'site') {
281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    return keyAction;
291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  }
301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  keyAction = 'global';
311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  localStorage['keyaction'] = keyAction;
321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return keyAction;
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifunction setKeyAction(keyAction) {
361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  if (keyAction != 'global' && keyAction != 'site') {
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    keyAction = 'global';
381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  }
391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  localStorage['keyaction'] = keyAction;
401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifunction getDefaultScheme() {
431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  var scheme = localStorage['scheme'];
441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  if (scheme >= 0 && scheme <= MAX_SCHEME) {
451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    return scheme;
461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  }
471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  scheme = DEFAULT_SCHEME;
481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  localStorage['scheme'] = scheme;
491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return scheme;
501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifunction setDefaultScheme(scheme) {
531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  if (!(scheme >= 0 && scheme <= MAX_SCHEME)) {
541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    scheme = DEFAULT_SCHEME;
551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  }
561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  localStorage['scheme'] = scheme;
571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifunction getSiteScheme(site) {
601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  var scheme = getDefaultScheme();
611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  try {
621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    var siteSchemes = JSON.parse(localStorage['siteschemes']);
631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    scheme = siteSchemes[site];
641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    if (!(scheme >= 0 && scheme <= MAX_SCHEME)) {
651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      scheme = getDefaultScheme();
661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    }
671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  } catch (e) {
681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    scheme = getDefaultScheme();
691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  }
701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return scheme;
711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifunction setSiteScheme(site, scheme) {
741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  if (!(scheme >= 0 && scheme <= MAX_SCHEME)) {
751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    scheme = getDefaultScheme();
761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  }
771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  var siteSchemes = {};
781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  try {
791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    siteSchemes = JSON.parse(localStorage['siteschemes']);
801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    siteSchemes['www.example.com'] = getDefaultScheme();
811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  } catch (e) {
821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    siteSchemes = {};
831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  }
841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  siteSchemes[site] = scheme;
851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  localStorage['siteschemes'] = JSON.stringify(siteSchemes);
861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifunction resetSiteSchemes() {
891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  var siteSchemes = {};
901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  localStorage['siteschemes'] = JSON.stringify(siteSchemes);
911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifunction siteFromUrl(url) {
941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  var a = document.createElement('a');
951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  a.href = url;
961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return a.hostname;
971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifunction isDisallowedUrl(url) {
1001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return url.indexOf('chrome') == 0 || url.indexOf('about') == 0;
1011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
102