ipc: Fix dontreply logic when using derived Deferred messages

This is a follow up to Id56e124bbad0870c4a29653289bf021cfdbf4c14.
The previous CL added the right boilerplate but failed to work
as intended end-to-end. The reason was in the callback argument
adaptor in the Deferred class that was always binding the adapter
even when the original callback was empty.
Unfortunately this bug was not unveiled by the unittest because the
test was using the DeferredBase class (without the callback adapter)
and not a derivate like the production code.
This CL fixes the issue and the unittest (verified that the unittest
change alone without the change in deferred.h would have failed).

Test: perfetto_unittests --gtest_filter=ClientImplTest.InvokeMethodDropReply
Change-Id: I6fd11f7c27452526559beeb595641d141f6261f2
2 files changed
tree: 7e4dc4084994dd5b0244211bbbeef5ade571990b
  1. build_overrides/
  2. buildtools/
  3. cts/
  4. debian/
  5. docs/
  6. gn/
  7. include/
  8. infra/
  9. protos/
  10. src/
  11. test/
  12. tools/
  13. .clang-format
  14. .gitignore
  15. .gn
  16. .travis.yml
  17. Android.bp
  18. Android.bp.extras
  19. BUILD.gn
  20. codereview.settings
  21. MODULE_LICENSE_APACHE2
  22. NOTICE
  23. OWNERS
  24. perfetto.rc
  25. PRESUBMIT.py
  26. README.chromium
  27. README.md
README.md

Perfetto - Performance instrumentation and logging for POSIX platforms

This project is meant to be built both as part of the Android tree and from a standalone checkout

For internal docs see this page

Supported platforms

Android is the platform targeted in the first milestones. Right now Linux desktop and OSX are maintained best-effort.

Contributing

This project uses Android AOSP Gerrit for code reviews and uses the Google C++ style. Currently targets -std=c++11.

You can use both git cl upload from Chromium depot tools or Android repo to upload patches.

git cl is quite convenient as it supports code auto-formatting via git cl format.

See https://source.android.com/source/contributing for more details about external contributions and CLA signing.

Build instructions

See docs/build_instructions.md

Running Perfetto

See docs/running_perfetto.md

Continuous integration

Continuous build and test coverage is available at perfetto-ci.appspot.com. Trybots: CLs uploaded to gerrit are automatically submitted to TravisCI within one minute and made available on the CI page above. The relevant code lives in the infra/ directory.

Run tests

On the host (Linux / OSX)

$ tools/ninja -C out/default (tracing_unittests | tracing_benchmarks)
$ out/default/tracing_unittests --gtest_help

On Android

Either connect a device in ADB mode or use the bundled emulator.

To start the emulator:
$ tools/run_android_emulator (arm | arm64) &

To run the tests (either on the emulator or physical device):
$ tools/run_android_test out/default tracing_unittests