0
Files
src/content/browser/browser_thread_nocompile.nc
Patrick Monette 21c92e6d44 Add GUARDED_BY_BROWSER_THREAD() macro
This is similar to the GUARDED_BY_CONTEXT() macro.

It can be used to ensure at compile time that every access to
a variable is checked with a DCHECK_CURRENTLY_ON() or
CHECK_CURRENTLY_ON() call.

Change-Id: Ic69ee85550613043b71c616e4770b1d178e3f8d9
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5738775
Commit-Queue: Patrick Monette <pmonette@chromium.org>
Reviewed-by: Avi Drissman <avi@chromium.org>
Reviewed-by: Reilly Grant <reillyg@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1335038}
2024-07-30 19:31:39 +00:00

36 lines
1.1 KiB
Plaintext

// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// This is a "No Compile Test" suite.
// https://dev.chromium.org/developers/testing/no-compile-tests
#include "content/public/browser/browser_thread.h"
namespace content {
class LivesOnUIThread {
public:
void BuggyCounterAccess();
void BuggyIncrementCall();
void Increment() VALID_BROWSER_THREAD_REQUIRED(BrowserThread::UI) {
++counter_;
}
private:
int counter_ GUARDED_BY_BROWSER_THREAD(BrowserThread::UI);
};
void LivesOnUIThread::BuggyCounterAccess() {
// Member access without (DCHECK|CHECK)_CURRENTLY_ON() assertion.
++counter_; // expected-error {{writing variable 'counter_' requires holding BrowserThread checker 'GetBrowserThreadChecker(UI)' exclusively}}
}
void LivesOnUIThread::BuggyIncrementCall() {
// Function call without (DCHECK|CHECK)_CURRENTLY_ON() assertion.
Increment(); // expected-error {{calling function 'Increment' requires holding BrowserThread checker 'GetBrowserThreadChecker(UI)' exclusively}}
}
} // namespace content