Reland of Change ScopedFeatureList to overrides FeatureList not reset (patchset #1 id:1 of https://codereview.chromium.org/2850073002/ )

Reason for revert:
The ASAN failure is fixed at https://codereview.chromium.org/2874693002/.

This patch is ready for reland.

Original issue's description:
> Revert of Change ScopedFeatureList to overrides FeatureList not reset (patchset #6 id:140001 of https://codereview.chromium.org/2834583002/ )
>
> Reason for revert:
> Mac ASAN bots reporting use-after-free errors.
>
> Original issue's description:
> > Change ScopedFeatureList to overrides FeatureList not reset
> >
> > The current situation is that using ScopedFeatureList resets to an
> > empty feature list and then enables/disables an explicit list of
> > features.
> >
> > That's never what you want for browser tests (or other higher-level
> > tests) since it effectively overrides higher-level test configurations
> > (e.g. those in fieldtrial_testing_config.json, or a bot set up to
> > specifically test a feature).
> >
> > In this patch:
> >
> > 1. Keep SFL::Init, SFL::InitWithFeatureList,
> >    SFL::InitFromCommandLine reset to empty list but add warning to
> >    remind developer should use them with care.
> > 2. Change SFL::InitAndEnableFeature, SFL::InitAndDisableFeature and
> >    SFL::InitWithFeatures to not reset but override current FeatureList
> >    with given enables/disables.
> >
> > We also add unit tests for ScopedFeatureList.
> >
> > BUG=713390
> >
> > Review-Url: https://codereview.chromium.org/2834583002
> > Cr-Commit-Position: refs/heads/master@{#468210}
> > Committed: https://chromium.googlesource.com/chromium/src/+/9c04ed553bd7abe820a6a93c5e8981e6738881a9
>
> TBR=isherman@chromium.org,asvitkine@chromium.org,thakis@chromium.org,chaopeng@chromium.org
> # Not skipping CQ checks because original CL landed more than 1 days ago.
> BUG=713390
>
> Review-Url: https://codereview.chromium.org/2850073002
> Cr-Commit-Position: refs/heads/master@{#468263}
> Committed: https://chromium.googlesource.com/chromium/src/+/6c14f269fb196627c72a810205488d694b63a7d5

TBR=isherman@chromium.org,asvitkine@chromium.org,thakis@chromium.org,thestig@chromium.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=713390

Review-Url: https://codereview.chromium.org/2962963002
Cr-Commit-Position: refs/heads/master@{#483631}


CrOS-Libchrome-Original-Commit: 04afdfd65fe04ef71fa9918d8fea0f2bc6356836
3 files changed
tree: 60587cb80351f5d91f3d14404eceed1bd07c835c
  1. base/
  2. build/
  3. components/
  4. dbus/
  5. device/
  6. ipc/
  7. mojo/
  8. testing/
  9. third_party/
  10. ui/