mirror of
https://github.com/roytam1/palemoon27.git
synced 2026-05-26 14:18:48 +00:00
0e560e6a54
- Bug 1214139 - Connect to HFP, A2DP, and AVRCP if CoD is invalid, r=shuang (459ec4b233)
- bits of Bug 1156229: Make ref-counted class destructors non-public (dc7a57b259)
- Bug 1228909 - Fix PDU packing in |ClientSetAdvDataCmd| for GATT API. r=brsun (08d7ecc898)
- Bug 1228946: Remove '#if 0' block from Bluetooth module, r=joliu (b5f0503541)
- Bug 1209085: Replace simple init ops by |UnpackPDUInitOp| in Blutooth HFP backend, r=joliu (5783c5826c)
- Bug 1211948: Remove registry interfaces from |BluetoothDaemonProtocol|, r=brsun (c7b21bac78)
- Bug 1223804 - remove unused container macro; r=btian (de2e51ddec)
- Bug 1228471 - use Endian.h to write filename and handleId into OBEX packet, r=shuang (38225c81ac)
- Bug 1211435: Cleanup AVRCP interfaces when Bluetooth adapter gets switched off, r=shuang (52d318d250)
- cleanup old BT files (93589e8581)
- Bug 1132343 - Patch2: Replace setPairingConfirmation() with accept() in marionette test due to API change. r=shuang (37645d2d0f)
- Bug 1139774 - Add a function to wait promise for bluetooth adapter creation. r=shuang (cb66b22bc7)
- var-let (aedeed6516)
- Bug 1178654 - Fix the uuid length when parsing bluetooth low energy advertisement data. r=btian (88118d5f2f)
- Bug 1170076 - Use snprintf instead of sprintf when parsing bluetooth GATT advertisement data. r=shuang (3ede2b3a98)
- Bug 1166231 - patch 2 - BluetoothOppManager blob uses fixed CLOSED TREE (559f9cdd90)
- Bug 1178076 - MessagePort should not set listeners nor workerFeature when neutered, r=smaug (ac527766ed)
- Bug 1177727 - MessagePort should call RemoveObserver before calling Release(), r=mccr8 (8d59127b35)
- Bug 1224825 - Race condition in MessagePort::close - patch 1, r=smaug (c655fbfec7)
- Bug 1224825 - Race condition in MessagePort::close - patch 2, r=smaug (fbb702e748)
- Bug 1187115 - Replace nsBaseHashtable::EnumerateRead() calls in dom/{bluetooth,messagechannel}/ with iterators. r=khuey. (40e8a81d13)
- Bug 1185531 - Wrong NS_WARN_IF use in MessagePort.cpp, r=smaug (47077031e4)
- Bug 1181595 - Improve null checks in MessagePort::RemoveDocFromBFCache, r=smaug (f9964384e9)
- fix misspatch of 1180555 (0f9e3b5383)
- Bug 1181595 - MessagePortChild should check if the MessagePort is still alive before dispatching messages, r=smaug (3dd0ca3bac)
- namespace fix (1288e86370)
- Bug 1224061: Fuck bluetooth. r=me CLOSED TREE (b952a5e008)
- Bug 1159650 - Remove incorrect value assertions in BluetoothGattCharacteristic and BluetoothGattDescriptor. r=btian (97376c7d95)
- missing bit of 1140952 (da07ba9392)
- Bug 1194153 - Chrome Registry's convertChromeURL shouldn't crash when given a null url, r=bsmedberg. (aeea438643)
- Bug 1203900 - Fix cycle collection and array buffer creation bug in the implementation of MediaKeyMessageEvent, MediaEncryptedEvent, and BluetoothLeDeviceEvent. r=bz (e30c13f078)
- Bug 1137601 - Fire onadapterremoved before onattributechanged in BluetoothManager, f=jocelyn, r=shuang (4920faebd8)
- Bug 1228479 - Remove redundant blob handling in BluetoothMapRequestHandle::ReplyToFolderListing, r=shuang (a4cda2f71c)
- Bug 1227380 - Move LOCAL_INCLUDES and CXXFLAGS to moz.build in dom/bindings/. r=mshal (2ba98b8c3b)
- Bug 1227987: Simplify CGDOMJSClass::define. r=bz. (bc2686e68a)
- Bug 1229176 - make check for ChromeOnly interfaces for header inclusion more complete; r=bz (506d0b9572)
- Bug 1230291. Correctly include nsContentUtils when generating a manual hasInstance with nsIDOM* stuff or when we have a JS-implemented interface with clearable cached attrs (852e9c3c9e)
- Bug 1229031. Make sure to not init binding pref var caches on worker threads. r=smaug (ae495709cd)
- Bug 1226448. Fix Optional::Construct to do perfect forwarding, and fix the dictionary assignment operator code for members that can have missing values to not try constructing and already constructed member. r=jib (e67eff372e)
- bug 1196460 - add class for wrapping proxies of document accessibles r=surkov (8ec0276e4b)
- Bug 1210549 - Make proxied accessibles defunct when proxy dies r=tbsaunde (ab0fabf2a4)
- bug 1196460 - make the ctor of HyperTextProxyAccessiblewrap public r=surkov (2f3c9ef441)
- bug 1196460 - make IsDoc() return true for wrappers of proxied documents r=surkov (59f0d68130)
- bug 1196460 - provide mapping from id to accessible in DocProxyAccessibleWrap (359a45ddef)
- bug 1168204 - Expose more interfaces to windows for proxied accessibles r=davidb (9db556118a)
- bug 1213327 - expose iAccessibleHyperlink on proxied accessibles r=davidb (935ae7d3df)
- bug 1159828 - make ia2Hyperlink use proxies r=davidb (2d9982d7e3)
- bug 1168202 - ia2AccessibleHyperlink::get_anchor needs to give the caller a reference to the anchor r=davidb (7ea462a6ce)
- bug 1159741 - make ia2HyperText use proxies r=davidb (47fa0bb381)
- bug 1159850 - make ia2Accessiblevalue use proxies r=davidb (b1731c4019)
- Bug 830801 - Part 2. Remove NOMINMAX define from moz.build. r=mshal (0d8375058c)
- Bug 1166169 - Add MOZ_GONK_MEDIACODEC in configure and define it in moz.build. r=cpearce, r=glandium (5ffba1b95d)
- Bug 1200492 - Do not add the top source directory to the include path in dom/canvas; r=gps (eb72451eaf)
- Bug 1226868: Fix test metadata to correctly check things and verify that it has done so afterwards. r=bz (5354c2b3fc)
- Bug 1220565 - Remove non-standard comprehension from addon-sdk/. r=mossop (95a732e149)
- Bug 1146926: Allow attaching a worker to a CPOW window without invoking CPOW operations. r=gabor (590192deec)
- Bug 1228975 - Remove Array generics usage from Places code. r=mak (dd5cc6efca)
- Bug 1217225 - Differentiate between images optimized for skia and skia-gl in the CanvasImageCache. r=mstange (79eaf016f8)
- Bug 1213491 - Change CanvasRenderingContext2D::ContextState::clipsPushed to an nsTArray. r=nical (ae43fc69d2)
- Bug 1163105 - Flush frames before building the filter. r=roc (05b2980b24)
- Bug 655328 - clip canvas drawImage source/dest rectangles instead of throwing IndexSizeError. r=jmuizelaar (9f5274375b)
- Bug 696630 - Take imageSmoothingEnabled into account when creating pattern fills. r=mattwoodrow (f2c99c9cfb)
- Bug 1228287 - Make sure we can't do SkiaGL without the pref set. r=benwa (552495d3c5)
- Bug 1222083 - verify that a Skia GL context is actually available before trying to use it in Canvas2D drawImage. r=jmuizelaar (1c8cf4ba63)
- Bug 1190210 - Part 1: Avoid wrong memory accessing in CropAndCopyDataSourceSurface(). r=smaug (a035874da0)
- Bug 1190210 - Part 2: Make sure the size of created ImageBitmap is the same as the intented cropping area. r=roc (5a80cf8dae)
- Bug 1190210 - Part 3: Fix the assertion in create-from-blob case. r=smaug (4ff1045b98)
- Bug 1190210 - Part 4: Test cases. r=smaug (8ef4c6f293)
- Bug 1224647 - part1 - remove ErrorResult in the creating ImageBitmap from ImageData code path; r=bz (78792f46d1)
- Bug 1224647 - part2 - remove ErrorResult in the creating ImageBitmap from Blob code path; r=bz (de719d4eca)
- Bug 1215414 - Fix ClearBuffer taking TypedArrays. r=jgilbert (22b34bd418)
- Bug 1209384 - Check active query has same type as target. r=jgilbert (483fbce55a)
- Bug 1220783. Map GetUniformIndices names. r=jgilbert (f7c7b03a4d)
- Bug 1228488 - Return INVALID_ENUM for GL_UNIFORM_NAME_LENGTH. r=jgilbert (826a05df79)
- Bug 1228949 - Fix WebGLBuffer content type when the target is LOCAL_GL_COPY_READ_BUFFER or LOCAL_GL_COPY_WRITE_BUFFER. r=jgilbert (a6ecdbce69)
- Bug 1186666 - clamp gl ClearDepth() value to [0,1]. r=jgilbert (c0ee2d0375)
- Bug 1171021. Rewrite SetFullAlpha to choose one method of iterating. (cd48866843)
229 lines
4.9 KiB
C++
229 lines
4.9 KiB
C++
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim:expandtab:shiftwidth=2:tabstop=2:
|
|
*/
|
|
/* 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 "Accessible2.h"
|
|
#include "AccessibleHyperlink.h"
|
|
#include "AccessibleHyperlink_i.c"
|
|
|
|
#include "AccessibleWrap.h"
|
|
#include "IUnknownImpl.h"
|
|
#include "nsIURI.h"
|
|
|
|
using namespace mozilla::a11y;
|
|
|
|
// IUnknown
|
|
|
|
STDMETHODIMP
|
|
ia2AccessibleHyperlink::QueryInterface(REFIID iid, void** ppv)
|
|
{
|
|
if (!ppv)
|
|
return E_INVALIDARG;
|
|
|
|
*ppv = nullptr;
|
|
|
|
if (IID_IAccessibleHyperlink == iid) {
|
|
auto accWrap = static_cast<AccessibleWrap*>(this);
|
|
if (accWrap->IsProxy() ?
|
|
!(accWrap->ProxyInterfaces() & Interfaces::HYPERLINK) :
|
|
!accWrap->IsLink())
|
|
return E_NOINTERFACE;
|
|
|
|
*ppv = static_cast<IAccessibleHyperlink*>(this);
|
|
(reinterpret_cast<IUnknown*>(*ppv))->AddRef();
|
|
return S_OK;
|
|
}
|
|
|
|
return ia2AccessibleAction::QueryInterface(iid, ppv);
|
|
}
|
|
|
|
// IAccessibleHyperlink
|
|
|
|
STDMETHODIMP
|
|
ia2AccessibleHyperlink::get_anchor(long aIndex, VARIANT* aAnchor)
|
|
{
|
|
A11Y_TRYBLOCK_BEGIN
|
|
|
|
if (!aAnchor)
|
|
return E_INVALIDARG;
|
|
|
|
VariantInit(aAnchor);
|
|
|
|
Accessible* thisObj = static_cast<AccessibleWrap*>(this);
|
|
if (thisObj->IsProxy()) {
|
|
ProxyAccessible* anchor = thisObj->Proxy()->AnchorAt(aIndex);
|
|
if (!anchor)
|
|
return S_FALSE;
|
|
|
|
IUnknown* tmp = static_cast<IAccessibleHyperlink*>(WrapperFor(anchor));
|
|
tmp->AddRef();
|
|
aAnchor->punkVal = tmp;
|
|
aAnchor->vt = VT_UNKNOWN;
|
|
return S_OK;
|
|
}
|
|
|
|
if (thisObj->IsDefunct())
|
|
return CO_E_OBJNOTCONNECTED;
|
|
|
|
if (aIndex < 0 || aIndex >= static_cast<long>(thisObj->AnchorCount()))
|
|
return E_INVALIDARG;
|
|
|
|
if (!thisObj->IsLink())
|
|
return S_FALSE;
|
|
|
|
AccessibleWrap* anchor =
|
|
static_cast<AccessibleWrap*>(thisObj->AnchorAt(aIndex));
|
|
if (!anchor)
|
|
return S_FALSE;
|
|
|
|
void* instancePtr = nullptr;
|
|
HRESULT result = anchor->QueryInterface(IID_IUnknown, &instancePtr);
|
|
if (FAILED(result))
|
|
return result;
|
|
|
|
IUnknown* unknownPtr = static_cast<IUnknown*>(instancePtr);
|
|
aAnchor->ppunkVal = &unknownPtr;
|
|
aAnchor->vt = VT_UNKNOWN;
|
|
return S_OK;
|
|
|
|
A11Y_TRYBLOCK_END
|
|
}
|
|
|
|
STDMETHODIMP
|
|
ia2AccessibleHyperlink::get_anchorTarget(long aIndex, VARIANT* aAnchorTarget)
|
|
{
|
|
A11Y_TRYBLOCK_BEGIN
|
|
|
|
if (!aAnchorTarget)
|
|
return E_INVALIDARG;
|
|
|
|
VariantInit(aAnchorTarget);
|
|
|
|
Accessible* thisObj = static_cast<AccessibleWrap*>(this);
|
|
nsAutoCString uriStr;
|
|
if (thisObj->IsProxy()) {
|
|
bool ok;
|
|
thisObj->Proxy()->AnchorURIAt(aIndex, uriStr, &ok);
|
|
if (!ok)
|
|
return S_FALSE;
|
|
|
|
} else {
|
|
if (thisObj->IsDefunct())
|
|
return CO_E_OBJNOTCONNECTED;
|
|
|
|
if (aIndex < 0 || aIndex >= static_cast<long>(thisObj->AnchorCount()))
|
|
return E_INVALIDARG;
|
|
|
|
if (!thisObj->IsLink())
|
|
return S_FALSE;
|
|
|
|
nsCOMPtr<nsIURI> uri = thisObj->AnchorURIAt(aIndex);
|
|
if (!uri)
|
|
return S_FALSE;
|
|
|
|
nsresult rv = uri->GetSpec(uriStr);
|
|
if (NS_FAILED(rv))
|
|
return GetHRESULT(rv);
|
|
}
|
|
|
|
nsAutoString stringURI;
|
|
AppendUTF8toUTF16(uriStr, stringURI);
|
|
|
|
aAnchorTarget->vt = VT_BSTR;
|
|
aAnchorTarget->bstrVal = ::SysAllocStringLen(stringURI.get(),
|
|
stringURI.Length());
|
|
return aAnchorTarget->bstrVal ? S_OK : E_OUTOFMEMORY;
|
|
|
|
A11Y_TRYBLOCK_END
|
|
}
|
|
|
|
STDMETHODIMP
|
|
ia2AccessibleHyperlink::get_startIndex(long* aIndex)
|
|
{
|
|
A11Y_TRYBLOCK_BEGIN
|
|
|
|
if (!aIndex)
|
|
return E_INVALIDARG;
|
|
|
|
*aIndex = 0;
|
|
|
|
if (ProxyAccessible* proxy = HyperTextProxyFor(this)) {
|
|
bool valid;
|
|
*aIndex = proxy->StartOffset(&valid);
|
|
return valid ? S_OK : S_FALSE;
|
|
}
|
|
|
|
Accessible* thisObj = static_cast<AccessibleWrap*>(this);
|
|
if (thisObj->IsDefunct())
|
|
return CO_E_OBJNOTCONNECTED;
|
|
|
|
if (!thisObj->IsLink())
|
|
return S_FALSE;
|
|
|
|
*aIndex = thisObj->StartOffset();
|
|
return S_OK;
|
|
|
|
A11Y_TRYBLOCK_END
|
|
}
|
|
|
|
STDMETHODIMP
|
|
ia2AccessibleHyperlink::get_endIndex(long* aIndex)
|
|
{
|
|
A11Y_TRYBLOCK_BEGIN
|
|
|
|
if (!aIndex)
|
|
return E_INVALIDARG;
|
|
|
|
*aIndex = 0;
|
|
|
|
if (ProxyAccessible* proxy = HyperTextProxyFor(this)) {
|
|
bool valid;
|
|
*aIndex = proxy->EndOffset(&valid);
|
|
return valid ? S_OK : S_FALSE;
|
|
}
|
|
|
|
Accessible* thisObj = static_cast<AccessibleWrap*>(this);
|
|
if (thisObj->IsDefunct())
|
|
return CO_E_OBJNOTCONNECTED;
|
|
|
|
if (!thisObj->IsLink())
|
|
return S_FALSE;
|
|
|
|
*aIndex = thisObj->EndOffset();
|
|
return S_OK;
|
|
|
|
A11Y_TRYBLOCK_END
|
|
}
|
|
|
|
STDMETHODIMP
|
|
ia2AccessibleHyperlink::get_valid(boolean* aValid)
|
|
{
|
|
A11Y_TRYBLOCK_BEGIN
|
|
|
|
if (!aValid)
|
|
return E_INVALIDARG;
|
|
|
|
*aValid = false;
|
|
|
|
if (ProxyAccessible* proxy = HyperTextProxyFor(this)) {
|
|
*aValid = proxy->IsLinkValid();
|
|
return S_OK;
|
|
}
|
|
|
|
Accessible* thisObj = static_cast<AccessibleWrap*>(this);
|
|
if (thisObj->IsDefunct())
|
|
return CO_E_OBJNOTCONNECTED;
|
|
|
|
if (!thisObj->IsLink())
|
|
return S_FALSE;
|
|
|
|
*aValid = thisObj->IsLinkValid();
|
|
return S_OK;
|
|
|
|
A11Y_TRYBLOCK_END
|
|
}
|
|
|