Source code

Revision control

Copy as Markdown

Other Tools

# HTA Reviewer Checklist
Use this checklist to identify specific issues based on the contributor's
affiliation.
## 1. Process & Formalities (Mandatory for Externals)
- [ ] **CLA**: Has the contributor signed the CLA?
- [ ] **AUTHORS**: Is the contributor (or their organization) listed in the
\`AUTHORS\` file?
- [ ] **Bug Line**: Does the commit message have a \`Bug:\` line? (e.g.,
\`webrtc:XXXX\` or \`chromium:XXXX\`).
- [ ] **Freshness**: Is the CL rebased against the tip-of-tree?
## 2. Standards & Specs (All Contributors)
- [ ] **W3C/IETF Compliance**: Does the logic match the relevant specification
(e.g., WebRTC-PC, SCTP, RTP)? Flag implementations that use arbitrary error
codes or behaviors that deviate from the spec.
- [ ] **C++ Style Guide**: Ensure strict adherence to the Google C++ Style Guide
(e.g., \`nullptr\` vs \`NULL\`).
## 3. Technical Review (All Contributors)
### Thread Safety & Concurrency
- [ ] Are member variables guarded? Use \`RTC_GUARDED_BY(checker\_)\`.
- [ ] Are methods asserting their thread context? Use
\`RTC_DCHECK_RUN_ON(&checker\_)\`.
- [ ] Is \`SequenceChecker\` initialized in the constructor?
- [ ] Avoid \`BlockingCall\` unless absolutely necessary (and justified).
### Modern C++ Standards
- [ ] **No \`rtc::\` namespace**: The \`rtc\` namespace is obsolete. Types
should be in the \`webrtc\` namespace.
- [ ] **Pointers**: Use \`nullptr\`, never \`NULL\`.
- [ ] **Smart Pointers**: Prefer \`std::unique_ptr\` and \`absl::WrapUnique\`
for local socket/resource management to ensure cleanup on all return paths.
- [ ] **String Views**: Prefer \`absl::string_view\` over \`std::string_view\`.
- [ ] **Span**: Use \`std::span\` for array views (migrated from \`ArrayView\`).
- [ ] **Time**: Use \`webrtc::Timestamp\` or \`webrtc::TimeDelta\` instead of
raw \`int\` or \`int64_t\` for time values.
- [ ] **Logging**: Use \`AbslStringify\` in \`RTC_LOG\` statements. Avoid
explicit \`.ToString()\` or \`TypeToString()\` calls.
### API & Architectural Design
- [ ] **New Virtual Methods (api/ only)**: If adding a virtual method to a base
class in the \`api/\` directory, provide a default implementation (e.g., \`{
RTC_DCHECK_NOTREACHED(); }\`) to avoid breaking downstream implementations.
- [ ] **Visibility**: Is the \`visibility\` in \`BUILD.gn\` as restrictive as
possible?
- [ ] **Field Trials**: Ensure field trials are passed from the \`Environment\`.
Are new trials registered in \`g3doc/field-trials.md\`?
### Testing
- [ ] **Assertions**: Use \`ASSERT_EQ\` (or similar) instead of \`EXPECT_EQ\` if
the condition is a prerequisite for the test's validity.
- [ ] **Boilerplate**: Avoid excessive setup code in integration tests; leverage
existing fixtures or helper classes.
## 4. Code Hygiene (All Contributors)
- [ ] **No Commented-out Code**: If it's not needed, delete it.
- [ ] **No Trailing Spaces**: Clean up whitespace.
- [ ] **TO​DO markers**: Follow the format \`// TO​DO: webrtc:XXXX -
Description\`.
- [ ] **Naming**: Avoid overly shortened names (e.g., use \`InvalidParameters\`
instead of \`InvParam\`).