Skip to content

Commit

Permalink
Remove unneeded exports of constants
Browse files Browse the repository at this point in the history
cloud_policy_constants.h defines 60 constants and (in component builds)
exports them. This implies that consumers of these constants should
include the header file and then link against the DLLs/shared-objects
that export the symbols. However in at least 35 places the source_set
components/policy/core/common:common_constants is imported directly,
which means that the constants are compiled into each DLL/shared-object
individually, rather than being imported. This leads to each individual
DLL/shared-object exporting the constants, but nobody importing them.
The same issue was found in two other policy header files, for a
total of 88 exported constants.

Since these are constants it is simpler and more efficient to skip the
import/export behavior and just declare them. Each DLL/shared-object
can have their own copy, and all is well.

In one case in chrome/updater/BUILD.gn the source_set base was actually
using the constants without compiling them in. It was much simpler to
change that usage to import them rather than to change the other 35
uses.

This issue was found when I noticed that unit_tests.exe was
exporting more than 230 symbols. chrome.dll exports a similar set of
inappropriate symbols, and probably other binaries as well.

Bug: 1424799
Change-Id: Ifedba841d46fda195c9ae0b8f00bca750400d8cd
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4342816
Commit-Queue: Bruce Dawson <brucedawson@chromium.org>
Reviewed-by: Nicolas Ouellet-Payeur <nicolaso@chromium.org>
Reviewed-by: S Ganesh <ganesh@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1118206}
  • Loading branch information
