Reland^2 "Lacros testing: Make browser init param overriding more robust"

This is a reland of commit c37505129ee027a86b3416141230a27516fba43b,
which was reverted because of unit test failures in CI. These failures
did actually happen in CQ but were hidden there because later reruns
of the tests in isolation passed.

The only change is the weakening of a CHECK in
chromeos/startup/browser_init_params.cc that is necessary as long
as ViewTestsBase is used by both unit (crosapi disabled) and non-unit
(crosapi enabled) tests.

Original change's description:
> Reland "Lacros testing: Make browser init param overriding more robust"
>
> This is a reland of commit e5f6f1434e631cd1c8154a41ee95ce6126688e9a.
> The only difference is: disabling a test that conflicts with
> the new implementation (see b/323984075).
>
> Original change's description:
> > Lacros testing: Make browser init param overriding more robust
> >
> > See chromium:1508245 for context.
> >
> > - Decide whether crosapi is enabled based on the command line
> >   switches. In particular, make it independent of when/whether
> >   BrowserTestBase::SetUp gets called.
> >   We still provide DisableCrosapiForTesting for legacy reasons,
> >   as some tests need to ovrerride it.
> >
> > - This, plus some new checks, make it hard for tests
> >   * to accidentally and silently override the Ash-provided init
> >     params with mostly empty ones, or
> >   * to accidentally and silently prevent the Ash-provided params
> >     from even being read.
> >
> > - Address a TODO in InProcessBrowserTest thanks to these changes.
> >
> > - Call DisableCrosapiForTesting in ViewsTestBase-derived tests that
> >   run with crosapi enabled but are not prepared to set it up (and thus
> >   would fail one of the new checks) and in fact don't need crosapi.
> >
> > - Remove InProcessBrowserTest::IsCrosapiEnabled() in favor of
> >   !chromeos::BrowserParamsProxy::IsCrosapiDisabledForTesting(). There
> >   is no need to have the InProcessBrowserTest predicate and it's not
> >   an InProcessBrowserTest level concept.
> >
> > - Remove ScopedDisableCrosapiForTesting class, as there is no need for
> >   a scope. Tests should either not call DisableCrosapiForTesting at
> >   all or should do it very early on (CHECK'd). Undoing it is not
> >   supported and it's not neceesary because tests run in separate
> >   processes.
> >
> > - Add documentation to startup/README.md.
> >
> > - Remove some uses of IsCrosapiDisabledForTesting from production code
> >   that are no longer needed.
> >
> > Bug: chromium:1508245
> > Change-Id: Id6b68a25dae4c50132f957f4b80879fdcde2e7b2
> > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5076190
> > Reviewed-by: Avi Drissman <avi@chromium.org>
> > Reviewed-by: Hidehiko Abe <hidehiko@chromium.org>
> > Commit-Queue: Georg Neis <neis@chromium.org>
> > Cr-Commit-Position: refs/heads/main@{#1255430}
>
> Bug: chromium:1508245, b/323984075
> Change-Id: I8cced0fe121b3edb757aacc07a706205566cbf24
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5267259
> Auto-Submit: Georg Neis <neis@chromium.org>
> Commit-Queue: Avi Drissman <avi@chromium.org>
> Reviewed-by: Avi Drissman <avi@chromium.org>
> Reviewed-by: Hidehiko Abe <hidehiko@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#1257372}

Bug: chromium:1508245, b/323984075, b/324418102
Change-Id: I49c61ddc09d610962cae6c7bed88f7663d6a7ca5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5281235
Commit-Queue: Georg Neis <neis@chromium.org>
Reviewed-by: Hidehiko Abe <hidehiko@chromium.org>
Reviewed-by: Avi Drissman <avi@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1259615}
24 files changed
tree: 056c4fd0f6635f81d990c04ae820b837efbc138d
  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. codelabs/
  13. components/
  14. content/
  15. courgette/
  16. crypto/
  17. dbus/
  18. device/
  19. docs/
  20. extensions/
  21. fuchsia_web/
  22. gin/
  23. google_apis/
  24. google_update/
  25. gpu/
  26. headless/
  27. infra/
  28. ios/
  29. ipc/
  30. media/
  31. mojo/
  32. native_client_sdk/
  33. net/
  34. pdf/
  35. ppapi/
  36. printing/
  37. remoting/
  38. rlz/
  39. sandbox/
  40. services/
  41. skia/
  42. sql/
  43. storage/
  44. styleguide/
  45. testing/
  46. third_party/
  47. tools/
  48. ui/
  49. url/
  50. webkit/
  51. .clang-format
  52. .clang-tidy
  53. .clangd
  54. .eslintrc.js
  55. .git-blame-ignore-revs
  56. .gitallowed
  57. .gitattributes
  58. .gitignore
  59. .gitmodules
  60. .gn
  61. .mailmap
  62. .rustfmt.toml
  63. .vpython3
  64. .yapfignore
  65. ATL_OWNERS
  66. AUTHORS
  67. BUILD.gn
  68. CODE_OF_CONDUCT.md
  69. codereview.settings
  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. 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.