| Index: webkit/data/layout_tests/chrome/editing/ctrlc-crash.html
|
| ===================================================================
|
| --- webkit/data/layout_tests/chrome/editing/ctrlc-crash.html (revision 12362)
|
| +++ webkit/data/layout_tests/chrome/editing/ctrlc-crash.html (working copy)
|
| @@ -1,358 +0,0 @@
|
| -<html>
|
| - <head>
|
| - <script src="../../LayoutTests/editing/editing.js" language="JavaScript" type="text/JavaScript" ></script>
|
| - <style type="text/css">
|
| - div.popup {
|
| - color: black !important;
|
| - background: yellow !important;
|
| - padding: 0.5em !important;
|
| - position: absolute !important;
|
| - z-index: 20000 !important;
|
| - display: none;
|
| - }
|
| - </style>
|
| - <script type="text/javascript">
|
| - function getAbsolutePosition(element) {
|
| - var r = { x: element.offsetLeft, y: element.offsetTop };
|
| - if (element.offsetParent) {
|
| - var tmp = getAbsolutePosition(element.offsetParent);
|
| - r.x += tmp.x;
|
| - r.y += tmp.y;
|
| - }
|
| - return r;
|
| - }
|
| -
|
| - function runTest1() {
|
| - if (!window.layoutTestController)
|
| - return;
|
| - layoutTestController.waitUntilDone();
|
| - layoutTestController.dumpAsText();
|
| -
|
| - e = document.getElementById("mouse_target");
|
| - r = getAbsolutePosition(e);
|
| - x = r.x + e.offsetLeft + e.offsetWidth / 2;
|
| - y = r.y + e.offsetTop + e.offsetHeight / 2;
|
| - eventSender.mouseMoveTo(x, y);
|
| - window.setTimeout("runTest2()", 400);
|
| - }
|
| -
|
| - function runTest2() {
|
| - e = document.getElementById("select_target");
|
| - r = getAbsolutePosition(e);
|
| -
|
| - setSelectionCommand(e, 0, e, 1);
|
| - eventSender.mouseMoveTo(0, 0);
|
| - window.setTimeout("runTest3()", 200);
|
| - }
|
| -
|
| - function runTest3() {
|
| - copyCommand();
|
| - layoutTestController.notifyDone();
|
| - }
|
| -
|
| - function MPP_bind(fn, self, var_args) {
|
| - var boundargs = fn.boundArgs_ || [];
|
| - boundargs = boundargs.concat(Array.prototype.slice.call(arguments, 2));
|
| -
|
| - if (typeof fn.boundSelf_ != 'undefined') {
|
| - self = fn.boundSelf_;
|
| - }
|
| -
|
| - if (typeof fn.foundFn_ != 'undefined') {
|
| - fn = fn.boundFn_;
|
| - }
|
| -
|
| - var newfn = function() {
|
| - var args = boundargs.concat(Array.prototype.slice.call(arguments));
|
| - return fn.apply(self, args);
|
| - }
|
| -
|
| - newfn.boundArgs_ = boundargs;
|
| - newfn.boundSelf_ = self;
|
| - newfn.boundFn_ = fn;
|
| -
|
| - return newfn;
|
| - };
|
| -
|
| - function PersonPopup() {
|
| - this.pointerPosX = 0;
|
| - this.pointerPosY = 0;
|
| -
|
| - this.pointerOnTargetElement = false;
|
| -
|
| - this.targetPosX = 0;
|
| - this.targetPosY = 0;
|
| - this.targetWidth = 0;
|
| - this.targetHeight = 0;
|
| - this.targetElement = 0;
|
| -
|
| - this.delayed = false;
|
| - this.visible = false;
|
| - this.pointerOutsidePopup = false;
|
| -
|
| - this.showTimerID = -1;
|
| - this.hideTimerID = -1;
|
| -
|
| - window.addEventListener('load',
|
| - MPP_bind(this.handleOnLoad_, this), null);
|
| -
|
| - };
|
| -
|
| - PersonPopup.prototype.getPointerX_ = function(e) {
|
| - var x, scrollLeft;
|
| -
|
| - if (e.pageX) {
|
| - x = e.pageX;
|
| - } else if (e.clientX) {
|
| - x = e.clientX + document.body.scrollLeft;
|
| - } else {
|
| - x = 0;
|
| - }
|
| - return x;
|
| - };
|
| -
|
| - PersonPopup.prototype.getPointerY_ = function(e) {
|
| - var y, scrollTop;
|
| -
|
| - if (e.pageY) {
|
| - y = e.pageY;
|
| - } else if (e.clientY) {
|
| - y = e.clientY + document.body.scrollTop;
|
| - } else {
|
| - y = 0;
|
| - }
|
| - return y;
|
| - };
|
| -
|
| - PersonPopup.prototype.pointerCloseEnough_ = function(x, y) {
|
| - var POINTER_TOLERANCE = 5;
|
| - if (this.pointerOutsidePopup) {
|
| - if ((x >= this.targetPosX) &&
|
| - (x <= this.targetPosX + this.targetWidth) &&
|
| - (y >= this.targetPosY) &&
|
| - (y <= this.targetPosY + this.targetHeight)) {
|
| - this.pointerOutsidePopup = false;
|
| - return true;
|
| - }
|
| - } else {
|
| - if ((x >= this.targetPosX - POINTER_TOLERANCE) &&
|
| - (x <= this.targetPosX + this.targetWidth +
|
| - POINTER_TOLERANCE) &&
|
| - (y >= this.targetPosY - POINTER_TOLERANCE) &&
|
| - (y <= this.targetPosY + this.targetHeight +
|
| - POINTER_TOLERANCE)) {
|
| - this.pointerOutsidePopup = false;
|
| - return true;
|
| - }
|
| - }
|
| -
|
| - return false;
|
| - };
|
| -
|
| - PersonPopup.prototype.handleMouseMove_ = function(e) {
|
| - if ((this.delayed) || (this.visible)) {
|
| - e = e || window.event;
|
| -
|
| - var x = this.getPointerX_(e);
|
| - var y = this.getPointerY_(e);
|
| -
|
| - if (this.pointerCloseEnough_(x, y)) {
|
| - if (this.hideTimerID) {
|
| - window.clearTimeout(this.hideTimerID);
|
| - this.hideTimerID = -1;
|
| - }
|
| - } else {
|
| - if (this.hideTimerID == -1) {
|
| - this.hideTimerID = window.setTimeout(MPP_bind(this.hide_, this),
|
| - 200);
|
| - }
|
| - }
|
| - }
|
| - };
|
| -
|
| - PersonPopup.prototype.resizeElement_ = function(el, x, y, w, h) {
|
| - if (x != false) {
|
| - el.style.left = x + 'px';
|
| - }
|
| - if (y != false) {
|
| - el.style.top = y + 'px';
|
| - }
|
| - if (w != false) {
|
| - el.style.width = w + 'px';
|
| - }
|
| - if (h != false) {
|
| - el.style.height = h + 'px';
|
| - }
|
| - };
|
| -
|
| - PersonPopup.prototype.show_ = function() {
|
| - this.showTimerID = -1;
|
| -
|
| - if (this.hideTimerID != -1) {
|
| - this.delayed = false;
|
| - return;
|
| - }
|
| - if (!this.pointerOnTargetElement) {
|
| - this.delayed = false;
|
| - return;
|
| - }
|
| - this.resizeElement_(this.popupDetailedElement,
|
| - this.targetPosX, this.targetPosY,
|
| - this.targetWidth, false);
|
| - this.popupDetailedElement.style.display = 'block';
|
| - this.popupDetailedElement.innerHTML = "<a href='http://dnede.com' id='select_target'>Select</a>";
|
| - this.popupDetailedElement.style.visibility = 'visible';
|
| - this.visible = true;
|
| - this.delayed = false;
|
| - };
|
| -
|
| - PersonPopup.prototype.hide_ = function() {
|
| - this.hideTimerID = -1;
|
| - this.popupDetailedElement.style.display = 'none';
|
| - this.visible = false;
|
| - this.delayed = false;
|
| - };
|
| -
|
| - PersonPopup.prototype.handleAnchorMouseMove_ = function(e) {
|
| - e = e || window.event;
|
| -
|
| - var targetElement = (e.target) ? e.target : e.srcElement;
|
| -
|
| - this.pointerOnTargetElement = true;
|
| -
|
| - if (targetElement == this.targetElement) {
|
| - this.x = this.getPointerX_(e);
|
| - this.y = this.getPointerY_(e);
|
| -
|
| - } else {
|
| - this.handleAnchorMouseOver_(e);
|
| - }
|
| - };
|
| -
|
| - PersonPopup.prototype.handleAnchorMouseOver_ = function(e) {
|
| - e = e || window.event;
|
| - var targetElement = (e.target) ? e.target : e.srcElement;
|
| -
|
| - if (this.visible &&
|
| - (targetElement == this.targetElement) &&
|
| - (this.hideTimerID == -1)) {
|
| - return;
|
| - }
|
| -
|
| - this.x = this.getPointerX_(e);
|
| - this.y = this.getPointerY_(e);
|
| -
|
| - if (this.visible &&
|
| - (targetElement != this.targetElement) &&
|
| - (this.pointerCloseEnough_(this.x, this.y))) {
|
| - return;
|
| - }
|
| -
|
| - if (this.delayed && (this.targetElement == targetElement)) {
|
| - return;
|
| - }
|
| -
|
| - this.targetElement = targetElement;
|
| - var screenWidth = self.innerWidth;
|
| - var screenHeight = self.innerHeight;
|
| - var scrollTop = document.documentElement.scrollTop;
|
| - var scrollLeft = document.documentElement.scrollLeft;
|
| - this.targetWidth = 12.7 * 26;
|
| - this.targetHeight = 12.7 * 13;
|
| - this.targetPosX = Math.floor(this.x + 15);
|
| - this.targetPosY = Math.floor(this.y + 20);
|
| -
|
| - if (this.showTimerID != -1) {
|
| - window.clearTimeout(this.showTimerID);
|
| - }
|
| -
|
| - if (this.visible) {
|
| - this.popupDetailedElement.style.display = 'none';
|
| - this.showTimerID =
|
| - window.setTimeout(MPP_bind(this.show_, this), 200);
|
| - } else {
|
| - this.showTimerID =
|
| - window.setTimeout(MPP_bind(this.show_, this), 350);
|
| - }
|
| -
|
| - this.delayed = true;
|
| - this.pointerOutsidePopup = true;
|
| - };
|
| -
|
| - PersonPopup.prototype.handleMouseOut_ = function(e) {
|
| - if ((this.delayed) || (this.visible)) {
|
| -
|
| - this.pointerOnTargetElement = false;
|
| -
|
| - e = e || window.event;
|
| -
|
| - if (e) {
|
| - var from = null;
|
| -
|
| - if (e.relatedTarget) {
|
| - from = e.relatedTarget;
|
| - } else if (e.toElement) {
|
| - from = e.toElement;
|
| - }
|
| -
|
| - var targetElement = (e.target) ? e.target : e.srcElement;
|
| -
|
| - try {
|
| - if ((from == null) || (from.tagName == 'HTML') ||
|
| - (from.tagName.substring(0, 3) == 'xul')) {
|
| - this.hideTimerID =
|
| - window.setTimeout(MPP_bind(this.hide_, this),
|
| - 200);
|
| - }
|
| - } catch(e) {
|
| -
|
| - }
|
| - }
|
| - }
|
| - };
|
| -
|
| - PersonPopup.prototype.handleOnLoad_ = function(e) {
|
| - e = e || window.event;
|
| - this.popupDetailedElement = document.createElement('div');
|
| - this.popupDetailedElement.
|
| - setAttribute('id','popup_detailed');
|
| - this.popupDetailedElement.className = 'popup';
|
| - this.popupDetailedElement.style.display = 'none';
|
| - this.popupDetailedElement.style.position = 'absolute';
|
| - this.popupDetailedElement.innerHTML = ' ';
|
| - document.body.appendChild(this.popupDetailedElement);
|
| -
|
| - document.body.onmousemove = MPP_bind(this.handleMouseMove_, this);
|
| - document.body.onmouseout = MPP_bind(this.handleMouseOut_, this);
|
| - this.enablePopupsForChildElements(document);
|
| -
|
| - runTest1();
|
| - };
|
| -
|
| - PersonPopup.prototype.enablePopupsForChildElements = function(el) {
|
| - var els = el.getElementsByTagName('*');
|
| -
|
| - for (var i = 0, item; item = els[i]; i++) {
|
| - if (item.className.indexOf('showPersonPopup') != -1) {
|
| - item.onmouseover = MPP_bind(this.handleAnchorMouseOver_, this);
|
| - item.onmousemove = MPP_bind(this.handleAnchorMouseMove_, this);
|
| - }
|
| - }
|
| - };
|
| -
|
| - var personPopup = new PersonPopup();
|
| - </script>
|
| - </head>
|
| - <body>
|
| - <p class="byline">
|
| - <a class="showPersonPopup" id="mouse_target" href="dummy">Mouse Over</a>
|
| - </p>
|
| - <div id="log_div">
|
| - This test checks any regressions for fix applied in bug 1112795. To test it manually:
|
| - <li/> Hover mouse over "Mouse Over" link
|
| - <li/> Quickly jump to the yellow box that pops up and select "Select" link
|
| - <li/> Move mouse away so that pop up disappears
|
| - <li/> Press Ctrl-C - this should not cause any crash
|
| - </div>
|
| - </body>
|
| -</html>
|
|
|