Files
tubestation/accessible/windows/msaa/ApplicationAccessibleWrap.cpp
James Teh 4441ccec15 Bug 1881191 part 1: Don't include MsaaAccessible.h in AccessibleWrap.h. r=nlapre
In a subsequent patch, MsaaAccessible will inherit from uiaRawElmProvider, which is in a different directory.
This causes problems for things outside the a11y module which include (either directly or indirectly) AccessibleWrap.h.
While this could be fixed by exporting more headers, we also end up with type conflicts with Windows API headers.
It's better if we can minimise what gets included anyway.

1. In AccessibleWrap.h, stop including MsaaAccessible.h and forward declare MsaaAccessible.
2. Move the definition of the AccessibleWrap destructor into the cpp. Otherwise, we run into compile errors due to the RefPtr<MsaaAccessible> destructor.
3. AccessibleWrap still has a private UpdateSystemCaretFor function which takes an HWND, which requires windows.h. To avoid including that in AccessibleWrap.h, move it to a static function only inside the cpp file. Rename it to prevent compiler overload confusion.
4. Since code outside the a11y module no longer needs to indirectly include MsaaAccessible, don't export MsaaAccessible.h any more.
5. While we're at it, don't export MsaaIdGenerator.h either, which is never used outside the Windows a11y code.

There should be no functional change here.

Differential Revision: https://phabricator.services.mozilla.com/D202549
2024-02-28 06:50:01 +00:00

45 lines
1.4 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=4:tabstop=4:
*/
/* 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 "ApplicationAccessibleWrap.h"
#include "nsIGfxInfo.h"
#include "AccAttributes.h"
#include "nsServiceManagerUtils.h"
#include "mozilla/Components.h"
#include "MsaaAccessible.h"
using namespace mozilla;
using namespace mozilla::a11y;
////////////////////////////////////////////////////////////////////////////////
// nsISupports
NS_IMPL_ISUPPORTS_INHERITED0(ApplicationAccessibleWrap, ApplicationAccessible)
already_AddRefed<AccAttributes> ApplicationAccessibleWrap::NativeAttributes() {
RefPtr<AccAttributes> attributes = new AccAttributes();
nsCOMPtr<nsIGfxInfo> gfxInfo = components::GfxInfo::Service();
if (gfxInfo) {
bool isD2DEnabled = false;
gfxInfo->GetD2DEnabled(&isD2DEnabled);
RefPtr<nsAtom> attrName = NS_Atomize(u"D2D"_ns);
attributes->SetAttribute(attrName, isD2DEnabled);
}
return attributes.forget();
}
void ApplicationAccessibleWrap::Shutdown() {
// ApplicationAccessible::Shutdown doesn't call AccessibleWrap::Shutdown, so
// we have to call MsaaShutdown here.
if (mMsaa) {
mMsaa->MsaaShutdown();
}
ApplicationAccessible::Shutdown();
}