Index: Source/core/rendering/style/GridResolvedPosition.h |
diff --git a/Source/bindings/v8/ScriptPromise.h b/Source/core/rendering/style/GridResolvedPosition.h |
similarity index 51% |
copy from Source/bindings/v8/ScriptPromise.h |
copy to Source/core/rendering/style/GridResolvedPosition.h |
index 0a93b10f3b4001fd2ca2ef99e765076c82c3c2f1..39c4a4052083f159e77b5780d0fc419ee4a1fb0c 100644 |
--- a/Source/bindings/v8/ScriptPromise.h |
+++ b/Source/core/rendering/style/GridResolvedPosition.h |
@@ -1,5 +1,5 @@ |
/* |
- * Copyright (C) 2013 Google Inc. All rights reserved. |
+ * Copyright (C) 2012 Igalia S.L. All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions are |
@@ -28,86 +28,77 @@ |
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
-#ifndef ScriptPromise_h |
-#define ScriptPromise_h |
+#ifndef GridResolvedPosition_h |
+#define GridResolvedPosition_h |
-#include "bindings/v8/ScopedPersistent.h" |
-#include "bindings/v8/ScriptValue.h" |
-#include "bindings/v8/V8ScriptRunner.h" |
-#include <v8.h> |
+#include "core/rendering/style/GridPosition.h" |
namespace WebCore { |
-class ExecutionContext; |
+enum GridPositionSide { |
+ ColumnStartSide, |
+ ColumnEndSide, |
+ RowStartSide, |
+ RowEndSide |
+}; |
-// ScriptPromise is the class for representing Promise values in C++ world. |
-// ScriptPromise holds a Promise. |
-// So holding a ScriptPromise as a member variable in DOM object causes |
-// memory leaks since it has a reference from C++ to V8. |
-// |
-class ScriptPromise { |
+class GridResolvedPosition { |
public: |
- // Constructs an empty promise. |
- ScriptPromise() |
- : m_promise() |
+ static size_t adjustGridPositionForAfterEndSide(size_t resolvedPosition) |
{ |
+ return resolvedPosition ? resolvedPosition - 1 : 0; |
} |
- explicit ScriptPromise(const ScriptValue& promise) |
- : m_promise(promise) |
+ static size_t adjustGridPositionForSide(size_t resolvedPosition, GridPositionSide side) |
{ |
- ASSERT(!m_promise.hasNoValue()); |
- } |
+ // An item finishing on the N-th line belongs to the N-1-th cell. |
+ if (side == ColumnEndSide || side == RowEndSide) |
+ return adjustGridPositionForAfterEndSide(resolvedPosition); |
- ScriptPromise(v8::Handle<v8::Value> promise, v8::Isolate* isolate) |
- : m_promise(promise, isolate) |
- { |
- ASSERT(!m_promise.hasNoValue()); |
+ return resolvedPosition; |
} |
- bool isObject() const |
+ GridResolvedPosition() |
+ : m_integerPosition(0) |
{ |
- return m_promise.isObject(); |
} |
- bool isNull() const |
+ GridResolvedPosition(size_t position) |
+ : m_integerPosition(position) |
{ |
- return m_promise.isNull(); |
} |
- bool isUndefinedOrNull() const |
+ GridResolvedPosition(const GridPosition& position, GridPositionSide side) |
{ |
- return m_promise.isUndefined() || m_promise.isNull(); |
- } |
+ size_t integerPosition; |
- v8::Handle<v8::Value> v8Value() const |
- { |
- return m_promise.v8Value(); |
+ ASSERT(position.integerPosition()); |
+ integerPosition = position.integerPosition() - 1; |
+ |
+ m_integerPosition = adjustGridPositionForSide(integerPosition, side); |
} |
- v8::Isolate* isolate() const |
+ size_t integerPosition() const |
{ |
- return m_promise.isolate(); |
+ return m_integerPosition; |
} |
- bool hasNoValue() const |
+ void setIntegerPosition(size_t position) |
{ |
- return m_promise.hasNoValue(); |
+ m_integerPosition = position; |
} |
- void clear() |
+ bool operator==(const GridResolvedPosition& other) const |
{ |
- m_promise.clear(); |
+ return m_integerPosition == other.m_integerPosition; |
} |
- static ScriptPromise createPending(); |
- static ScriptPromise createPending(ExecutionContext*); |
+operator int() const { return m_integerPosition; } |
private: |
- ScriptValue m_promise; |
+ size_t m_integerPosition; |
}; |
} // namespace WebCore |
- |
-#endif // ScriptPromise_h |
+#endif // GridResolvedPosition_h |