gecko-dev/accessible/windows/sdn/sdnAccessible-inl.h
Aaron Klotz 6d37fc005d Bug 1361879: Ensure that sdnAccessible holds a strong reference to its creating AccessibleWrap if it was instantiated as a tearoff; r=tbsaunde
MozReview-Commit-ID: CCgwa7BHUBK

--HG--
extra : rebase_source : 974cadff7b42e3b38ba547b85792b00ebb12aecf
extra : histedit_source : 56a8ed517994bafc02594ba2d9fbf014b47b89da%2C9c63efae8b6a3e056b76c788b6a3f21ddbd27972
2017-05-23 14:40:04 -06:00

47 lines
1.1 KiB
C++

/* -*- 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/. */
#ifndef mozilla_a11y_sdnAccessible_inl_h_
#define mozilla_a11y_sdnAccessible_inl_h_
#include "sdnAccessible.h"
#include "DocAccessible.h"
#include "nsAccessibilityService.h"
namespace mozilla {
namespace a11y {
inline DocAccessible*
sdnAccessible::GetDocument() const
{
return GetExistingDocAccessible(mNode->OwnerDoc());
}
inline AccessibleWrap*
sdnAccessible::GetAccessible()
{
if (mWrap) {
return mWrap;
}
DocAccessible* document = GetDocument();
if (!document) {
return nullptr;
}
// Once we have an accessible, we should hold a reference to it so that we
// may preserve object identity.
mWrap =
static_cast<AccessibleWrap*>(document->GetAccessibleEvenIfNotInMap(mNode));
return mWrap;
}
} // namespace a11y
} // namespace mozilla
#endif // mozilla_a11y_sdnAccessible_inl_h_