blob: 86082651cba825c77c47fec3bd983def5b10631e [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