Skip to content

Commit

Permalink
Stop using macros to paste together names for static_asserts.
Browse files Browse the repository at this point in the history
This unifies all the static assert macros to be:
- Named STATIC_ASSERT_ENUM
- Use static_cast<int>() instead of other disallowed casts.
- Take the full enum name as an input so that code search and rewriter
  tools etc can find the actual thing being done by the code.

This will allow the rewrite_to_chrome_style tool to change blink enum
names and fix these places up too so things compile.

R=thakis@chromium.org
TBR=sievers,raymes
BUG=584474

Review URL: https://codereview.chromium.org/1676703002

Cr-Commit-Position: refs/heads/master@{#373970}
  • Loading branch information
danakj authored and Commit bot committed Feb 6, 2016
1 parent 3da433f commit 365175c
Show file tree
Hide file tree
Showing 15 changed files with 1,120 additions and 1,146 deletions.
19 changes: 9 additions & 10 deletions components/printing/renderer/print_web_view_helper.cc
Original file line number Diff line number Diff line change
Expand Up @@ -58,16 +58,15 @@ namespace printing {

namespace {

#define STATIC_ASSERT_PP_MATCHING_ENUM(a, b) \
static_assert(static_cast<int>(a) == static_cast<int>(b), \
"mismatching enums: " #a)

// Check blink::WebDuplexMode and printing::DuplexMode are kept in sync.
STATIC_ASSERT_PP_MATCHING_ENUM(blink::WebUnknownDuplexMode,
UNKNOWN_DUPLEX_MODE);
STATIC_ASSERT_PP_MATCHING_ENUM(blink::WebSimplex, SIMPLEX);
STATIC_ASSERT_PP_MATCHING_ENUM(blink::WebLongEdge, LONG_EDGE);
STATIC_ASSERT_PP_MATCHING_ENUM(blink::WebShortEdge, SHORT_EDGE);
#define STATIC_ASSERT_ENUM(a, b) \
static_assert(static_cast<int>(a) == static_cast<int>(b), \
"mismatching enums: " #a)

// Check blink and printing enums are kept in sync.
STATIC_ASSERT_ENUM(blink::WebUnknownDuplexMode, UNKNOWN_DUPLEX_MODE);
STATIC_ASSERT_ENUM(blink::WebSimplex, SIMPLEX);
STATIC_ASSERT_ENUM(blink::WebLongEdge, LONG_EDGE);
STATIC_ASSERT_ENUM(blink::WebShortEdge, SHORT_EDGE);

enum PrintPreviewHelperEvents {
PREVIEW_EVENT_REQUESTED,
Expand Down
21 changes: 11 additions & 10 deletions content/browser/web_contents/web_contents_view_mac.mm
Original file line number Diff line number Diff line change
Expand Up @@ -43,16 +43,17 @@

// Ensure that the blink::WebDragOperation enum values stay in sync with
// NSDragOperation constants, since the code below static_casts between 'em.
#define STATIC_ASSERT_MATCHING_ENUM(name) \
static_assert(int(NS##name) == int(blink::Web##name), "enum mismatch: " #name)
STATIC_ASSERT_MATCHING_ENUM(DragOperationNone);
STATIC_ASSERT_MATCHING_ENUM(DragOperationCopy);
STATIC_ASSERT_MATCHING_ENUM(DragOperationLink);
STATIC_ASSERT_MATCHING_ENUM(DragOperationGeneric);
STATIC_ASSERT_MATCHING_ENUM(DragOperationPrivate);
STATIC_ASSERT_MATCHING_ENUM(DragOperationMove);
STATIC_ASSERT_MATCHING_ENUM(DragOperationDelete);
STATIC_ASSERT_MATCHING_ENUM(DragOperationEvery);
#define STATIC_ASSERT_ENUM(a, b) \
static_assert(static_cast<int>(a) == static_cast<int>(b), \
"enum mismatch: " #a)
STATIC_ASSERT_ENUM(NSDragOperationNone, blink::WebDragOperationNone);
STATIC_ASSERT_ENUM(NSDragOperationCopy, blink::WebDragOperationCopy);
STATIC_ASSERT_ENUM(NSDragOperationLink, blink::WebDragOperationLink);
STATIC_ASSERT_ENUM(NSDragOperationGeneric, blink::WebDragOperationGeneric);
STATIC_ASSERT_ENUM(NSDragOperationPrivate, blink::WebDragOperationPrivate);
STATIC_ASSERT_ENUM(NSDragOperationMove, blink::WebDragOperationMove);
STATIC_ASSERT_ENUM(NSDragOperationDelete, blink::WebDragOperationDelete);
STATIC_ASSERT_ENUM(NSDragOperationEvery, blink::WebDragOperationEvery);

@interface WebContentsViewCocoa (Private)
- (id)initWithWebContentsViewMac:(WebContentsViewMac*)w;
Expand Down
86 changes: 46 additions & 40 deletions content/child/appcache/appcache_frontend_impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -90,45 +90,51 @@ void AppCacheFrontendImpl::OnContentBlocked(int host_id,
// Ensure that enum values never get out of sync with the
// ones declared for use within the WebKit api

#define STATIC_ASSERT_ENUM(a, b, desc) \
static_assert((int)a == (int)b, desc)

// Confirm that WebApplicationCacheHost::<a> == APPCACHE_<b>.
#define STATIC_ASSERT_WAC_ENUM(a, b) \
STATIC_ASSERT_ENUM(WebApplicationCacheHost:: a, APPCACHE_##b, #a)

STATIC_ASSERT_WAC_ENUM(Uncached, STATUS_UNCACHED);
STATIC_ASSERT_WAC_ENUM(Idle, STATUS_IDLE);
STATIC_ASSERT_WAC_ENUM(Checking, STATUS_CHECKING);
STATIC_ASSERT_WAC_ENUM(Downloading, STATUS_DOWNLOADING);
STATIC_ASSERT_WAC_ENUM(UpdateReady, STATUS_UPDATE_READY);
STATIC_ASSERT_WAC_ENUM(Obsolete, STATUS_OBSOLETE);

STATIC_ASSERT_WAC_ENUM(CheckingEvent, CHECKING_EVENT);
STATIC_ASSERT_WAC_ENUM(ErrorEvent, ERROR_EVENT);
STATIC_ASSERT_WAC_ENUM(NoUpdateEvent, NO_UPDATE_EVENT);
STATIC_ASSERT_WAC_ENUM(DownloadingEvent, DOWNLOADING_EVENT);
STATIC_ASSERT_WAC_ENUM(ProgressEvent, PROGRESS_EVENT);
STATIC_ASSERT_WAC_ENUM(UpdateReadyEvent, UPDATE_READY_EVENT);
STATIC_ASSERT_WAC_ENUM(CachedEvent, CACHED_EVENT);
STATIC_ASSERT_WAC_ENUM(ObsoleteEvent, OBSOLETE_EVENT);

STATIC_ASSERT_WAC_ENUM(ManifestError, MANIFEST_ERROR);
STATIC_ASSERT_WAC_ENUM(SignatureError, SIGNATURE_ERROR);
STATIC_ASSERT_WAC_ENUM(ResourceError, RESOURCE_ERROR);
STATIC_ASSERT_WAC_ENUM(ChangedError, CHANGED_ERROR);
STATIC_ASSERT_WAC_ENUM(AbortError, ABORT_ERROR);
STATIC_ASSERT_WAC_ENUM(QuotaError, QUOTA_ERROR);
STATIC_ASSERT_WAC_ENUM(PolicyError, POLICY_ERROR);
STATIC_ASSERT_WAC_ENUM(UnknownError, UNKNOWN_ERROR);

// Confirm that WebConsoleMessage::<a> == APPCACHE_<b>.
#define STATIC_ASSERT_WCM_ENUM(a, b) \
STATIC_ASSERT_ENUM(WebConsoleMessage:: a, APPCACHE_##b, #a)

STATIC_ASSERT_WCM_ENUM(LevelDebug, LOG_DEBUG);
STATIC_ASSERT_WCM_ENUM(LevelLog, LOG_INFO);
STATIC_ASSERT_WCM_ENUM(LevelWarning, LOG_WARNING);
STATIC_ASSERT_WCM_ENUM(LevelError, LOG_ERROR);
#define STATIC_ASSERT_ENUM(a, b) \
static_assert(static_cast<int>(a) == static_cast<int>(b), \
"mismatched enum: " #a)

STATIC_ASSERT_ENUM(WebApplicationCacheHost::Uncached, APPCACHE_STATUS_UNCACHED);
STATIC_ASSERT_ENUM(WebApplicationCacheHost::Idle, APPCACHE_STATUS_IDLE);
STATIC_ASSERT_ENUM(WebApplicationCacheHost::Checking, APPCACHE_STATUS_CHECKING);
STATIC_ASSERT_ENUM(WebApplicationCacheHost::Downloading,
APPCACHE_STATUS_DOWNLOADING);
STATIC_ASSERT_ENUM(WebApplicationCacheHost::UpdateReady,
APPCACHE_STATUS_UPDATE_READY);
STATIC_ASSERT_ENUM(WebApplicationCacheHost::Obsolete, APPCACHE_STATUS_OBSOLETE);

STATIC_ASSERT_ENUM(WebApplicationCacheHost::CheckingEvent,
APPCACHE_CHECKING_EVENT);
STATIC_ASSERT_ENUM(WebApplicationCacheHost::ErrorEvent, APPCACHE_ERROR_EVENT);
STATIC_ASSERT_ENUM(WebApplicationCacheHost::NoUpdateEvent,
APPCACHE_NO_UPDATE_EVENT);
STATIC_ASSERT_ENUM(WebApplicationCacheHost::DownloadingEvent,
APPCACHE_DOWNLOADING_EVENT);
STATIC_ASSERT_ENUM(WebApplicationCacheHost::ProgressEvent,
APPCACHE_PROGRESS_EVENT);
STATIC_ASSERT_ENUM(WebApplicationCacheHost::UpdateReadyEvent,
APPCACHE_UPDATE_READY_EVENT);
STATIC_ASSERT_ENUM(WebApplicationCacheHost::CachedEvent, APPCACHE_CACHED_EVENT);
STATIC_ASSERT_ENUM(WebApplicationCacheHost::ObsoleteEvent,
APPCACHE_OBSOLETE_EVENT);

STATIC_ASSERT_ENUM(WebApplicationCacheHost::ManifestError,
APPCACHE_MANIFEST_ERROR);
STATIC_ASSERT_ENUM(WebApplicationCacheHost::SignatureError,
APPCACHE_SIGNATURE_ERROR);
STATIC_ASSERT_ENUM(WebApplicationCacheHost::ResourceError,
APPCACHE_RESOURCE_ERROR);
STATIC_ASSERT_ENUM(WebApplicationCacheHost::ChangedError,
APPCACHE_CHANGED_ERROR);
STATIC_ASSERT_ENUM(WebApplicationCacheHost::AbortError, APPCACHE_ABORT_ERROR);
STATIC_ASSERT_ENUM(WebApplicationCacheHost::QuotaError, APPCACHE_QUOTA_ERROR);
STATIC_ASSERT_ENUM(WebApplicationCacheHost::PolicyError, APPCACHE_POLICY_ERROR);
STATIC_ASSERT_ENUM(WebApplicationCacheHost::UnknownError,
APPCACHE_UNKNOWN_ERROR);

STATIC_ASSERT_ENUM(WebConsoleMessage::LevelDebug, APPCACHE_LOG_DEBUG);
STATIC_ASSERT_ENUM(WebConsoleMessage::LevelLog, APPCACHE_LOG_INFO);
STATIC_ASSERT_ENUM(WebConsoleMessage::LevelWarning, APPCACHE_LOG_WARNING);
STATIC_ASSERT_ENUM(WebConsoleMessage::LevelError, APPCACHE_LOG_ERROR);

} // namespace content
71 changes: 34 additions & 37 deletions content/child/assert_matching_enums.cc
Original file line number Diff line number Diff line change
Expand Up @@ -15,48 +15,45 @@

namespace content {

#define STATIC_ASSERT_MATCHING_ENUM(expected, actual) \
static_assert(int(expected) == int(actual), "mismatching enums: " #expected)
#define STATIC_ASSERT_ENUM(a, b) \
static_assert(static_cast<int>(a) == static_cast<int>(b), \
"mismatching enums: " #a)

// ScreenOrientationValues
STATIC_ASSERT_MATCHING_ENUM(blink::WebScreenOrientationLockDefault,
SCREEN_ORIENTATION_VALUES_DEFAULT);
STATIC_ASSERT_MATCHING_ENUM(blink::WebScreenOrientationLockPortraitPrimary,
SCREEN_ORIENTATION_VALUES_PORTRAIT_PRIMARY);
STATIC_ASSERT_MATCHING_ENUM(blink::WebScreenOrientationLockPortraitSecondary,
SCREEN_ORIENTATION_VALUES_PORTRAIT_SECONDARY);
STATIC_ASSERT_MATCHING_ENUM(blink::WebScreenOrientationLockLandscapePrimary,
SCREEN_ORIENTATION_VALUES_LANDSCAPE_PRIMARY);
STATIC_ASSERT_MATCHING_ENUM(blink::WebScreenOrientationLockLandscapeSecondary,
SCREEN_ORIENTATION_VALUES_LANDSCAPE_SECONDARY);
STATIC_ASSERT_MATCHING_ENUM(blink::WebScreenOrientationLockAny,
SCREEN_ORIENTATION_VALUES_ANY);
STATIC_ASSERT_MATCHING_ENUM(blink::WebScreenOrientationLockLandscape,
SCREEN_ORIENTATION_VALUES_LANDSCAPE);
STATIC_ASSERT_MATCHING_ENUM(blink::WebScreenOrientationLockPortrait,
SCREEN_ORIENTATION_VALUES_PORTRAIT);
STATIC_ASSERT_MATCHING_ENUM(blink::WebScreenOrientationLockNatural,
SCREEN_ORIENTATION_VALUES_NATURAL);
STATIC_ASSERT_ENUM(blink::WebScreenOrientationLockDefault,
SCREEN_ORIENTATION_VALUES_DEFAULT);
STATIC_ASSERT_ENUM(blink::WebScreenOrientationLockPortraitPrimary,
SCREEN_ORIENTATION_VALUES_PORTRAIT_PRIMARY);
STATIC_ASSERT_ENUM(blink::WebScreenOrientationLockPortraitSecondary,
SCREEN_ORIENTATION_VALUES_PORTRAIT_SECONDARY);
STATIC_ASSERT_ENUM(blink::WebScreenOrientationLockLandscapePrimary,
SCREEN_ORIENTATION_VALUES_LANDSCAPE_PRIMARY);
STATIC_ASSERT_ENUM(blink::WebScreenOrientationLockLandscapeSecondary,
SCREEN_ORIENTATION_VALUES_LANDSCAPE_SECONDARY);
STATIC_ASSERT_ENUM(blink::WebScreenOrientationLockAny,
SCREEN_ORIENTATION_VALUES_ANY);
STATIC_ASSERT_ENUM(blink::WebScreenOrientationLockLandscape,
SCREEN_ORIENTATION_VALUES_LANDSCAPE);
STATIC_ASSERT_ENUM(blink::WebScreenOrientationLockPortrait,
SCREEN_ORIENTATION_VALUES_PORTRAIT);
STATIC_ASSERT_ENUM(blink::WebScreenOrientationLockNatural,
SCREEN_ORIENTATION_VALUES_NATURAL);

// SupportsType
STATIC_ASSERT_MATCHING_ENUM(blink::WebMimeRegistry::IsNotSupported,
media::IsNotSupported);
STATIC_ASSERT_MATCHING_ENUM(blink::WebMimeRegistry::IsSupported,
media::IsSupported);
STATIC_ASSERT_MATCHING_ENUM(blink::WebMimeRegistry::MayBeSupported,
media::MayBeSupported);
STATIC_ASSERT_ENUM(blink::WebMimeRegistry::IsNotSupported,
media::IsNotSupported);
STATIC_ASSERT_ENUM(blink::WebMimeRegistry::IsSupported, media::IsSupported);
STATIC_ASSERT_ENUM(blink::WebMimeRegistry::MayBeSupported,
media::MayBeSupported);

// TargetProperty
STATIC_ASSERT_MATCHING_ENUM(
blink::WebCompositorAnimation::TargetPropertyTransform,
cc::Animation::TRANSFORM);
STATIC_ASSERT_MATCHING_ENUM(
blink::WebCompositorAnimation::TargetPropertyOpacity,
cc::Animation::OPACITY);
STATIC_ASSERT_MATCHING_ENUM(blink::WebCompositorAnimation::TargetPropertyFilter,
cc::Animation::FILTER);
STATIC_ASSERT_MATCHING_ENUM(
blink::WebCompositorAnimation::TargetPropertyScrollOffset,
cc::Animation::SCROLL_OFFSET);
STATIC_ASSERT_ENUM(blink::WebCompositorAnimation::TargetPropertyTransform,
cc::Animation::TRANSFORM);
STATIC_ASSERT_ENUM(blink::WebCompositorAnimation::TargetPropertyOpacity,
cc::Animation::OPACITY);
STATIC_ASSERT_ENUM(blink::WebCompositorAnimation::TargetPropertyFilter,
cc::Animation::FILTER);
STATIC_ASSERT_ENUM(blink::WebCompositorAnimation::TargetPropertyScrollOffset,
cc::Animation::SCROLL_OFFSET);

} // namespace content
Loading

0 comments on commit 365175c

Please sign in to comment.