blob: 3bb08a37fb6c84b072a2f958b4fec653a8ea3544 [file] [log] [blame]
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// https://discourse.wicg.io/t/proposal-staticrange-to-be-used-instead-of-range-for-new-apis/1472
#include "core/dom/StaticRange.h"
#include "bindings/core/v8/ExceptionState.h"
#include "bindings/core/v8/ScriptState.h"
#include "core/dom/Range.h"
#include "core/frame/LocalDOMWindow.h"
namespace blink {
StaticRange::StaticRange(Document& document)
: m_ownerDocument(document),
m_startContainer(nullptr),
m_startOffset(0),
m_endContainer(nullptr),
m_endOffset(0) {}
StaticRange::StaticRange(Document& document,
Node* startContainer,
int startOffset,
Node* endContainer,
int endOffset)
: m_ownerDocument(document),
m_startContainer(startContainer),
m_startOffset(startOffset),
m_endContainer(endContainer),
m_endOffset(endOffset) {}
void StaticRange::setStart(Node* container, int offset) {
m_startContainer = container;
m_startOffset = offset;
}
void StaticRange::setEnd(Node* container, int offset) {
m_endContainer = container;
m_endOffset = offset;
}
Range* StaticRange::toRange(ExceptionState& exceptionState) const {
Range* range = Range::create(*m_ownerDocument.get());
// Do the offset checking.
range->setStart(m_startContainer, m_startOffset, exceptionState);
range->setEnd(m_endContainer, m_endOffset, exceptionState);
return range;
}
DEFINE_TRACE(StaticRange) {
visitor->trace(m_ownerDocument);
visitor->trace(m_startContainer);
visitor->trace(m_endContainer);
}
} // namespace blink