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