зеркало из https://github.com/mozilla/gecko-dev.git
Bug 851596 - Move ContextMenuHandler element detection utils into Utils. r=fyan
This commit is contained in:
Родитель
07dfb30478
Коммит
90f007bf6a
|
@ -152,6 +152,29 @@ let Util = {
|
|||
return null;
|
||||
},
|
||||
|
||||
isTextInput: function isTextInput(aElement) {
|
||||
return ((aElement instanceof Ci.nsIDOMHTMLInputElement &&
|
||||
aElement.mozIsTextField(false)) ||
|
||||
aElement instanceof Ci.nsIDOMHTMLTextAreaElement);
|
||||
},
|
||||
|
||||
isLink: function isLink(aElement) {
|
||||
return ((aElement instanceof Ci.nsIDOMHTMLAnchorElement && aElement.href) ||
|
||||
(aElement instanceof Ci.nsIDOMHTMLAreaElement && aElement.href) ||
|
||||
aElement instanceof Ci.nsIDOMHTMLLinkElement ||
|
||||
aElement.getAttributeNS(kXLinkNamespace, "type") == "simple");
|
||||
},
|
||||
|
||||
isText: function isText(aElement) {
|
||||
return (aElement instanceof Ci.nsIDOMHTMLParagraphElement ||
|
||||
aElement instanceof Ci.nsIDOMHTMLDivElement ||
|
||||
aElement instanceof Ci.nsIDOMHTMLLIElement ||
|
||||
aElement instanceof Ci.nsIDOMHTMLPreElement ||
|
||||
aElement instanceof Ci.nsIDOMHTMLHeadingElement ||
|
||||
aElement instanceof Ci.nsIDOMHTMLTableCellElement ||
|
||||
aElement instanceof Ci.nsIDOMHTMLBodyElement);
|
||||
},
|
||||
|
||||
/*
|
||||
* Rect and nsIDOMRect utilities
|
||||
*/
|
||||
|
|
|
@ -133,7 +133,7 @@ var ContextMenuHandler = {
|
|||
*/
|
||||
|
||||
_onSelectAll: function _onSelectAll() {
|
||||
if (this._isTextInput(this._target)) {
|
||||
if (Util.isTextInput(this._target)) {
|
||||
// select all text in the input control
|
||||
this._target.select();
|
||||
} else {
|
||||
|
@ -145,7 +145,7 @@ var ContextMenuHandler = {
|
|||
|
||||
_onPaste: function _onPaste() {
|
||||
// paste text if this is an input control
|
||||
if (this._isTextInput(this._target)) {
|
||||
if (Util.isTextInput(this._target)) {
|
||||
let edit = this._target.QueryInterface(Ci.nsIDOMNSEditableElement);
|
||||
if (edit) {
|
||||
edit.editor.paste(Ci.nsIClipboard.kGlobalClipboard);
|
||||
|
@ -161,7 +161,7 @@ var ContextMenuHandler = {
|
|||
},
|
||||
|
||||
_onCut: function _onCut() {
|
||||
if (this._isTextInput(this._target)) {
|
||||
if (Util.isTextInput(this._target)) {
|
||||
let edit = this._target.QueryInterface(Ci.nsIDOMNSEditableElement);
|
||||
if (edit) {
|
||||
edit.editor.cut();
|
||||
|
@ -173,7 +173,7 @@ var ContextMenuHandler = {
|
|||
},
|
||||
|
||||
_onCopy: function _onCopy() {
|
||||
if (this._isTextInput(this._target)) {
|
||||
if (Util.isTextInput(this._target)) {
|
||||
let edit = this._target.QueryInterface(Ci.nsIDOMNSEditableElement);
|
||||
if (edit) {
|
||||
edit.editor.copy();
|
||||
|
@ -281,7 +281,7 @@ var ContextMenuHandler = {
|
|||
while (elem) {
|
||||
if (elem.nodeType == Ci.nsIDOMNode.ELEMENT_NODE) {
|
||||
// is the target a link or a descendant of a link?
|
||||
if (this._isLink(elem)) {
|
||||
if (Util.isLink(elem)) {
|
||||
// If this is an image that links to itself, don't include both link and
|
||||
// image otpions.
|
||||
if (imageUrl == this._getLinkURL(elem)) {
|
||||
|
@ -297,7 +297,7 @@ var ContextMenuHandler = {
|
|||
// mark as text so we can pickup on selection below
|
||||
isText = true;
|
||||
break;
|
||||
} else if (this._isTextInput(elem)) {
|
||||
} else if (Util.isTextInput(elem)) {
|
||||
let selectionStart = elem.selectionStart;
|
||||
let selectionEnd = elem.selectionEnd;
|
||||
|
||||
|
@ -330,7 +330,7 @@ var ContextMenuHandler = {
|
|||
state.types.push("paste");
|
||||
}
|
||||
break;
|
||||
} else if (this._isText(elem)) {
|
||||
} else if (Util.isText(elem)) {
|
||||
isText = true;
|
||||
} else if (elem instanceof Ci.nsIDOMHTMLMediaElement ||
|
||||
elem instanceof Ci.nsIDOMHTMLVideoElement) {
|
||||
|
@ -381,29 +381,6 @@ var ContextMenuHandler = {
|
|||
sendAsyncMessage("Content:ContextMenu", state);
|
||||
},
|
||||
|
||||
_isTextInput: function _isTextInput(element) {
|
||||
return ((element instanceof Ci.nsIDOMHTMLInputElement &&
|
||||
element.mozIsTextField(false)) ||
|
||||
element instanceof Ci.nsIDOMHTMLTextAreaElement);
|
||||
},
|
||||
|
||||
_isLink: function _isLink(element) {
|
||||
return ((element instanceof Ci.nsIDOMHTMLAnchorElement && element.href) ||
|
||||
(element instanceof Ci.nsIDOMHTMLAreaElement && element.href) ||
|
||||
element instanceof Ci.nsIDOMHTMLLinkElement ||
|
||||
element.getAttributeNS(kXLinkNamespace, "type") == "simple");
|
||||
},
|
||||
|
||||
_isText: function _isText(element) {
|
||||
return (element instanceof Ci.nsIDOMHTMLParagraphElement ||
|
||||
element instanceof Ci.nsIDOMHTMLDivElement ||
|
||||
element instanceof Ci.nsIDOMHTMLLIElement ||
|
||||
element instanceof Ci.nsIDOMHTMLPreElement ||
|
||||
element instanceof Ci.nsIDOMHTMLHeadingElement ||
|
||||
element instanceof Ci.nsIDOMHTMLTableCellElement ||
|
||||
element instanceof Ci.nsIDOMHTMLBodyElement);
|
||||
},
|
||||
|
||||
_getLinkURL: function ch_getLinkURL(aLink) {
|
||||
let href = aLink.href;
|
||||
if (href)
|
||||
|
|
Загрузка…
Ссылка в новой задаче