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 ariaDescribedAt = '';
      6 var longDesc = '';
      7 
      8  /**
      9  * This is called when the extension is first loaded, so that it can be
     10  * immediately used in all already-open tabs. It's not needed for any
     11  * new tabs that open after that, the content script will be automatically
     12  * injected into any new tab.
     13  */
     14 chrome.windows.getAll({'populate': true}, function(windows) {
     15   for (var i = 0; i < windows.length; i++) {
     16     var tabs = windows[i].tabs;
     17     for (var j = 0; j < tabs.length; j++) {
     18       chrome.tabs.executeScript(
     19         tabs[j].id,
     20         {file: 'lastRightClick.js'});
     21     }
     22   }
     23 });
     24 
     25 /**
     26  * Add context menu item when the extension is installed.
     27  */
     28 chrome.contextMenus.create({
     29     "title": chrome.i18n.getMessage('openLongDescription'),
     30     "contexts": ["all"],
     31     "id": "moreInfo",
     32     "onclick": contextMenuClicked,
     33     "enabled": false
     34   });
     35 
     36 /**
     37  * Add listener for messages from content script.
     38  * Enable/disable the context menu item.
     39  */
     40 chrome.runtime.onMessage.addListener(
     41   function (request, sender, sendResponse) {
     42     if (request.enabled) {
     43       ariaDescribedAt = request.ariaDescribedAt;
     44       longDesc = request.longDesc;
     45     }
     46     chrome.contextMenus.update('moreInfo', {
     47       "enabled": request.enabled
     48     });
     49   });
     50 
     51 /**
     52  * Event handler for when a context menu item is clicked.
     53  * aria-describedat is given a higher priority.
     54  * No need to strip the URL of leading/trailing white space
     55  * because Chrome takes care of this.
     56  *
     57  * @param info
     58  * @param tab
     59  */
     60 function contextMenuClicked(info, tab) {
     61   if (ariaDescribedAt !== '') {
     62     chrome.tabs.create({url: ariaDescribedAt});
     63   } else if (longDesc !== '') {
     64     chrome.tabs.create({url: longDesc});
     65   }
     66 }
     67