Home | History | Annotate | Download | only in longdesc
      1 /* Copyright (c) 2014 The Chromium Authors. All rights reserved.
      2  * Use of this source code is governed by a BSD-style license that can be
      3  * found in the LICENSE file. */
      4 
      5 var borderColor;
      6 var borderStyle;
      7 var borderWidth;
      8 
      9 chrome.storage.onChanged.addListener(function(changes, namespace) {
     10   if (changes.addBorder.newValue) {
     11     addBorders();
     12   } else {
     13     removeBorders();
     14   }
     15 });
     16 
     17 chrome.storage.sync.get("addBorder", function(item) {
     18   if (item.addBorder) {
     19     addBorders();
     20   }
     21 });
     22 
     23 document.addEventListener('contextmenu', function(element) {
     24   updateContextMenuItem(element);
     25 }, false);
     26 
     27 document.addEventListener('mouseover', function(element) {
     28   updateContextMenuItem(element);
     29 }, false);
     30 
     31 document.addEventListener('focus', function(element) {
     32   updateContextMenuItem(element);
     33 });
     34 
     35 /**
     36  * Sends a message to the backgrond script notifying it to
     37  * enable or disable the context menu item.
     38  *
     39  * @param element
     40  */
     41 function updateContextMenuItem(element) {
     42   var longDesc = '';
     43   var ariaDescribedAt = '';
     44 
     45   if (element.target.hasAttribute("longdesc")) {
     46     longDesc = element.target.getAttribute("longdesc");
     47   }
     48 
     49   if (element.target.hasAttribute("aria-describedat")) {
     50     ariaDescribedAt = element.target.getAttribute("aria-describedat");
     51   }
     52 
     53   if (longDesc !== '' || ariaDescribedAt !== '') {
     54     chrome.runtime.sendMessage({
     55       ariaDescribedAt: ariaDescribedAt,
     56       longDesc: longDesc,
     57       enabled: true
     58     });
     59   } else {
     60     chrome.runtime.sendMessage({
     61       enabled: false
     62     });
     63   }
     64 }
     65 
     66 /**
     67  * Modify border to make the HTML element more visible.
     68  */
     69 function addBorders() {
     70   var elementArray = new Array(document.querySelectorAll('[longdesc]'));
     71   elementArray.concat(new Array(document.querySelectorAll('[aria-describedat]')));
     72 
     73   for (var i = 0; i < elementArray.length; i++) {
     74     borderColor = elementArray[0][i].style.borderColor;
     75     borderStyle = elementArray[0][i].style.borderStyle;
     76     borderWidth = elementArray[0][i].style.borderWidth;
     77 
     78     elementArray[0][i].style.borderColor = 'blue';
     79     elementArray[0][i].style.borderStyle = 'groove';
     80     elementArray[0][i].style.borderWidth = '15px';
     81   }
     82 }
     83 
     84 /**
     85  * Revert back to the original border styling.
     86  */
     87 function removeBorders() {
     88   var elementArray = new Array(document.querySelectorAll('[longdesc]'));
     89   elementArray.concat(new Array(document.querySelectorAll('[aria-describedat]')));
     90 
     91   for (var i = 0; i < elementArray.length; i++) {
     92     elementArray[0][i].style.borderColor = borderColor;
     93     elementArray[0][i].style.borderStyle = borderStyle;
     94     elementArray[0][i].style.borderWidth = borderWidth;
     95   }
     96 }
     97