| /* Copyright (c) 2014 The Chromium Authors. All rights reserved. |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. */ |
| |
| var ariaDescribedAt = ''; |
| var longDesc = ''; |
| |
| /** |
| * This is called when the extension is first loaded, so that it can be |
| * immediately used in all already-open tabs. It's not needed for any |
| * new tabs that open after that, the content script will be automatically |
| * injected into any new tab. |
| */ |
| chrome.windows.getAll({'populate': true}, function(windows) { |
| for (var i = 0; i < windows.length; i++) { |
| var tabs = windows[i].tabs; |
| for (var j = 0; j < tabs.length; j++) { |
| chrome.tabs.executeScript( |
| tabs[j].id, |
| {file: 'lastRightClick.js'}); |
| } |
| } |
| }); |
| |
| /** |
| * Add context menu item when the extension is installed. |
| */ |
| chrome.contextMenus.create({ |
| "title": chrome.i18n.getMessage('openLongDescription'), |
| "contexts": ["all"], |
| "id": "moreInfo", |
| "onclick": contextMenuClicked, |
| "enabled": false |
| }); |
| |
| /** |
| * Add listener for messages from content script. |
| * Enable/disable the context menu item. |
| */ |
| chrome.runtime.onMessage.addListener( |
| function (request, sender, sendResponse) { |
| if (request.enabled) { |
| ariaDescribedAt = request.ariaDescribedAt; |
| longDesc = request.longDesc; |
| } |
| chrome.contextMenus.update('moreInfo', { |
| "enabled": request.enabled |
| }); |
| }); |
| |
| /** |
| * Event handler for when a context menu item is clicked. |
| * aria-describedat is given a higher priority. |
| * No need to strip the URL of leading/trailing white space |
| * because Chrome takes care of this. |
| * |
| * @param info |
| * @param tab |
| */ |
| function contextMenuClicked(info, tab) { |
| if (ariaDescribedAt !== '') { |
| chrome.tabs.create({url: ariaDescribedAt}); |
| } else if (longDesc !== '') { |
| chrome.tabs.create({url: longDesc}); |
| } |
| } |