зеркало из https://github.com/mozilla/pjs.git
Backout changesets dbd02a315176, c8f01a0d5482 to investigate Android b-c permaorange.
This commit is contained in:
Родитель
37e29c9063
Коммит
eba83d9fae
|
@ -530,6 +530,7 @@
|
|||
<body>
|
||||
<![CDATA[
|
||||
let bcr = this.getBoundingClientRect();
|
||||
let view = this.getRootView();
|
||||
let scroll = this.getRootView().getPosition();
|
||||
return { x: (clientX + scroll.x - bcr.left) / this.scale,
|
||||
y: (clientY + scroll.y - bcr.top) / this.scale };
|
||||
|
@ -537,19 +538,6 @@
|
|||
</body>
|
||||
</method>
|
||||
|
||||
<method name="transformBrowserToClient">
|
||||
<parameter name="browserX"/>
|
||||
<parameter name="browserY"/>
|
||||
<body>
|
||||
<![CDATA[
|
||||
let bcr = this.getBoundingClientRect();
|
||||
let scroll = this.getRootView().getPosition();
|
||||
return { x: (browserX * this.scale - scroll.x + bcr.left) ,
|
||||
y: (browserY * this.scale - scroll.y + bcr.top)};
|
||||
]]>
|
||||
</body>
|
||||
</method>
|
||||
|
||||
<constructor>
|
||||
<![CDATA[
|
||||
this._frameLoader = this.QueryInterface(Components.interfaces.nsIFrameLoaderOwner).frameLoader;
|
||||
|
|
|
@ -71,7 +71,6 @@ XPCOMUtils.defineLazyGetter(this, "CommonUI", function() {
|
|||
["FullScreenVideo"],
|
||||
["BadgeHandlers"],
|
||||
["ContextHelper"],
|
||||
["SelectionHelper"],
|
||||
["FormHelperUI"],
|
||||
["FindHelperUI"],
|
||||
["NewTabPopup"],
|
||||
|
|
|
@ -1754,13 +1754,11 @@ const ContentTouchHandler = {
|
|||
case "Browser:ContextMenu":
|
||||
// Long tap
|
||||
let contextMenu = { name: aMessage.name, json: json, target: aMessage.target };
|
||||
if (!SelectionHelper.showPopup(contextMenu)) {
|
||||
if (ContextHelper.showPopup(contextMenu)) {
|
||||
// Stop all input sequences
|
||||
let event = document.createEvent("Events");
|
||||
event.initEvent("CancelTouchSequence", true, false);
|
||||
document.dispatchEvent(event);
|
||||
}
|
||||
if (ContextHelper.showPopup(contextMenu)) {
|
||||
// Stop all input sequences
|
||||
let event = document.createEvent("Events");
|
||||
event.initEvent("CancelTouchSequence", true, false);
|
||||
document.dispatchEvent(event);
|
||||
}
|
||||
break;
|
||||
case "Browser:CaptureEvents": {
|
||||
|
|
|
@ -663,9 +663,6 @@
|
|||
</vbox>
|
||||
</hbox>
|
||||
|
||||
<toolbarbutton id="selectionhandle-start" label="^" left="0" top="0" hidden="true"/>
|
||||
<toolbarbutton id="selectionhandle-end" label="^" left="0" top="0" hidden="true"/>
|
||||
|
||||
<hbox id="menulist-container" class="window-width window-height context-block" top="0" left="0" hidden="true" flex="1">
|
||||
<vbox id="menulist-popup" class="dialog-dark">
|
||||
<label id="menulist-title" class="options-title" crop="center" flex="1"/>
|
||||
|
|
|
@ -1235,166 +1235,6 @@ var ContextHelper = {
|
|||
}
|
||||
};
|
||||
|
||||
var SelectionHelper = {
|
||||
popupState: null,
|
||||
target: null,
|
||||
deltaX: -1,
|
||||
deltaY: -1,
|
||||
|
||||
get _start() {
|
||||
delete this._start;
|
||||
return this._start = document.getElementById("selectionhandle-start");
|
||||
},
|
||||
|
||||
get _end() {
|
||||
delete this._end;
|
||||
return this._end = document.getElementById("selectionhandle-end");
|
||||
},
|
||||
|
||||
showPopup: function ch_showPopup(aMessage) {
|
||||
if (aMessage.json.types.indexOf("content-text") == -1)
|
||||
return false;
|
||||
|
||||
this.popupState = aMessage.json;
|
||||
this.popupState.target = aMessage.target;
|
||||
|
||||
this._start.customDragger = {
|
||||
isDraggable: function isDraggable(target, content) { return { x: true, y: false }; },
|
||||
dragStart: function dragStart(cx, cy, target, scroller) {},
|
||||
dragStop: function dragStop(dx, dy, scroller) { return false; },
|
||||
dragMove: function dragMove(dx, dy, scroller) { return false; }
|
||||
};
|
||||
|
||||
this._end.customDragger = {
|
||||
isDraggable: function isDraggable(target, content) { return { x: true, y: false }; },
|
||||
dragStart: function dragStart(cx, cy, target, scroller) {},
|
||||
dragStop: function dragStop(dx, dy, scroller) { return false; },
|
||||
dragMove: function dragMove(dx, dy, scroller) { return false; }
|
||||
};
|
||||
|
||||
this._start.addEventListener("TapDown", this, true);
|
||||
this._start.addEventListener("TapUp", this, true);
|
||||
|
||||
this._end.addEventListener("TapDown", this, true);
|
||||
this._end.addEventListener("TapUp", this, true);
|
||||
|
||||
messageManager.addMessageListener("Browser:SelectionRange", this);
|
||||
messageManager.addMessageListener("Browser:SelectionCopied", this);
|
||||
|
||||
Services.prefs.setBoolPref("accessibility.browsewithcaret", true);
|
||||
this.popupState.target.messageManager.sendAsyncMessage("Browser:SelectionStart", { x: this.popupState.x, y: this.popupState.y });
|
||||
|
||||
BrowserUI.pushPopup(this, [this._start, this._end]);
|
||||
|
||||
// Hide the selection handles
|
||||
window.addEventListener("resize", this, true);
|
||||
window.addEventListener("keypress", this, true);
|
||||
Elements.browsers.addEventListener("URLChanged", this, true);
|
||||
Elements.browsers.addEventListener("SizeChanged", this, true);
|
||||
Elements.browsers.addEventListener("ZoomChanged", this, true);
|
||||
|
||||
let event = document.createEvent("Events");
|
||||
event.initEvent("CancelTouchSequence", true, false);
|
||||
this.popupState.target.dispatchEvent(event);
|
||||
|
||||
return true;
|
||||
},
|
||||
|
||||
hide: function ch_hide() {
|
||||
if (this._start.hidden)
|
||||
return;
|
||||
|
||||
this.popupState.target.messageManager.sendAsyncMessage("Browser:SelectionEnd", {});
|
||||
this.popupState = null;
|
||||
Services.prefs.setBoolPref("accessibility.browsewithcaret", false);
|
||||
|
||||
this._start.hidden = true;
|
||||
this._end.hidden = true;
|
||||
|
||||
this._start.removeEventListener("TapDown", this, true);
|
||||
this._start.removeEventListener("TapUp", this, true);
|
||||
|
||||
this._end.removeEventListener("TapDown", this, true);
|
||||
this._end.removeEventListener("TapUp", this, true);
|
||||
|
||||
messageManager.removeMessageListener("Browser:SelectionRange", this);
|
||||
|
||||
window.removeEventListener("resize", this, true);
|
||||
window.removeEventListener("keypress", this, true);
|
||||
Elements.browsers.removeEventListener("URLChanged", this, true);
|
||||
Elements.browsers.removeEventListener("SizeChanged", this, true);
|
||||
Elements.browsers.removeEventListener("ZoomChanged", this, true);
|
||||
|
||||
BrowserUI.popPopup(this);
|
||||
},
|
||||
|
||||
handleEvent: function handleEvent(aEvent) {
|
||||
switch (aEvent.type) {
|
||||
case "TapDown":
|
||||
this.target = aEvent.target;
|
||||
this.deltaX = (aEvent.clientX - this.target.left);
|
||||
this.deltaY = (aEvent.clientY - this.target.top);
|
||||
window.addEventListener("TapMove", this, true);
|
||||
break;
|
||||
case "TapUp":
|
||||
window.removeEventListener("TapMove", this, true);
|
||||
this.target = null;
|
||||
this.deltaX = -1;
|
||||
this.deltaY = -1;
|
||||
break;
|
||||
case "TapMove":
|
||||
if (this.target) {
|
||||
this.target.left = aEvent.clientX - this.deltaX;
|
||||
this.target.top = aEvent.clientY - this.deltaY;
|
||||
let rect = this.target.getBoundingClientRect();
|
||||
let data = this.target == this._start ? { x: rect.right, y: rect.top, type: "start" } : { x: rect.left, y: rect.top, type: "end" };
|
||||
let pos = this.popupState.target.transformClientToBrowser(data.x || 0, data.y || 0);
|
||||
let json = {
|
||||
type: data.type,
|
||||
x: pos.x,
|
||||
y: pos.y
|
||||
};
|
||||
this.popupState.target.messageManager.sendAsyncMessage("Browser:SelectionMove", json);
|
||||
}
|
||||
break;
|
||||
case "resize":
|
||||
case "keypress":
|
||||
case "URLChanged":
|
||||
case "SizeChanged":
|
||||
case "ZoomChanged":
|
||||
this.hide();
|
||||
break;
|
||||
}
|
||||
},
|
||||
|
||||
receiveMessage: function sh_receiveMessage(aMessage) {
|
||||
let json = aMessage.json;
|
||||
switch (aMessage.name) {
|
||||
case "Browser:SelectionRange": {
|
||||
let pos = this.popupState.target.transformBrowserToClient(json.start.x || 0, json.start.y || 0);
|
||||
this._start.left = pos.x - 32;
|
||||
this._start.top = pos.y + this.deltaY;
|
||||
this._start.hidden = false;
|
||||
|
||||
pos = this.popupState.target.transformBrowserToClient(json.end.x || 0, json.end.y || 0);
|
||||
this._end.left = pos.x;
|
||||
this._end.top = pos.y;
|
||||
this._end.hidden = false;
|
||||
break;
|
||||
}
|
||||
|
||||
case "Browser:SelectionCopied": {
|
||||
messageManager.removeMessageListener("Browser:SelectionCopied", this);
|
||||
if (json.succeeded) {
|
||||
let toaster = Cc["@mozilla.org/toaster-alerts-service;1"].getService(Ci.nsIAlertsService);
|
||||
toaster.showAlertNotification(null, Strings.browser.GetStringFromName("selectionHelper.textCopied"), "", false, "", null);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var BadgeHandlers = {
|
||||
_handlers: [
|
||||
{
|
||||
|
|
|
@ -918,14 +918,6 @@ var ContextHandler = {
|
|||
if (hasData && !elem.readOnly)
|
||||
state.types.push("paste");
|
||||
break;
|
||||
} else if (elem instanceof Ci.nsIDOMHTMLParagraphElement ||
|
||||
elem instanceof Ci.nsIDOMHTMLDivElement ||
|
||||
elem instanceof Ci.nsIDOMHTMLLIElement ||
|
||||
elem instanceof Ci.nsIDOMHTMLPreElement ||
|
||||
elem instanceof Ci.nsIDOMHTMLHeadingElement ||
|
||||
elem instanceof Ci.nsIDOMHTMLTableCellElement) {
|
||||
state.types.push("content-text");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1289,7 +1281,6 @@ var TouchEventHandler = {
|
|||
|
||||
if (!this.element)
|
||||
return;
|
||||
|
||||
let cancelled = !this.sendEvent(type, json, this.element);
|
||||
if (type == "touchend")
|
||||
this.element = null;
|
||||
|
@ -1325,86 +1316,6 @@ var TouchEventHandler = {
|
|||
}
|
||||
return aElement.dispatchEvent(evt);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
TouchEventHandler.init();
|
||||
|
||||
var SelectionHandler = {
|
||||
cache: {},
|
||||
|
||||
init: function() {
|
||||
addMessageListener("Browser:SelectionStart", this);
|
||||
addMessageListener("Browser:SelectionEnd", this);
|
||||
addMessageListener("Browser:SelectionMove", this);
|
||||
},
|
||||
|
||||
receiveMessage: function(aMessage) {
|
||||
let scrollOffset = ContentScroll.getScrollOffset(content);
|
||||
let utils = Util.getWindowUtils(content);
|
||||
let json = aMessage.json;
|
||||
|
||||
switch (aMessage.name) {
|
||||
case "Browser:SelectionStart": {
|
||||
// Position the caret using a fake mouse click
|
||||
utils.sendMouseEventToWindow("mousedown", json.x - scrollOffset.x, json.y - scrollOffset.y, 0, 1, 0, true);
|
||||
utils.sendMouseEventToWindow("mouseup", json.x - scrollOffset.x, json.y - scrollOffset.y, 0, 1, 0, true);
|
||||
|
||||
// Select the word nearest the caret
|
||||
let selcon = docShell.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsISelectionDisplay).QueryInterface(Ci.nsISelectionController);
|
||||
selcon.wordMove(false, false);
|
||||
selcon.wordMove(true, true);
|
||||
|
||||
// Find the selected text rect and send it back so the handles can position correctly
|
||||
let selection = content.getSelection();
|
||||
let range = selection.getRangeAt(0).QueryInterface(Ci.nsIDOMNSRange);
|
||||
|
||||
this.cache = { start: {}, end: {} };
|
||||
let rects = range.getClientRects();
|
||||
for (let i=0; i<rects.length; i++) {
|
||||
if (i == 0) {
|
||||
this.cache.start.x = rects[i].left + scrollOffset.x;
|
||||
this.cache.start.y = rects[i].bottom + scrollOffset.y;
|
||||
}
|
||||
this.cache.end.x = rects[i].right + scrollOffset.x;
|
||||
this.cache.end.y = rects[i].bottom + scrollOffset.y;
|
||||
}
|
||||
|
||||
sendAsyncMessage("Browser:SelectionRange", this.cache);
|
||||
break;
|
||||
}
|
||||
|
||||
case "Browser:SelectionEnd": {
|
||||
let selection = content.getSelection();
|
||||
let str = selection.toString();
|
||||
selection.collapseToStart();
|
||||
if (str.length) {
|
||||
let clipboard = Cc["@mozilla.org/widget/clipboardhelper;1"].getService(Ci.nsIClipboardHelper);
|
||||
clipboard.copyString(str);
|
||||
sendAsyncMessage("Browser:SelectionCopied", { succeeded: true });
|
||||
} else {
|
||||
sendAsyncMessage("Browser:SelectionCopied", { succeeded: false });
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case "Browser:SelectionMove":
|
||||
if (json.type == "end") {
|
||||
this.cache.end.x = json.x - scrollOffset.x;
|
||||
this.cache.end.y = json.y - scrollOffset.y;
|
||||
utils.sendMouseEventToWindow("mousedown", this.cache.end.x, this.cache.end.y, 0, 1, Ci.nsIDOMNSEvent.SHIFT_MASK, true);
|
||||
utils.sendMouseEventToWindow("mouseup", this.cache.end.x, this.cache.end.y, 0, 1, Ci.nsIDOMNSEvent.SHIFT_MASK, true);
|
||||
} else {
|
||||
this.cache.start.x = json.x - scrollOffset.x;
|
||||
this.cache.start.y = json.y - scrollOffset.y;
|
||||
utils.sendMouseEventToWindow("mousedown", this.cache.start.x, this.cache.start.y, 0, 1, 0, true);
|
||||
// Don't cause a click. A mousedown is enough to move the caret
|
||||
//utils.sendMouseEventToWindow("mouseup", this.cache.start.x, this.cache.start.y, 0, 1, 0, true);
|
||||
utils.sendMouseEventToWindow("mousedown", this.cache.end.x, this.cache.end.y, 0, 1, Ci.nsIDOMNSEvent.SHIFT_MASK, true);
|
||||
utils.sendMouseEventToWindow("mouseup", this.cache.end.x, this.cache.end.y, 0, 1, Ci.nsIDOMNSEvent.SHIFT_MASK, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
SelectionHandler.init();
|
||||
|
|
|
@ -20,9 +20,5 @@
|
|||
<a id="link-nested" href="browser_blank_02.html"><img id="img-nested" src="data:image/jpeg,%FF%D8%FF%E0%00%10JFIF%00%01%01%00%00%01%00%01%00%00%FF%FE%00%3BCREATOR%3A%20gd-jpeg%20v1.0%20(using%20IJG%20JPEG%20v62)%2C%20quality%20%3D%2090%0A%FF%DB%00C%00%03%02%02%03%02%02%03%03%03%03%04%03%03%04%05%08%05%05%04%04%05%0A%07%07%06%08%0C%0A%0C%0C%0B%0A%0B%0B%0D%0E%12%10%0D%0E%11%0E%0B%0B%10%16%10%11%13%14%15%15%15%0C%0F%17%18%16%14%18%12%14%15%14%FF%DB%00C%01%03%04%04%05%04%05%09%05%05%09%14%0D%0B%0D%14%14%14%14%14%14%14%14%14%14%14%14%14%14%14%14%14%14%14%14%14%14%14%14%14%14%14%14%14%14%14%14%14%14%14%14%14%14%14%14%14%14%14%14%14%14%14%14%14%14%FF%C0%00%11%08%00%24%00%24%03%01%22%00%02%11%01%03%11%01%FF%C4%00%1F%00%00%01%05%01%01%01%01%01%01%00%00%00%00%00%00%00%00%01%02%03%04%05%06%07%08%09%0A%0B%FF%C4%00%B5%10%00%02%01%03%03%02%04%03%05%05%04%04%00%00%01%7D%01%02%03%00%04%11%05%12!1A%06%13Qa%07%22q%142%81%91%A1%08%23B%B1%C1%15R%D1%F0%243br%82%09%0A%16%17%18%19%1A%25%26'()*456789%3ACDEFGHIJSTUVWXYZcdefghijstuvwxyz%83%84%85%86%87%88%89%8A%92%93%94%95%96%97%98%99%9A%A2%A3%A4%A5%A6%A7%A8%A9%AA%B2%B3%B4%B5%B6%B7%B8%B9%BA%C2%C3%C4%C5%C6%C7%C8%C9%CA%D2%D3%D4%D5%D6%D7%D8%D9%DA%E1%E2%E3%E4%E5%E6%E7%E8%E9%EA%F1%F2%F3%F4%F5%F6%F7%F8%F9%FA%FF%C4%00%1F%01%00%03%01%01%01%01%01%01%01%01%01%00%00%00%00%00%00%01%02%03%04%05%06%07%08%09%0A%0B%FF%C4%00%B5%11%00%02%01%02%04%04%03%04%07%05%04%04%00%01%02w%00%01%02%03%11%04%05!1%06%12AQ%07aq%13%222%81%08%14B%91%A1%B1%C1%09%233R%F0%15br%D1%0A%16%244%E1%25%F1%17%18%19%1A%26'()*56789%3ACDEFGHIJSTUVWXYZcdefghijstuvwxyz%82%83%84%85%86%87%88%89%8A%92%93%94%95%96%97%98%99%9A%A2%A3%A4%A5%A6%A7%A8%A9%AA%B2%B3%B4%B5%B6%B7%B8%B9%BA%C2%C3%C4%C5%C6%C7%C8%C9%CA%D2%D3%D4%D5%D6%D7%D8%D9%DA%E2%E3%E4%E5%E6%E7%E8%E9%EA%F2%F3%F4%F5%F6%F7%F8%F9%FA%FF%DA%00%0C%03%01%00%02%11%03%11%00%3F%00%F8%D7C%F1%5CW%DF%194%FDf%F2%F5%26%8AR%3C%EB%82%C0%8D%BEQBI%1E%82%B8%3F%18%7Cm%F1G%8D4%3D%0FA%7DFX%F4%AD%26%D1--%AC%E0%FD%DCe%23%18V%60%3E%F3%11%D4%9C%FB%60W%23gos96%D6%EE%242%F0%10(%04%E7%AFJ%F4%CF%82%FF%00%0E%2C%EF%ED%A5%D7%B5%E8%5C%D8A!%89a%11%92X%8E%A7%03%9E%BC~u%CDR%AA%A6%A5%2B%EEm%87%C2%FBNXv%EAs%FE%11%97UeYD%97%11%A5%AF%EFCE%2F%20%8E%A7o%F9%F5%CDz%BF%C3%BF%19x%82%EFH%D5%B4W%D6%AF%5E%CE%FA%DEKYl%24%95%DA%22%0Cm%8F%90%F4%25%D5%08%E3%A9%1D%06k%E9_%82%DE%12%F0%07%8B%2FF%9D%1Cztf%E16%B5%B4%F6%C6%19%24_%E2%03p%04%FE%15%DA%FCN%FD%9Ac%F8u%E1%3F%F8O%7C6%B6%D2%D9i%12G%F6%8D8B%04%9ECH%A1%B0%F9%C9%23%3Cw8%EB%9CW%241R%95%EF%1B%1E%BDL%BE%10%8D%F9%93%3F9%E6%07%7D%15%B9%E3%98l%A0%F1v%AA%9Al%82%5B%0F%B49%85%80%C7%C8I%20c%DB8%FC(%AD%13%3C%87%B9%E5%BE%0F%BEXu%FBS2%3C%88K)X%FA%8C%A9%19%E7%D39%3FJ%FB%7F%E0%D7%86t%FF%00%EC(%F4%B9-%BC%EB)%8E%D7%8C%9E%08''%3F%9Dx%DF%80%BFf%1DCM%D2%AF%B5%3Df%16%93X6%EEl%AD%20%C9T%90%00%40%24%03%B9%9B%EE%81%C7%5E%F9%06%BD%F3%E1%95%FC~%1E%B0Qp%85X.%E5c%FC%40%8E%08%AE%5C%7BM%FB%A7%BD%94%C9E%3Eu%A7%F5%FEGu%F0%FB%C1%DAF%97%F1%9F%C3%9A%0E%93%17%92%24%93%CB%91%22F1%C4%AC%09%CEO%1B%B9%CE%075%2F%ED%19%F0%F7Q%F89%FB6%F8%A7Yo%1E%EA%1A%D0%D6o%ED%AC~%CE%D2%E2%19%B3%2F%9B%B8%A7M%C0!%E0%01%D0%F2Ev_%01%FC%23%AB%5E%F8%9AMJ7%B2%BD%D8%AC%EBq%3C%04%B2%12%A7%03%EF%83%DCr%2B%D7~%23~%C6Z%1F%C7%DF%84%9A6%87%E2%3DwV%D1%A6%B6%9D%EF%ED%24%D3%E4O)e*P%19Q%94%EF%00%16%C0%05N%09%E7%9A%8C579-7%3As%19%D3%A5I%A4%ED%D9z%9F%8C%D2j%11%B3d%9C%9CQ%5E%FB%F1W%FE%09%F5%F1g%E1%EF%8D.%F4m%2FMO%14%D8D%03%C3%A9Z%C9%1C%0B%22%9E%99I%1C%10%DFBG%3DO8%2B%D7%F62%EC%7C%97%3C%7B%9FaO%E1%ABM%0Ak1%03%CE%E5%23K%80e%94%9C%BE%C9rp09%0A%01%E3%D7%BF57%85%BC%0D%A3x%85%AE%A0%BC%B3R%8B%24%C1%0ApSl%AE%9C%7DB%82%7D%C94Q%5EF%23%E1O%CD%1E%E6%0B%E3k%C9%9A%3A%C6%9B%FF%00%08%3C%1E%1C%8FG%BB%B9%B4%FE%D2%D5%23%B5%9D%96N%7C%A1%C9Q%C7%19%C6%0F%B5%7Dw%F0%F6%EEK%EF%0CX%19NY-%89W%EA%D8%12%B2%81%93%DB%0A%3D%FA%D1Ew%60~%26c%99%7C%11%13%C6%96%16%B7%1A%ACm5%B430%85%40iP1%C6OsE%14W%ABvxvG%FF%D9"/></a>
|
||||
</div>
|
||||
|
||||
<div style="margin-bottom:20px">
|
||||
<div id="plain-text">Just some simple text</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -125,7 +125,6 @@ function runNextTest() {
|
|||
window.removeEventListener("TapDouble", dumpEvents, true);
|
||||
window.removeEventListener("TapLong", dumpEvents, true);
|
||||
|
||||
SelectionHelper.hide();
|
||||
Browser.closeTab(gCurrentTab);
|
||||
|
||||
finish();
|
||||
|
@ -278,7 +277,7 @@ gTests.push({
|
|||
|
||||
contextPlainImageTest: function() {
|
||||
waitForContextMenu(function() {
|
||||
ok(checkContextTypes(["image","image-shareable","image-loaded", "content-text"]), "Plain image context types");
|
||||
ok(checkContextTypes(["image","image-shareable","image-loaded"]), "Plain image context types");
|
||||
}, gCurrentTest.contextNestedImageTest);
|
||||
|
||||
let browser = gCurrentTab.browser;
|
||||
|
@ -291,25 +290,13 @@ gTests.push({
|
|||
contextNestedImageTest: function() {
|
||||
waitForContextMenu(function() {
|
||||
ok(checkContextTypes(["link", "link-saveable","image","image-shareable","image-loaded","link-openable"]), "Nested image context types");
|
||||
}, gCurrentTest.contextPlainTextTest);
|
||||
}, runNextTest);
|
||||
|
||||
let browser = gCurrentTab.browser;
|
||||
let img = browser.contentDocument.getElementById("img-nested");
|
||||
let event = content.document.createEvent("PopupEvents");
|
||||
event.initEvent("contextmenu", true, true);
|
||||
img.dispatchEvent(event);
|
||||
},
|
||||
|
||||
contextPlainTextTest: function() {
|
||||
waitForContextMenu(function() {
|
||||
ok(checkContextTypes(["content-text"]), "Plain text context types");
|
||||
}, runNextTest);
|
||||
|
||||
let browser = gCurrentTab.browser;
|
||||
let img = browser.contentDocument.getElementById("plain-text");
|
||||
let event = content.document.createEvent("PopupEvents");
|
||||
event.initEvent("contextmenu", true, true);
|
||||
img.dispatchEvent(event);
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -235,6 +235,3 @@ intl.charsetmenu.browser.static=iso-8859-1,utf-8,x-gbk,big5,iso-2022-jp,shift_ji
|
|||
|
||||
#Application Menu
|
||||
appMenu.more=More
|
||||
|
||||
#Text Selection
|
||||
selectionHelper.textCopied=Text copied to clipboard
|
||||
|
|
|
@ -1531,20 +1531,3 @@ setting {
|
|||
90% { -moz-transform: translateX(@sidebar_width_minimum@); }
|
||||
to { -moz-transform: translateX(0); }
|
||||
}
|
||||
|
||||
#selectionhandle-start,
|
||||
#selectionhandle-end {
|
||||
min-width: 35px !important;
|
||||
width: 35px !important;
|
||||
padding: 0 !important;
|
||||
margin: 0 !important;
|
||||
}
|
||||
|
||||
#selectionhandle-start {
|
||||
list-style-image: url("chrome://browser/skin/images/handle-start.png");
|
||||
}
|
||||
|
||||
#selectionhandle-end {
|
||||
list-style-image: url("chrome://browser/skin/images/handle-end.png");
|
||||
}
|
||||
|
||||
|
|
|
@ -1497,20 +1497,3 @@ setting {
|
|||
90% { -moz-transform: translateX(-@sidebar_width_minimum@); }
|
||||
to { -moz-transform: translateX(0); }
|
||||
}
|
||||
|
||||
#selectionhandle-start,
|
||||
#selectionhandle-end {
|
||||
min-width: 35px !important;
|
||||
width: 35px !important;
|
||||
padding: 0 !important;
|
||||
margin: 0 !important;
|
||||
}
|
||||
|
||||
#selectionhandle-start {
|
||||
list-style-image: url("chrome://browser/skin/images/handle-start.png");
|
||||
}
|
||||
|
||||
#selectionhandle-end {
|
||||
list-style-image: url("chrome://browser/skin/images/handle-end.png");
|
||||
}
|
||||
|
||||
|
|
Двоичные данные
mobile/themes/core/gingerbread/images/handle-end.png
Двоичные данные
mobile/themes/core/gingerbread/images/handle-end.png
Двоичный файл не отображается.
До Ширина: | Высота: | Размер: 1.6 KiB |
Двоичные данные
mobile/themes/core/gingerbread/images/handle-start.png
Двоичные данные
mobile/themes/core/gingerbread/images/handle-start.png
Двоичный файл не отображается.
До Ширина: | Высота: | Размер: 1.5 KiB |
Двоичные данные
mobile/themes/core/images/handle-end.png
Двоичные данные
mobile/themes/core/images/handle-end.png
Двоичный файл не отображается.
До Ширина: | Высота: | Размер: 1.6 KiB |
Двоичные данные
mobile/themes/core/images/handle-start.png
Двоичные данные
mobile/themes/core/images/handle-start.png
Двоичный файл не отображается.
До Ширина: | Высота: | Размер: 1.5 KiB |
|
@ -122,8 +122,6 @@ chrome.jar:
|
|||
skin/images/mute-hdpi.png (images/mute-hdpi.png)
|
||||
skin/images/unmute-hdpi.png (images/unmute-hdpi.png)
|
||||
skin/images/scrubber-hdpi.png (images/scrubber-hdpi.png)
|
||||
skin/images/handle-start.png (images/handle-start.png)
|
||||
skin/images/handle-end.png (images/handle-end.png)
|
||||
|
||||
chrome.jar:
|
||||
% skin browser classic/1.0 %skin/gingerbread/ os=Android osversion=2.3 osversion=2.3.3 osversion=2.3.4
|
||||
|
@ -242,8 +240,6 @@ chrome.jar:
|
|||
skin/gingerbread/images/mute-hdpi.png (gingerbread/images/mute-hdpi.png)
|
||||
skin/gingerbread/images/unmute-hdpi.png (gingerbread/images/unmute-hdpi.png)
|
||||
skin/gingerbread/images/scrubber-hdpi.png (gingerbread/images/scrubber-hdpi.png)
|
||||
skin/gingerbread/images/handle-start.png (gingerbread/images/handle-start.png)
|
||||
skin/gingerbread/images/handle-end.png (gingerbread/images/handle-end.png)
|
||||
|
||||
chrome.jar:
|
||||
% skin browser classic/1.0 %skin/honeycomb/ os=Android osversion>=3.0
|
||||
|
@ -364,5 +360,4 @@ chrome.jar:
|
|||
skin/honeycomb/images/mute-hdpi.png (honeycomb/images/mute-hdpi.png)
|
||||
skin/honeycomb/images/unmute-hdpi.png (honeycomb/images/unmute-hdpi.png)
|
||||
skin/honeycomb/images/scrubber-hdpi.png (honeycomb/images/scrubber-hdpi.png)
|
||||
skin/honeycomb/images/handle-start.png (images/handle-start.png)
|
||||
skin/honeycomb/images/handle-end.png (images/handle-end.png)
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче