Bug 778640 - Final version: Firing devicedisappeared event, create nsIDOMBluetoothDeviceAddressEvent by event generator, r=qdot, r=smaug

---
 dom/bluetooth/BluetoothAdapter.cpp                 |   17 +++++++++++++++-
 dom/bluetooth/Makefile.in                          |    1 +
 .../nsIDOMBluetoothDeviceAddressEvent.idl          |   21 ++++++++++++++++++++
 js/xpconnect/src/event_impl_gen.conf.in            |    3 ++-
 4 files changed, 40 insertions(+), 2 deletions(-)
 create mode 100644 dom/bluetooth/nsIDOMBluetoothDeviceAddressEvent.idl
This commit is contained in:
Gina Yeh 2012-08-17 12:02:52 +08:00
parent 3cb3d79c5f
commit e1defc266b
4 changed files with 39 additions and 1 deletions

View File

@ -14,11 +14,13 @@
#include "BluetoothReplyRunnable.h"
#include "BluetoothUtils.h"
#include "GeneratedEvents.h"
#include "nsDOMClassInfo.h"
#include "nsDOMEvent.h"
#include "nsThreadUtils.h"
#include "nsXPCOMCIDInternal.h"
#include "nsIDOMDOMRequest.h"
#include "nsIDOMBluetoothDeviceAddressEvent.h"
#include "nsContentUtils.h"
#include "mozilla/LazyIdleThread.h"
@ -272,6 +274,19 @@ BluetoothAdapter::Notify(const BluetoothSignal& aData)
nsRefPtr<BluetoothDevice> d = BluetoothDevice::Create(GetOwner(), mPath, aData.value());
nsRefPtr<BluetoothDeviceEvent> e = BluetoothDeviceEvent::Create(d);
e->Dispatch(ToIDOMEventTarget(), NS_LITERAL_STRING("devicefound"));
} else if (aData.name().EqualsLiteral("DeviceDisappeared")) {
const nsAString& deviceAddress = aData.value().get_nsString();
nsCOMPtr<nsIDOMEvent> event;
NS_NewDOMBluetoothDeviceAddressEvent(getter_AddRefs(event), nullptr, nullptr);
nsCOMPtr<nsIDOMBluetoothDeviceAddressEvent> e = do_QueryInterface(event);
e->InitBluetoothDeviceAddressEvent(NS_LITERAL_STRING("devicedisappeared"),
false, false, deviceAddress);
e->SetTrusted(true);
bool dummy;
DispatchEvent(event, &dummy);
} else if (aData.name().EqualsLiteral("PropertyChanged")) {
// Get BluetoothNamedValue, make sure array length is 1
InfallibleTArray<BluetoothNamedValue> arr = aData.value().get_ArrayOfBluetoothNamedValue();

View File

@ -45,6 +45,7 @@ XPIDLSRCS = \
nsIDOMBluetoothAdapter.idl \
nsIDOMBluetoothDevice.idl \
nsIDOMBluetoothDeviceEvent.idl \
nsIDOMBluetoothDeviceAddressEvent.idl \
nsIDOMBluetoothPropertyEvent.idl \
$(NULL)

View File

@ -0,0 +1,21 @@
/* 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 "nsIDOMEvent.idl"
[scriptable, builtinclass, uuid(afcb832f-bbb5-45fa-b703-f8185bd2d26d)]
interface nsIDOMBluetoothDeviceAddressEvent : nsIDOMEvent
{
readonly attribute DOMString deviceAddress;
[noscript] void initBluetoothDeviceAddressEvent(in DOMString aType,
in boolean aCanBubble,
in boolean aCancelable,
in DOMString aDeviceAddress);
};
dictionary BluetoothDeviceAddressEventInit : EventInit
{
DOMString deviceAddress;
};

View File

@ -21,7 +21,8 @@ simple_events = [
'DeviceOrientationEvent',
'DeviceLightEvent',
'MozApplicationEvent',
'DeviceStorageChangeEvent'
'DeviceStorageChangeEvent',
'BluetoothDeviceAddressEvent'
]
""" include file names """