Commit 248efa1e authored by Tom Schuster's avatar Tom Schuster Committed by Pier Angelo Vendrame
Browse files

Bug 2030385 - Fix non-contiguous nsIContentAnalysisResponse::Action...

Bug 2030385 - Fix non-contiguous nsIContentAnalysisResponse::Action serializer. r=dlp-reviewers,gstoll

Differential Revision: https://phabricator.services.mozilla.com/D293519
parent 7fc220d8
Loading
Loading
Loading
Loading
+17 −4
Original line number Diff line number Diff line
@@ -73,12 +73,25 @@ struct ParamTraits<mozilla::contentanalysis::NoContentAnalysisResult>
          static_cast<mozilla::contentanalysis::NoContentAnalysisResult>(0),
          mozilla::contentanalysis::NoContentAnalysisResult::LAST_VALUE> {};

struct nsIContentAnalysisResponseActionValidator {
  using IntegralType =
      std::underlying_type_t<nsIContentAnalysisResponse::Action>;

  static bool IsLegalValue(const IntegralType e) {
    return e ==
               IntegralType(nsIContentAnalysisResponse::Action::eUnspecified) ||
           e == IntegralType(nsIContentAnalysisResponse::Action::eReportOnly) ||
           e == IntegralType(nsIContentAnalysisResponse::Action::eWarn) ||
           e == IntegralType(nsIContentAnalysisResponse::Action::eBlock) ||
           e == IntegralType(nsIContentAnalysisResponse::Action::eAllow) ||
           e == IntegralType(nsIContentAnalysisResponse::Action::eCanceled);
  }
};

template <>
struct ParamTraits<nsIContentAnalysisResponse::Action>
    : public ContiguousEnumSerializerInclusive<
          nsIContentAnalysisResponse::Action,
          nsIContentAnalysisResponse::Action::eUnspecified,
          nsIContentAnalysisResponse::Action::eCanceled> {};
    : EnumSerializer<nsIContentAnalysisResponse::Action,
                     nsIContentAnalysisResponseActionValidator> {};

}  // namespace IPC

+3 −0
Original line number Diff line number Diff line
@@ -53,6 +53,9 @@ interface nsIContentAnalysisResponse : nsIContentAnalysisResult
  // These values must stay synchronized with ContentAnalysisResponse
  // in analysis.proto!
  // Action requested in response to a successful analysis.
  //
  // This must also stay in sync with ParamTraits<nsIContentAnalysisResponse::Action> in
  // ContentAnalysisIPCTypes.h!
  cenum Action : 32 {
    eUnspecified = 0,
    eReportOnly = 1,