From f27180aefbc90c3bb3847faf68e58b440768e713 Mon Sep 17 00:00:00 2001 From: Phil Crosby Date: Sun, 10 Jun 2012 23:52:43 -0700 Subject: port dom_utils.js to coffeescript --- content_scripts/link_hints.js | 16 ++++++++-------- content_scripts/vimium_frontend.js | 22 +++++++++++----------- 2 files changed, 19 insertions(+), 19 deletions(-) (limited to 'content_scripts') diff --git a/content_scripts/link_hints.js b/content_scripts/link_hints.js index 7d6b431f..8ca3675b 100644 --- a/content_scripts/link_hints.js +++ b/content_scripts/link_hints.js @@ -34,7 +34,7 @@ var linkHints = { * The final expression will be something like "//button | //xhtml:button | ..." * We use translate() instead of lower-case() because Chrome only supports XPath 1.0. */ - clickableElementsXPath: domUtils.makeXPath(["a", "area[@href]", "textarea", "button", "select", + clickableElementsXPath: DomUtils.makeXPath(["a", "area[@href]", "textarea", "button", "select", "input[not(@type='hidden' or @disabled or @readonly)]", "*[@onclick or @tabindex or @role='link' or @role='button' or contains(@class, 'button') or " + "@contenteditable='' or translate(@contenteditable, 'TRUE', 'true')='true']"]), @@ -72,7 +72,7 @@ var linkHints = { this.linkActivator = function(link) { // When "clicking" on a link, dispatch the event with the appropriate meta key (CMD on Mac, CTRL on windows) // to open it in a new tab if necessary. - domUtils.simulateClick(link, { metaKey: platform == "Mac", ctrlKey: platform != "Mac" }); + DomUtils.simulateClick(link, { metaKey: platform == "Mac", ctrlKey: platform != "Mac" }); } } else if (copyLinkUrl) { HUD.show("Copy link URL to Clipboard"); @@ -84,7 +84,7 @@ var linkHints = { // When we're opening the link in the current tab, don't navigate to the selected link immediately; // we want to give the user some time to notice which link has received focus. this.linkActivator = function(link) { - setTimeout(domUtils.simulateClick.bind(domUtils, link), 400); + setTimeout(DomUtils.simulateClick.bind(DomUtils, link), 400); } } }, @@ -120,14 +120,14 @@ var linkHints = { * of digits needed to enumerate all of the links on screen. */ getVisibleClickableElements: function() { - var resultSet = domUtils.evaluateXPath(this.clickableElementsXPath, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE); + var resultSet = DomUtils.evaluateXPath(this.clickableElementsXPath, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE); var visibleElements = []; // Find all visible clickable elements. for (var i = 0, count = resultSet.snapshotLength; i < count; i++) { var element = resultSet.snapshotItem(i); - var clientRect = domUtils.getVisibleClientRect(element, clientRect); + var clientRect = DomUtils.getVisibleClientRect(element, clientRect); if (clientRect !== null) visibleElements.push({element: element, rect: clientRect}); @@ -200,14 +200,14 @@ var linkHints = { activateLink: function(matchedLink, delay) { this.delayMode = true; var clickEl = matchedLink.clickableItem; - if (domUtils.isSelectable(clickEl)) { - domUtils.simulateSelect(clickEl); + if (DomUtils.isSelectable(clickEl)) { + DomUtils.simulateSelect(clickEl); this.deactivateMode(delay, function() { linkHints.delayMode = false; }); } else { // TODO figure out which other input elements should not receive focus if (clickEl.nodeName.toLowerCase() === 'input' && clickEl.type !== 'button') clickEl.focus(); - domUtils.flashRect(matchedLink.rect); + DomUtils.flashRect(matchedLink.rect); this.linkActivator(clickEl); if (this.shouldOpenWithQueue) { this.deactivateMode(delay, function() { diff --git a/content_scripts/vimium_frontend.js b/content_scripts/vimium_frontend.js index 31bb2b44..c1fbee1b 100644 --- a/content_scripts/vimium_frontend.js +++ b/content_scripts/vimium_frontend.js @@ -35,7 +35,7 @@ var textInputXPath = (function() { "(" + textInputTypes.map(function(type) {return '@type="' + type + '"'}).join(" or ") + "or not(@type))" + " and not(@disabled or @readonly)]", "textarea", "*[@contenteditable='' or translate(@contenteditable, 'TRUE', 'true')='true']"]; - return domUtils.makeXPath(inputElements); + return DomUtils.makeXPath(inputElements); })(); /** @@ -166,7 +166,7 @@ function initializePreDomReady() { } else if (port.name == "setScrollPosition") { port.onMessage.addListener(function(args) { if (args.scrollX > 0 || args.scrollY > 0) { - domUtils.documentReady(function() { window.scrollBy(args.scrollX, args.scrollY); }); + DomUtils.documentReady(function() { window.scrollBy(args.scrollX, args.scrollY); }); } }); } else if (port.name == "returnCurrentTabUrl") { @@ -332,7 +332,7 @@ function scrollLeft() { scrollActivatedElementBy("x", -1 * settings.get("scrollS function scrollRight() { scrollActivatedElementBy("x", parseFloat(settings.get("scrollStepSize"))); } function focusInput(count) { - var results = domUtils.evaluateXPath(textInputXPath, XPathResult.ORDERED_NODE_ITERATOR_TYPE); + var results = DomUtils.evaluateXPath(textInputXPath, XPathResult.ORDERED_NODE_ITERATOR_TYPE); var lastInputBox; var i = 0; @@ -341,7 +341,7 @@ function focusInput(count) { var currentInputBox = results.iterateNext(); if (!currentInputBox) { break; } - if (domUtils.getVisibleClientRect(currentInputBox) === null) + if (DomUtils.getVisibleClientRect(currentInputBox) === null) continue; lastInputBox = currentInputBox; @@ -800,9 +800,9 @@ function selectFoundInputElement() { // instead. however, since the last focused element might not be the one currently pointed to by find (e.g. // the current one might be disabled and therefore unable to receive focus), we use the approximate // heuristic of checking that the last anchor node is an ancestor of our element. - if (findModeQueryHasResults && domUtils.isSelectable(document.activeElement) && + if (findModeQueryHasResults && DomUtils.isSelectable(document.activeElement) && isDOMDescendant(findModeAnchorNode, document.activeElement)) { - domUtils.simulateSelect(document.activeElement); + DomUtils.simulateSelect(document.activeElement); // the element has already received focus via find(), so invoke insert mode manually enterInsertModeWithoutShowingIndicator(document.activeElement); } @@ -839,14 +839,14 @@ function findAndFocus(backwards) { // if we have found an input element via 'n', pressing immediately afterwards sends us into insert // mode - var elementCanTakeInput = domUtils.isSelectable(document.activeElement) && + var elementCanTakeInput = DomUtils.isSelectable(document.activeElement) && isDOMDescendant(findModeAnchorNode, document.activeElement); if (elementCanTakeInput) { handlerStack.push({ keydown: function(event) { handlerStack.pop(); if (isEscape(event)) { - domUtils.simulateSelect(document.activeElement); + DomUtils.simulateSelect(document.activeElement); enterInsertModeWithoutShowingIndicator(document.activeElement); return false; // we have 'consumed' this event, so do not propagate } @@ -880,7 +880,7 @@ function followLink(linkElement) { // calls, like the 'more' button on GitHub's newsfeed. linkElement.scrollIntoView(); linkElement.focus(); - domUtils.simulateClick(linkElement); + DomUtils.simulateClick(linkElement); } } @@ -891,8 +891,8 @@ function followLink(linkElement) { * next big thing', and 'more' over 'nextcompany', even if 'next' occurs before 'more' in :linkStrings. */ function findAndFollowLink(linkStrings) { - var linksXPath = domUtils.makeXPath(["a", "*[@onclick or @role='link' or contains(@class, 'button')]"]); - var links = domUtils.evaluateXPath(linksXPath, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE); + var linksXPath = DomUtils.makeXPath(["a", "*[@onclick or @role='link' or contains(@class, 'button')]"]); + var links = DomUtils.evaluateXPath(linksXPath, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE); var candidateLinks = []; // at the end of this loop, candidateLinks will contain all visible links that match our patterns -- cgit v1.2.3