Allow ValidTraits to be 'inherited'

Real inheritance doesn't work with trait_helpers::AreValidTraits

I.e. this doesn't work:

struct ValidTraits {
  ValidTraits(TraitA);
};

struct ValidTraits2 : public ValidTraits {
  ValidTraits2(TraitB);
};


But we can make this work:

struct ValidTraits {
  ValidTraits(TraitA);
};

struct ValidTraits2 {
  ValidTraits2(ValidTraits);
  ValidTraits2(TraitB);
};

Unfortunately that doesn't work 3 levels deep, but it does fix
the requirements for the BrowserUIThreadScheduler.

Bug: 863341
Change-Id: I059c6db46be3363efcc57f1bee721e697231c888
Reviewed-on: https://chromium-review.googlesource.com/c/1400582
Commit-Queue: Alex Clarke <alexclarke@chromium.org>
Reviewed-by: François Doray <fdoray@chromium.org>
Cr-Commit-Position: refs/heads/master@{#620720}
2 files changed