This patch adds an annotation to each assertion for non-main threads in
the BlueZ backend of Bluetooth. This should make is easy and obvious to
see in which context a method or function is expected to run.
The global variables in BluetoothDBusService.cpp are now annotated
for their multi-threading access. Some code still seems to access
some of these variables in an unprotected manner. Follow-up patches
should clean this up.
As a side effect, this patch makes several variables as constant,
which improves correctness of the code.
Until now, we had corner cases in Bluetooth where DBus messages might
have been received on connections that are shutting down. This can't
happen any longer and this patch replaces the respective tests with
assertions.
With this patch, the start code of Bluetooth's BlueZ back mostly
runs on the I/O thread. Only the loading of the BT firmware and
the blocking connection setup is done on the BT thread.
The stop code has been moved to the I/O thread, except for some
initial waiting and the final cleanup of the firmware. The code
doesn't wait for errors anymore when cleaning up the connection
to DBus. This makes it run completely non-blocking. The initial
waiting may later be replaced by something more sophisticated.
The field |number| is missing when REQUEST_QUERY_CALL_FORWARD_STATUS
gets invoked from RilContentHelper.js. This patch adds a test to the
function |queryCallForwardingStatus| for handling this case.
--HG--
extra : rebase_source : c56474a2023434ac3658c7771244c6380ca2a6e0
When starting up RIL, |radioTech| in |voiceRegistrationState| is not
defined before we received REQUEST_VOICE_REGISTRATION_STATE. This
patch adds an extra test to avoid the respective error message.
--HG--
extra : rebase_source : 19927ec9a3892606d81f3209ea470ce297d927d7
The response handler for REQUEST_GET_SMSC_ADDRESS expects the field
|rilMessageType| to be present in its options. This is not the case
if the request was generated from within ril_worker.js.
This patch handles this case by adding an extra test for the existance
of the field. The response handler will return without sending a reply
to the content helper. This is not a problem since the content handler
did not invoke the request anyway.
--HG--
extra : rebase_source : 211d5f4dc29dd99b745bc29d856c291175f156f1
One of the functions in ril_worker.js is supposed to return 'null'
on errors, but returns 'undefined' instead. This patch fixes the
problem.
--HG--
extra : rebase_source : 0f0c1cc06fb4bcb6fe034ab3c88890b351a6cad6
This is caused by bug 967364. We need to hand over data structures
to DBus operations and forget about them if the operation returned
success. Until now, we could just tell their nsRefPtrs to |forget|
about them, but with bug 967364 applied we need to swap an empty
value into the pointer.