Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(102)

Side by Side Diff: third_party/WebKit/Source/core/testing/Internals.cpp

Issue 1709003002: Geometry: Reimplement DOMPoint using V8 extras. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 Google Inc. All rights reserved.
3 * Copyright (C) 2013 Apple Inc. All rights reserved. 3 * Copyright (C) 2013 Apple Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 8 *
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 10 matching lines...) Expand all
21 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 21 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 */ 25 */
26 26
27 #include "core/testing/Internals.h" 27 #include "core/testing/Internals.h"
28 28
29 #include "bindings/core/v8/ExceptionMessages.h" 29 #include "bindings/core/v8/ExceptionMessages.h"
30 #include "bindings/core/v8/ExceptionState.h" 30 #include "bindings/core/v8/ExceptionState.h"
31 #include "bindings/core/v8/GeometryInterfaces.h"
31 #include "bindings/core/v8/ScriptFunction.h" 32 #include "bindings/core/v8/ScriptFunction.h"
32 #include "bindings/core/v8/ScriptPromise.h" 33 #include "bindings/core/v8/ScriptPromise.h"
33 #include "bindings/core/v8/ScriptPromiseResolver.h" 34 #include "bindings/core/v8/ScriptPromiseResolver.h"
34 #include "bindings/core/v8/SerializedScriptValue.h" 35 #include "bindings/core/v8/SerializedScriptValue.h"
35 #include "bindings/core/v8/SerializedScriptValueFactory.h" 36 #include "bindings/core/v8/SerializedScriptValueFactory.h"
36 #include "bindings/core/v8/V8IteratorResultValue.h" 37 #include "bindings/core/v8/V8IteratorResultValue.h"
37 #include "bindings/core/v8/V8ThrowException.h" 38 #include "bindings/core/v8/V8ThrowException.h"
38 #include "core/HTMLNames.h" 39 #include "core/HTMLNames.h"
39 #include "core/SVGNames.h" 40 #include "core/SVGNames.h"
40 #include "core/animation/AnimationTimeline.h" 41 #include "core/animation/AnimationTimeline.h"
41 #include "core/css/StyleSheetContents.h" 42 #include "core/css/StyleSheetContents.h"
42 #include "core/css/resolver/StyleResolver.h" 43 #include "core/css/resolver/StyleResolver.h"
43 #include "core/css/resolver/StyleResolverStats.h" 44 #include "core/css/resolver/StyleResolverStats.h"
44 #include "core/css/resolver/ViewportStyleResolver.h" 45 #include "core/css/resolver/ViewportStyleResolver.h"
45 #include "core/dom/ClientRect.h" 46 #include "core/dom/ClientRect.h"
46 #include "core/dom/ClientRectList.h" 47 #include "core/dom/ClientRectList.h"
47 #include "core/dom/DOMArrayBuffer.h" 48 #include "core/dom/DOMArrayBuffer.h"
48 #include "core/dom/DOMNodeIds.h" 49 #include "core/dom/DOMNodeIds.h"
49 #include "core/dom/DOMPoint.h"
50 #include "core/dom/DOMStringList.h" 50 #include "core/dom/DOMStringList.h"
51 #include "core/dom/Document.h" 51 #include "core/dom/Document.h"
52 #include "core/dom/Element.h" 52 #include "core/dom/Element.h"
53 #include "core/dom/ExceptionCode.h" 53 #include "core/dom/ExceptionCode.h"
54 #include "core/dom/Iterator.h" 54 #include "core/dom/Iterator.h"
55 #include "core/dom/NodeComputedStyle.h" 55 #include "core/dom/NodeComputedStyle.h"
56 #include "core/dom/PseudoElement.h" 56 #include "core/dom/PseudoElement.h"
57 #include "core/dom/Range.h" 57 #include "core/dom/Range.h"
58 #include "core/dom/StaticNodeList.h" 58 #include "core/dom/StaticNodeList.h"
59 #include "core/dom/StyleEngine.h" 59 #include "core/dom/StyleEngine.h"
(...skipping 1007 matching lines...) Expand 10 before | Expand all | Expand 10 after
1067 1067
1068 String Internals::rangeAsText(const Range* range) 1068 String Internals::rangeAsText(const Range* range)
1069 { 1069 {
1070 ASSERT(range); 1070 ASSERT(range);
1071 return range->text(); 1071 return range->text();
1072 } 1072 }
1073 1073
1074 // FIXME: The next four functions are very similar - combine them once 1074 // FIXME: The next four functions are very similar - combine them once
1075 // bestClickableNode/bestContextMenuNode have been combined.. 1075 // bestClickableNode/bestContextMenuNode have been combined..
1076 1076
1077 DOMPoint* Internals::touchPositionAdjustedToBestClickableNode(long x, long y, lo ng width, long height, Document* document, ExceptionState& exceptionState) 1077 ScriptValue Internals::touchPositionAdjustedToBestClickableNode(long x, long y, long width, long height, Document* document, ExceptionState& exceptionState)
1078 { 1078 {
1079 ASSERT(document); 1079 ASSERT(document);
1080 if (!document->frame()) { 1080 if (!document->frame()) {
1081 exceptionState.throwDOMException(InvalidAccessError, "The document provi ded is invalid."); 1081 exceptionState.throwDOMException(InvalidAccessError, "The document provi ded is invalid.");
1082 return 0; 1082 return GeometryInterfaces::createDOMPoint();
1083 } 1083 }
1084 1084
1085 document->updateLayout(); 1085 document->updateLayout();
1086 1086
1087 IntSize radius(width / 2, height / 2); 1087 IntSize radius(width / 2, height / 2);
1088 IntPoint point(x + radius.width(), y + radius.height()); 1088 IntPoint point(x + radius.width(), y + radius.height());
1089 1089
1090 EventHandler& eventHandler = document->frame()->eventHandler(); 1090 EventHandler& eventHandler = document->frame()->eventHandler();
1091 IntPoint hitTestPoint = document->frame()->view()->rootFrameToContents(point ); 1091 IntPoint hitTestPoint = document->frame()->view()->rootFrameToContents(point );
1092 HitTestResult result = eventHandler.hitTestResultAtPoint(hitTestPoint, HitTe stRequest::ReadOnly | HitTestRequest::Active | HitTestRequest::ListBased, Layout Size(radius)); 1092 HitTestResult result = eventHandler.hitTestResultAtPoint(hitTestPoint, HitTe stRequest::ReadOnly | HitTestRequest::Active | HitTestRequest::ListBased, Layout Size(radius));
1093 1093
1094 Node* targetNode = 0; 1094 Node* targetNode = 0;
1095 IntPoint adjustedPoint; 1095 IntPoint adjustedPoint;
1096 1096
1097 bool foundNode = eventHandler.bestClickableNodeForHitTestResult(result, adju stedPoint, targetNode); 1097 bool foundNode = eventHandler.bestClickableNodeForHitTestResult(result, adju stedPoint, targetNode);
1098 if (foundNode) 1098 if (foundNode)
1099 return DOMPoint::create(adjustedPoint.x(), adjustedPoint.y()); 1099 return GeometryInterfaces::createDOMPoint(adjustedPoint.x(), adjustedPoi nt.y());
1100 1100
1101 return 0; 1101 return GeometryInterfaces::createDOMPoint();
1102 } 1102 }
1103 1103
1104 Node* Internals::touchNodeAdjustedToBestClickableNode(long x, long y, long width , long height, Document* document, ExceptionState& exceptionState) 1104 Node* Internals::touchNodeAdjustedToBestClickableNode(long x, long y, long width , long height, Document* document, ExceptionState& exceptionState)
1105 { 1105 {
1106 ASSERT(document); 1106 ASSERT(document);
1107 if (!document->frame()) { 1107 if (!document->frame()) {
1108 exceptionState.throwDOMException(InvalidAccessError, "The document provi ded is invalid."); 1108 exceptionState.throwDOMException(InvalidAccessError, "The document provi ded is invalid.");
1109 return 0; 1109 return 0;
1110 } 1110 }
1111 1111
1112 document->updateLayout(); 1112 document->updateLayout();
1113 1113
1114 IntSize radius(width / 2, height / 2); 1114 IntSize radius(width / 2, height / 2);
1115 IntPoint point(x + radius.width(), y + radius.height()); 1115 IntPoint point(x + radius.width(), y + radius.height());
1116 1116
1117 EventHandler& eventHandler = document->frame()->eventHandler(); 1117 EventHandler& eventHandler = document->frame()->eventHandler();
1118 IntPoint hitTestPoint = document->frame()->view()->rootFrameToContents(point ); 1118 IntPoint hitTestPoint = document->frame()->view()->rootFrameToContents(point );
1119 HitTestResult result = eventHandler.hitTestResultAtPoint(hitTestPoint, HitTe stRequest::ReadOnly | HitTestRequest::Active | HitTestRequest::ListBased, Layout Size(radius)); 1119 HitTestResult result = eventHandler.hitTestResultAtPoint(hitTestPoint, HitTe stRequest::ReadOnly | HitTestRequest::Active | HitTestRequest::ListBased, Layout Size(radius));
1120 1120
1121 Node* targetNode = 0; 1121 Node* targetNode = 0;
1122 IntPoint adjustedPoint; 1122 IntPoint adjustedPoint;
1123 document->frame()->eventHandler().bestClickableNodeForHitTestResult(result, adjustedPoint, targetNode); 1123 document->frame()->eventHandler().bestClickableNodeForHitTestResult(result, adjustedPoint, targetNode);
1124 return targetNode; 1124 return targetNode;
1125 } 1125 }
1126 1126
1127 DOMPoint* Internals::touchPositionAdjustedToBestContextMenuNode(long x, long y, long width, long height, Document* document, ExceptionState& exceptionState) 1127 ScriptValue Internals::touchPositionAdjustedToBestContextMenuNode(long x, long y , long width, long height, Document* document, ExceptionState& exceptionState)
1128 { 1128 {
1129 ASSERT(document); 1129 ASSERT(document);
1130 if (!document->frame()) { 1130 if (!document->frame()) {
1131 exceptionState.throwDOMException(InvalidAccessError, "The document provi ded is invalid."); 1131 exceptionState.throwDOMException(InvalidAccessError, "The document provi ded is invalid.");
1132 return 0; 1132 return GeometryInterfaces::createDOMPoint();
1133 } 1133 }
1134 1134
1135 document->updateLayout(); 1135 document->updateLayout();
1136 1136
1137 IntSize radius(width / 2, height / 2); 1137 IntSize radius(width / 2, height / 2);
1138 IntPoint point(x + radius.width(), y + radius.height()); 1138 IntPoint point(x + radius.width(), y + radius.height());
1139 1139
1140 EventHandler& eventHandler = document->frame()->eventHandler(); 1140 EventHandler& eventHandler = document->frame()->eventHandler();
1141 IntPoint hitTestPoint = document->frame()->view()->rootFrameToContents(point ); 1141 IntPoint hitTestPoint = document->frame()->view()->rootFrameToContents(point );
1142 HitTestResult result = eventHandler.hitTestResultAtPoint(hitTestPoint, HitTe stRequest::ReadOnly | HitTestRequest::Active | HitTestRequest::ListBased, Layout Size(radius)); 1142 HitTestResult result = eventHandler.hitTestResultAtPoint(hitTestPoint, HitTe stRequest::ReadOnly | HitTestRequest::Active | HitTestRequest::ListBased, Layout Size(radius));
1143 1143
1144 Node* targetNode = 0; 1144 Node* targetNode = 0;
1145 IntPoint adjustedPoint; 1145 IntPoint adjustedPoint;
1146 1146
1147 bool foundNode = eventHandler.bestContextMenuNodeForHitTestResult(result, ad justedPoint, targetNode); 1147 bool foundNode = eventHandler.bestContextMenuNodeForHitTestResult(result, ad justedPoint, targetNode);
1148 if (foundNode) 1148 if (foundNode)
1149 return DOMPoint::create(adjustedPoint.x(), adjustedPoint.y()); 1149 return GeometryInterfaces::createDOMPoint(adjustedPoint.x(), adjustedPoi nt.y());
1150 1150
1151 return DOMPoint::create(x, y); 1151 return GeometryInterfaces::createDOMPoint(x, y);
1152 } 1152 }
1153 1153
1154 Node* Internals::touchNodeAdjustedToBestContextMenuNode(long x, long y, long wid th, long height, Document* document, ExceptionState& exceptionState) 1154 Node* Internals::touchNodeAdjustedToBestContextMenuNode(long x, long y, long wid th, long height, Document* document, ExceptionState& exceptionState)
1155 { 1155 {
1156 ASSERT(document); 1156 ASSERT(document);
1157 if (!document->frame()) { 1157 if (!document->frame()) {
1158 exceptionState.throwDOMException(InvalidAccessError, "The document provi ded is invalid."); 1158 exceptionState.throwDOMException(InvalidAccessError, "The document provi ded is invalid.");
1159 return 0; 1159 return 0;
1160 } 1160 }
1161 1161
(...skipping 1398 matching lines...) Expand 10 before | Expand all | Expand 10 after
2560 } 2560 }
2561 2561
2562 int Internals::getScrollAnimationState(Node* node) const 2562 int Internals::getScrollAnimationState(Node* node) const
2563 { 2563 {
2564 if (ScrollableArea* scrollableArea = scrollableAreaForNode(node)) 2564 if (ScrollableArea* scrollableArea = scrollableAreaForNode(node))
2565 return static_cast<int>(scrollableArea->scrollAnimator().m_runState); 2565 return static_cast<int>(scrollableArea->scrollAnimator().m_runState);
2566 return -1; 2566 return -1;
2567 } 2567 }
2568 2568
2569 } // namespace blink 2569 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698