Index: chrome/browser/resources/shared/js/util.js |
diff --git a/chrome/browser/resources/shared/js/util.js b/chrome/browser/resources/shared/js/util.js |
index c77fc3434d9707811ceb8520443361bfc1e7c5a9..a1d9bac3fb347d0de7cd3b80697bbb3d01ae4278 100644 |
--- a/chrome/browser/resources/shared/js/util.js |
+++ b/chrome/browser/resources/shared/js/util.js |
@@ -107,17 +107,26 @@ function swapDomNodes(a, b) { |
} |
/** |
- * Disables text selection and dragging. |
+ * Disables text selection and dragging, with optional whitelist callbacks. |
+ * |
+ * @param {function(Event) : boolean} allowSelectStart if this function is |
+ * defined and returns true, will allow the SelectStart event to be processed |
+ * @param {function(Event) : boolean} allowDragStart if this funcion is defined |
+ * and returns true, will allow the DragStart event to be processed |
*/ |
-function disableTextSelectAndDrag() { |
+function disableTextSelectAndDrag(allowSelectStart, allowDragStart) { |
// Disable text selection. |
document.onselectstart = function(e) { |
- e.preventDefault(); |
+ if (!(allowSelectStart && allowSelectStart(e))) { |
+ e.preventDefault(); |
+ } |
} |
// Disable dragging. |
document.ondragstart = function(e) { |
- e.preventDefault(); |
+ if (!(allowDragStart && allowDragStart(e))) { |
+ e.preventDefault(); |
+ } |
} |
} |