[AW] Refactor CrashInfo to have all crash keys

Refactor CrashInfo common class to have all crash key-value pairs
extracted from the crash minidump report instead of app package name
and variations only. This will be useful to fix some bugs in the crash
UI.

No method to access variations is provided since it's not used any
where.

Improve test coverage for CrashInfo class:
- Move merge tests from WebViewCrashInfoCollectorTest to CrashInfoTest.
- Make mismatch assert message more readable by implementing
  CrashInfoEqualityMatcher#describeMismatch and reuse the matcher class
  in all tests.
- Add unit tests for parsing and serializing JSON strings.

Bug: 1077783,1073934
Fixed: 1022346,1075648
Test: out/Debug/bin/run_webview_instrumentation_test_apk
Change-Id: Ic65ced7c11b8eb81706d748e9710fef0bb76057a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2196125
Commit-Queue: Hazem Ashmawy <hazems@chromium.org>
Reviewed-by: Richard Coles <torne@chromium.org>
Reviewed-by: Nate Fischer <ntfschr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#769684}
10 files changed
tree: 0e7f1f94d8308d4c91c1ab02b31cc1f97f4ad86c
  1. android_webview/
  2. apps/
  3. ash/
  4. base/
  5. build/
  6. build_overrides/
  7. buildtools/
  8. cc/
  9. chrome/
  10. chromecast/
  11. chromeos/
  12. cloud_print/
  13. components/
  14. content/
  15. courgette/
  16. crypto/
  17. dbus/
  18. device/
  19. docs/
  20. extensions/
  21. fuchsia/
  22. gin/
  23. google_apis/
  24. google_update/
  25. gpu/
  26. headless/
  27. infra/
  28. ios/
  29. ipc/
  30. jingle/
  31. media/
  32. mojo/
  33. native_client_sdk/
  34. net/
  35. pdf/
  36. ppapi/
  37. printing/
  38. remoting/
  39. rlz/
  40. sandbox/
  41. services/
  42. skia/
  43. sql/
  44. storage/
  45. styleguide/
  46. testing/
  47. third_party/
  48. tools/
  49. ui/
  50. url/
  51. weblayer/
  52. .clang-format
  53. .clang-tidy
  54. .eslintrc.js
  55. .git-blame-ignore-revs
  56. .gitattributes
  57. .gitignore
  58. .gn
  59. .vpython
  60. .vpython3
  61. .yapfignore
  62. AUTHORS
  63. BUILD.gn
  64. CODE_OF_CONDUCT.md
  65. codereview.settings
  66. DEPS
  67. ENG_REVIEW_OWNERS
  68. LICENSE
  69. LICENSE.chromium_os
  70. OWNERS
  71. PRESUBMIT.py
  72. PRESUBMIT_test.py
  73. PRESUBMIT_test_mocks.py
  74. README.md
  75. WATCHLISTS
README.md

Logo Chromium

Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.

The project's web site is https://www.chromium.org.

Documentation in the source is rooted in docs/README.md.

Learn how to Get Around the Chromium Source Code Directory Structure .

For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.