author | Kartikaya Gupta <kgupta@mozilla.com> |
Thu, 13 Sep 2012 15:37:59 -0400 | |
changeset 107000 | 08dc8d488f5dd79f5200f6b18acfb672e82c42e9 |
parent 106999 | 3182f9d08c2dc22f4234616169366a887b800cf3 |
child 107001 | fa7dec6f085eabb8d1310fff9b25dba4d7abd13d |
push id | 14811 |
push user | kgupta@mozilla.com |
push date | Thu, 13 Sep 2012 19:38:21 +0000 |
treeherder | mozilla-inbound@08dc8d488f5d [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | mfinkle |
bugs | 789889 |
milestone | 18.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/mobile/android/chrome/content/browser.js +++ b/mobile/android/chrome/content/browser.js @@ -3500,18 +3500,34 @@ var BrowserEventHandler = { } if (!ElementTouchHelper.isElementClickable(closest, null, false)) closest = ElementTouchHelper.elementFromPoint(aEvent.changedTouches[0].screenX, aEvent.changedTouches[0].screenY); if (!closest) closest = aEvent.target; - if (closest) + if (closest) { + let uri = this._getLinkURI(closest); + if (uri) { + Services.io.QueryInterface(Ci.nsISpeculativeConnect).speculativeConnect(uri, null, null); + } this._doTapHighlight(closest); + } + }, + + _getLinkURI: function(aElement) { + if (aElement.nodeType == Ci.nsIDOMNode.ELEMENT_NODE && + ((aElement instanceof Ci.nsIDOMHTMLAnchorElement && aElement.href) || + (aElement instanceof Ci.nsIDOMHTMLAreaElement && aElement.href))) { + try { + return Services.io.newURI(aElement.href, null, null); + } catch (e) {} + } + return null; }, observe: function(aSubject, aTopic, aData) { if (aTopic == "dom-touch-listener-added") { let tab = BrowserApp.getTabForWindow(aSubject.top); if (!tab) return;