2014-02-27 08:33:09 -08:00
|
|
|
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
|
|
/* vim: set ts=2 et sw=2 tw=80: */
|
|
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
|
|
|
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
|
|
|
|
#include "xpcAccessibleTextRange.h"
|
|
|
|
|
|
|
|
#include "HyperTextAccessible.h"
|
|
|
|
#include "TextRange.h"
|
|
|
|
|
|
|
|
using namespace mozilla;
|
|
|
|
using namespace mozilla::a11y;
|
|
|
|
|
2014-04-16 05:50:28 -07:00
|
|
|
// nsISupports and cycle collection
|
|
|
|
|
|
|
|
NS_IMPL_CYCLE_COLLECTION_3(xpcAccessibleTextRange,
|
|
|
|
mRange.mRoot,
|
|
|
|
mRange.mStartContainer,
|
|
|
|
mRange.mEndContainer)
|
|
|
|
|
|
|
|
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(xpcAccessibleTextRange)
|
|
|
|
NS_INTERFACE_MAP_ENTRY(nsIAccessibleTextRange)
|
|
|
|
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIAccessibleTextRange)
|
|
|
|
NS_INTERFACE_MAP_END
|
|
|
|
|
|
|
|
NS_IMPL_CYCLE_COLLECTING_ADDREF(xpcAccessibleTextRange)
|
|
|
|
NS_IMPL_CYCLE_COLLECTING_RELEASE(xpcAccessibleTextRange)
|
2014-02-27 08:33:09 -08:00
|
|
|
|
|
|
|
// nsIAccessibleTextRange
|
|
|
|
|
|
|
|
NS_IMETHODIMP
|
|
|
|
xpcAccessibleTextRange::GetStartContainer(nsIAccessible** aAnchor)
|
|
|
|
{
|
|
|
|
NS_ENSURE_ARG_POINTER(aAnchor);
|
2014-04-16 05:50:28 -07:00
|
|
|
NS_IF_ADDREF(*aAnchor = static_cast<nsIAccessible*>(mRange.StartContainer()));
|
2014-02-27 08:33:09 -08:00
|
|
|
return NS_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
NS_IMETHODIMP
|
|
|
|
xpcAccessibleTextRange::GetStartOffset(int32_t* aOffset)
|
|
|
|
{
|
|
|
|
NS_ENSURE_ARG_POINTER(aOffset);
|
|
|
|
*aOffset = mRange.StartOffset();
|
|
|
|
return NS_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
NS_IMETHODIMP
|
|
|
|
xpcAccessibleTextRange::GetEndContainer(nsIAccessible** aAnchor)
|
|
|
|
{
|
|
|
|
NS_ENSURE_ARG_POINTER(aAnchor);
|
2014-04-16 05:50:28 -07:00
|
|
|
NS_IF_ADDREF(*aAnchor = static_cast<nsIAccessible*>(mRange.EndContainer()));
|
2014-02-27 08:33:09 -08:00
|
|
|
return NS_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
NS_IMETHODIMP
|
|
|
|
xpcAccessibleTextRange::GetEndOffset(int32_t* aOffset)
|
|
|
|
{
|
|
|
|
NS_ENSURE_ARG_POINTER(aOffset);
|
|
|
|
*aOffset = mRange.EndOffset();
|
|
|
|
return NS_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
NS_IMETHODIMP
|
|
|
|
xpcAccessibleTextRange::GetText(nsAString& aText)
|
|
|
|
{
|
|
|
|
nsAutoString text;
|
|
|
|
mRange.Text(text);
|
|
|
|
aText.Assign(text);
|
|
|
|
|
|
|
|
return NS_OK;
|
|
|
|
}
|