extensions: Port chrome.permissions API to desktop Android

The port is straightforward except for a check for the active window.
This is used to show dialogs, which we don't support yet on Android,
so just ifdef it out.

Refactor the unit tests so most of them can run without a Browser or
BrowserWindow instance. ifdef out the remaining ones. The browser
test looks trickier, so will come in a followup CL.

Add check for ENABLE_EXTENSIONS (not core) to the header for
ChromeExtensionFunctionDetails, since it doesn't work yet on Android.
This reveals some IWYU issues, and a place where references need to
be ifdef'd out (chrome.tabs is a stub on Android anyhow).

Bug: 393147570
Change-Id: I37265a20ef064f5c21fc525a3d36bc980b5a4067
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6625237
Commit-Queue: Michael Wojcicka <mwoj@google.com>
Reviewed-by: Michael Wojcicka <mwoj@google.com>
Auto-Submit: James Cook <jamescook@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1470631}
19 files changed
tree: 2d14bd1007738553f35bdc697c4049bd03b07455
  1. .github/
  2. android_webview/
  3. apps/
  4. ash/
  5. base/
  6. build/
  7. build_overrides/
  8. buildtools/
  9. cc/
  10. chrome/
  11. chromecast/
  12. chromeos/
  13. codelabs/
  14. components/
  15. content/
  16. crypto/
  17. dbus/
  18. device/
  19. docs/
  20. extensions/
  21. fuchsia_web/
  22. gin/
  23. google_apis/
  24. gpu/
  25. headless/
  26. infra/
  27. ios/
  28. ipc/
  29. media/
  30. mojo/
  31. native_client_sdk/
  32. net/
  33. pdf/
  34. ppapi/
  35. printing/
  36. remoting/
  37. rlz/
  38. sandbox/
  39. services/
  40. skia/
  41. sql/
  42. storage/
  43. styleguide/
  44. testing/
  45. third_party/
  46. tools/
  47. ui/
  48. url/
  49. webkit/
  50. .clang-format
  51. .clang-tidy
  52. .clangd
  53. .git-blame-ignore-revs
  54. .gitallowed
  55. .gitattributes
  56. .gitignore
  57. .gitmodules
  58. .gn
  59. .mailmap
  60. .rustfmt.toml
  61. .vpython3
  62. .yapfignore
  63. ATL_OWNERS
  64. AUTHORS
  65. BUILD.gn
  66. CODE_OF_CONDUCT.md
  67. codereview.settings
  68. CPPLINT.cfg
  69. CRYPTO_OWNERS
  70. DEPS
  71. DIR_METADATA
  72. LICENSE
  73. LICENSE.chromium_os
  74. OWNERS
  75. PRESUBMIT.py
  76. PRESUBMIT_test.py
  77. PRESUBMIT_test_mocks.py
  78. README.md
  79. SECURITY_OWNERS
  80. 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.

To check out the source code locally, don't use git clone! Instead, follow the instructions on how to get the code.

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.

If you found a bug, please file it at https://crbug.com/new.