randomascii authored and Chromium LUCI CQ committed Mar 16, 2023
1 parent 8495060 commit fd56a13
Show file tree
Hide file tree
Showing 4 changed files with 96 additions and 95 deletions.
1 change: 1 addition & 0 deletions chrome/updater/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,7 @@ if (is_win || is_mac || is_linux) {
"//chrome/updater/protos:omaha_proto",
"//components/crash/core/common:crash_key",
"//components/crx_file",
"//components/policy/core/common:common_constants",
"//components/policy/proto",
"//components/prefs",
"//components/update_client",
Expand Down
122 changes: 61 additions & 61 deletions components/policy/core/common/cloud/cloud_policy_constants.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,70 +15,70 @@ namespace policy {
namespace dm_protocol {

// Name extern constants for URL query parameters.
POLICY_EXPORT extern const char kParamAgent[];
POLICY_EXPORT extern const char kParamAppType[];
POLICY_EXPORT extern const char kParamCritical[];
POLICY_EXPORT extern const char kParamDeviceID[];
POLICY_EXPORT extern const char kParamDeviceType[];
POLICY_EXPORT extern const char kParamLastError[];
POLICY_EXPORT extern const char kParamOAuthToken[];
POLICY_EXPORT extern const char kParamPlatform[];
POLICY_EXPORT extern const char kParamRequest[];
POLICY_EXPORT extern const char kParamRetry[];
extern const char kParamAgent[];
extern const char kParamAppType[];
extern const char kParamCritical[];
extern const char kParamDeviceID[];
extern const char kParamDeviceType[];
extern const char kParamLastError[];
extern const char kParamOAuthToken[];
extern const char kParamPlatform[];
extern const char kParamRequest[];
extern const char kParamRetry[];

// Policy constants used in authorization header.
POLICY_EXPORT extern const char kAuthHeader[];
POLICY_EXPORT extern const char kServiceTokenAuthHeaderPrefix[];
POLICY_EXPORT extern const char kDMTokenAuthHeaderPrefix[];
POLICY_EXPORT extern const char kEnrollmentTokenAuthHeaderPrefix[];
POLICY_EXPORT extern const char kOAuthTokenHeaderPrefix[];
extern const char kAuthHeader[];
extern const char kServiceTokenAuthHeaderPrefix[];
extern const char kDMTokenAuthHeaderPrefix[];
extern const char kEnrollmentTokenAuthHeaderPrefix[];
extern const char kOAuthTokenHeaderPrefix[];

// String extern constants for the device and app type we report to the server.
POLICY_EXPORT extern const char kValueAppType[];
POLICY_EXPORT extern const char kValueBrowserUploadPublicKey[];
POLICY_EXPORT extern const char kValueDeviceType[];
POLICY_EXPORT extern const char kValueRequestAutoEnrollment[];
POLICY_EXPORT extern const char kValueRequestPsmHasDeviceState[];
POLICY_EXPORT extern const char kValueCheckUserAccount[];
POLICY_EXPORT extern const char kValueRequestPolicy[];
POLICY_EXPORT extern const char kValueRequestRegister[];
POLICY_EXPORT extern const char kValueRequestApiAuthorization[];
POLICY_EXPORT extern const char kValueRequestUnregister[];
POLICY_EXPORT extern const char kValueRequestUploadCertificate[];
POLICY_EXPORT extern const char kValueRequestUploadEuiccInfo[];
POLICY_EXPORT extern const char kValueRequestDeviceStateRetrieval[];
POLICY_EXPORT extern const char kValueRequestUploadStatus[];
POLICY_EXPORT extern const char kValueRequestRemoteCommands[];
POLICY_EXPORT extern const char kValueRequestDeviceAttributeUpdatePermission[];
POLICY_EXPORT extern const char kValueRequestDeviceAttributeUpdate[];
POLICY_EXPORT extern const char kValueRequestGcmIdUpdate[];
POLICY_EXPORT extern const char kValueRequestCheckAndroidManagement[];
POLICY_EXPORT extern const char kValueRequestCertBasedRegister[];
POLICY_EXPORT extern const char kValueRequestActiveDirectoryEnrollPlayUser[];
POLICY_EXPORT extern const char kValueRequestActiveDirectoryPlayActivity[];
POLICY_EXPORT extern const char kValueRequestAppInstallReport[];
POLICY_EXPORT extern const char kValueRequestTokenEnrollment[];
POLICY_EXPORT extern const char kValueRequestChromeDesktopReport[];
POLICY_EXPORT extern const char kValueRequestInitialEnrollmentStateRetrieval[];
POLICY_EXPORT extern const char kValueRequestUploadPolicyValidationReport[];
POLICY_EXPORT extern const char kValueRequestPublicSamlUser[];
POLICY_EXPORT extern const char kValueRequestChromeOsUserReport[];
POLICY_EXPORT extern const char kValueRequestCertProvisioningRequest[];
POLICY_EXPORT extern const char kValueRequestChromeProfileReport[];
extern const char kValueAppType[];
extern const char kValueBrowserUploadPublicKey[];
extern const char kValueDeviceType[];
extern const char kValueRequestAutoEnrollment[];
extern const char kValueRequestPsmHasDeviceState[];
extern const char kValueCheckUserAccount[];
extern const char kValueRequestPolicy[];
extern const char kValueRequestRegister[];
extern const char kValueRequestApiAuthorization[];
extern const char kValueRequestUnregister[];
extern const char kValueRequestUploadCertificate[];
extern const char kValueRequestUploadEuiccInfo[];
extern const char kValueRequestDeviceStateRetrieval[];
extern const char kValueRequestUploadStatus[];
extern const char kValueRequestRemoteCommands[];
extern const char kValueRequestDeviceAttributeUpdatePermission[];
extern const char kValueRequestDeviceAttributeUpdate[];
extern const char kValueRequestGcmIdUpdate[];
extern const char kValueRequestCheckAndroidManagement[];
extern const char kValueRequestCertBasedRegister[];
extern const char kValueRequestActiveDirectoryEnrollPlayUser[];
extern const char kValueRequestActiveDirectoryPlayActivity[];
extern const char kValueRequestAppInstallReport[];
extern const char kValueRequestTokenEnrollment[];
extern const char kValueRequestChromeDesktopReport[];
extern const char kValueRequestInitialEnrollmentStateRetrieval[];
extern const char kValueRequestUploadPolicyValidationReport[];
extern const char kValueRequestPublicSamlUser[];
extern const char kValueRequestChromeOsUserReport[];
extern const char kValueRequestCertProvisioningRequest[];
extern const char kValueRequestChromeProfileReport[];

// Policy type strings for the policy_type field in PolicyFetchRequest.
POLICY_EXPORT extern const char kChromeDevicePolicyType[];
POLICY_EXPORT extern const char kChromeUserPolicyType[];
POLICY_EXPORT extern const char kChromePublicAccountPolicyType[];
POLICY_EXPORT extern const char kChromeExtensionPolicyType[];
POLICY_EXPORT extern const char kChromeSigninExtensionPolicyType[];
POLICY_EXPORT extern const char kChromeMachineLevelUserCloudPolicyType[];
POLICY_EXPORT extern const char kChromeMachineLevelUserCloudPolicyAndroidType[];
POLICY_EXPORT extern const char kChromeMachineLevelUserCloudPolicyIOSType[];
POLICY_EXPORT extern const char kChromeMachineLevelExtensionCloudPolicyType[];
POLICY_EXPORT extern const char kChromeRemoteCommandPolicyType[];

POLICY_EXPORT extern const char kChromeMachineLevelUserCloudPolicyTypeBase64[];
extern const char kChromeDevicePolicyType[];
extern const char kChromeUserPolicyType[];
extern const char kChromePublicAccountPolicyType[];
extern const char kChromeExtensionPolicyType[];
extern const char kChromeSigninExtensionPolicyType[];
extern const char kChromeMachineLevelUserCloudPolicyType[];
extern const char kChromeMachineLevelUserCloudPolicyAndroidType[];
extern const char kChromeMachineLevelUserCloudPolicyIOSType[];
extern const char kChromeMachineLevelExtensionCloudPolicyType[];
extern const char kChromeRemoteCommandPolicyType[];

extern const char kChromeMachineLevelUserCloudPolicyTypeBase64[];

// These codes are sent in the |error_code| field of PolicyFetchResponse.
enum PolicyFetchStatus {
Expand All @@ -90,10 +90,10 @@ enum PolicyFetchStatus {

// Public half of the verification key that is used to verify that policy
// signing keys are originating from DM server.
POLICY_EXPORT std::string GetPolicyVerificationKey();
std::string GetPolicyVerificationKey();

// Corresponding hash.
POLICY_EXPORT extern const char kPolicyVerificationKeyHash[];
extern const char kPolicyVerificationKeyHash[];

// Status codes for communication errors with the device management service.
// This enum is used to define the buckets for an enumerated UMA histogram.
Expand Down Expand Up @@ -177,7 +177,7 @@ enum DeviceMode {
};

// Domain that demo mode devices are enrolled into: cros-demo-mode.com
POLICY_EXPORT extern const char kDemoModeDomain[];
extern const char kDemoModeDomain[];

// Indicate this device's market segment. go/cros-rlz-segments.
// This enum should be kept in sync with MarketSegment enum in
Expand Down
56 changes: 28 additions & 28 deletions components/policy/core/common/policy_pref_names.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,43 +12,43 @@ namespace policy {
namespace policy_prefs {

#if BUILDFLAG(IS_WIN)
POLICY_EXPORT extern const char kAzureActiveDirectoryManagement[];
POLICY_EXPORT extern const char kEnterpriseMDMManagementWindows[];
extern const char kAzureActiveDirectoryManagement[];
extern const char kEnterpriseMDMManagementWindows[];
#endif
POLICY_EXPORT extern const char kCloudManagementEnrollmentMandatory[];
POLICY_EXPORT extern const char kDlpClipboardCheckSizeLimit[];
POLICY_EXPORT extern const char kDlpReportingEnabled[];
POLICY_EXPORT extern const char kDlpRulesList[];
extern const char kCloudManagementEnrollmentMandatory[];
extern const char kDlpClipboardCheckSizeLimit[];
extern const char kDlpReportingEnabled[];
extern const char kDlpRulesList[];
#if BUILDFLAG(IS_MAC)
POLICY_EXPORT extern const char kEnterpriseMDMManagementMac[];
POLICY_EXPORT extern const char kScreenTimeEnabled[];
extern const char kEnterpriseMDMManagementMac[];
extern const char kScreenTimeEnabled[];
#endif
POLICY_EXPORT extern const char kLastPolicyStatisticsUpdate[];
POLICY_EXPORT extern const char kNativeWindowOcclusionEnabled[];
POLICY_EXPORT extern const char kSafeSitesFilterBehavior[];
POLICY_EXPORT extern const char kSystemFeaturesDisableList[];
POLICY_EXPORT extern const char kSystemFeaturesDisableMode[];
POLICY_EXPORT extern const char kUrlBlocklist[];
POLICY_EXPORT extern const char kUrlAllowlist[];
POLICY_EXPORT extern const char kUserPolicyRefreshRate[];
POLICY_EXPORT extern const char kIntensiveWakeUpThrottlingEnabled[];
POLICY_EXPORT extern const char kUserAgentClientHintsGREASEUpdateEnabled[];
extern const char kLastPolicyStatisticsUpdate[];
extern const char kNativeWindowOcclusionEnabled[];
extern const char kSafeSitesFilterBehavior[];
extern const char kSystemFeaturesDisableList[];
extern const char kSystemFeaturesDisableMode[];
extern const char kUrlBlocklist[];
extern const char kUrlAllowlist[];
extern const char kUserPolicyRefreshRate[];
extern const char kIntensiveWakeUpThrottlingEnabled[];
extern const char kUserAgentClientHintsGREASEUpdateEnabled[];
#if BUILDFLAG(IS_ANDROID)
POLICY_EXPORT extern const char kBackForwardCacheEnabled[];
extern const char kBackForwardCacheEnabled[];
#endif // BUILDFLAG(IS_ANDROID)
POLICY_EXPORT extern const char kIsolatedAppsDeveloperModeAllowed[];
extern const char kIsolatedAppsDeveloperModeAllowed[];
#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS)
POLICY_EXPORT extern const char kLastPolicyCheckTime[];
extern const char kLastPolicyCheckTime[];
#endif
#if BUILDFLAG(IS_IOS)
POLICY_EXPORT extern const char kUserPolicyNotificationWasShown[];
extern const char kUserPolicyNotificationWasShown[];
#endif
POLICY_EXPORT extern const char kEventPathEnabled[];
POLICY_EXPORT extern const char kOffsetParentNewSpecBehaviorEnabled[];
POLICY_EXPORT extern const char kSendMouseEventsDisabledFormControlsEnabled[];
POLICY_EXPORT extern const char kUseMojoVideoDecoderForPepperAllowed[];
POLICY_EXPORT extern const char kPPAPISharedImagesSwapChainAllowed[];
POLICY_EXPORT extern const char kForceEnablePepperVideoDecoderDevAPI[];
extern const char kEventPathEnabled[];
extern const char kOffsetParentNewSpecBehaviorEnabled[];
extern const char kSendMouseEventsDisabledFormControlsEnabled[];
extern const char kUseMojoVideoDecoderForPepperAllowed[];
extern const char kPPAPISharedImagesSwapChainAllowed[];
extern const char kForceEnablePepperVideoDecoderDevAPI[];

} // namespace policy_prefs
} // namespace policy
Expand Down
12 changes: 6 additions & 6 deletions components/policy/core/common/policy_switches.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,13 @@
namespace policy {
namespace switches {

POLICY_EXPORT extern const char kDeviceManagementUrl[];
POLICY_EXPORT extern const char kRealtimeReportingUrl[];
POLICY_EXPORT extern const char kEncryptedReportingUrl[];
POLICY_EXPORT extern const char kChromePolicy[];
POLICY_EXPORT extern const char kSecureConnectApiUrl[];
extern const char kDeviceManagementUrl[];
extern const char kRealtimeReportingUrl[];
extern const char kEncryptedReportingUrl[];
extern const char kChromePolicy[];
extern const char kSecureConnectApiUrl[];
#if BUILDFLAG(IS_CHROMEOS_ASH)
POLICY_EXPORT extern const char kDisablePolicyKeyVerification[];
extern const char kDisablePolicyKeyVerification[];
#endif // BUILDFLAG(IS_CHROMEOS_ASH)

} // namespace switches
Expand Down

0 comments on commit fd56a13

Please sign in to comment.