Index: extensions/browser/api/app_runtime/app_runtime_api.cc |
diff --git a/extensions/browser/api/app_runtime/app_runtime_api.cc b/extensions/browser/api/app_runtime/app_runtime_api.cc |
index 701858a4667d540e5f8be758d1f176049e68ef34..63c73a8fd2c22c4ba7b549e56bca54c5c86403a4 100644 |
--- a/extensions/browser/api/app_runtime/app_runtime_api.cc |
+++ b/extensions/browser/api/app_runtime/app_runtime_api.cc |
@@ -52,8 +52,8 @@ void DispatchOnLaunchedEventImpl( |
app_runtime::LaunchSource source, |
std::unique_ptr<base::DictionaryValue> launch_data, |
BrowserContext* context) { |
- UMA_HISTOGRAM_ENUMERATION( |
- "Extensions.AppLaunchSource", source, NUM_APP_LAUNCH_SOURCES); |
+ UMA_HISTOGRAM_ENUMERATION("Extensions.AppLaunchSource", source, |
+ app_runtime::LaunchSource::LAUNCH_SOURCE_LAST + 1); |
// "Forced app mode" is true for Chrome OS kiosk mode. |
launch_data->SetBoolean( |
@@ -76,53 +76,42 @@ void DispatchOnLaunchedEventImpl( |
->SetLastLaunchTime(extension_id, base::Time::Now()); |
} |
+#define ASSERT_ENUM_EQUAL(Name) ASSERT_ENUM_EQUAL_FULL(Name, Name) |
+ |
+#define ASSERT_ENUM_EQUAL_FULL(Name, Name2) \ |
+ static_assert(static_cast<int>(extensions::Name) == \ |
+ static_cast<int>(app_runtime::LAUNCH_##Name2), \ |
+ "The value of extensions::" #Name \ |
+ " and app_runtime::LAUNCH_" #Name2 " should be the same"); |
+ |
app_runtime::LaunchSource GetLaunchSourceEnum( |
extensions::AppLaunchSource source) { |
- switch (source) { |
- case extensions::SOURCE_UNTRACKED: |
- return app_runtime::LAUNCH_SOURCE_UNTRACKED; |
- case extensions::SOURCE_APP_LAUNCHER: |
- return app_runtime::LAUNCH_SOURCE_APP_LAUNCHER; |
- case extensions::SOURCE_NEW_TAB_PAGE: |
- return app_runtime::LAUNCH_SOURCE_NEW_TAB_PAGE; |
- case extensions::SOURCE_RELOAD: |
- return app_runtime::LAUNCH_SOURCE_RELOAD; |
- case extensions::SOURCE_RESTART: |
- return app_runtime::LAUNCH_SOURCE_RESTART; |
- case extensions::SOURCE_LOAD_AND_LAUNCH: |
- return app_runtime::LAUNCH_SOURCE_LOAD_AND_LAUNCH; |
- case extensions::SOURCE_COMMAND_LINE: |
- return app_runtime::LAUNCH_SOURCE_COMMAND_LINE; |
- case extensions::SOURCE_FILE_HANDLER: |
- return app_runtime::LAUNCH_SOURCE_FILE_HANDLER; |
- case extensions::SOURCE_URL_HANDLER: |
- return app_runtime::LAUNCH_SOURCE_URL_HANDLER; |
- case extensions::SOURCE_SYSTEM_TRAY: |
- return app_runtime::LAUNCH_SOURCE_SYSTEM_TRAY; |
- case extensions::SOURCE_ABOUT_PAGE: |
- return app_runtime::LAUNCH_SOURCE_ABOUT_PAGE; |
- case extensions::SOURCE_KEYBOARD: |
- return app_runtime::LAUNCH_SOURCE_KEYBOARD; |
- case extensions::SOURCE_EXTENSIONS_PAGE: |
- return app_runtime::LAUNCH_SOURCE_EXTENSIONS_PAGE; |
- case extensions::SOURCE_MANAGEMENT_API: |
- return app_runtime::LAUNCH_SOURCE_MANAGEMENT_API; |
- case extensions::SOURCE_EPHEMERAL_APP_DEPRECATED: |
- return app_runtime::LAUNCH_SOURCE_EPHEMERAL_APP; |
- case extensions::SOURCE_BACKGROUND: |
- return app_runtime::LAUNCH_SOURCE_BACKGROUND; |
- case extensions::SOURCE_KIOSK: |
- return app_runtime::LAUNCH_SOURCE_KIOSK; |
- case extensions::SOURCE_CHROME_INTERNAL: |
- return app_runtime::LAUNCH_SOURCE_CHROME_INTERNAL; |
- case extensions::SOURCE_TEST: |
- return app_runtime::LAUNCH_SOURCE_TEST; |
- case extensions::SOURCE_INSTALLED_NOTIFICATION: |
- return app_runtime::LAUNCH_SOURCE_INSTALLED_NOTIFICATION; |
- |
- default: |
- return app_runtime::LAUNCH_SOURCE_NONE; |
- } |
+ ASSERT_ENUM_EQUAL(SOURCE_NONE); |
+ ASSERT_ENUM_EQUAL(SOURCE_UNTRACKED); |
+ ASSERT_ENUM_EQUAL(SOURCE_APP_LAUNCHER); |
+ ASSERT_ENUM_EQUAL(SOURCE_NEW_TAB_PAGE); |
+ ASSERT_ENUM_EQUAL(SOURCE_RELOAD); |
+ ASSERT_ENUM_EQUAL(SOURCE_RESTART); |
+ ASSERT_ENUM_EQUAL(SOURCE_LOAD_AND_LAUNCH); |
+ ASSERT_ENUM_EQUAL(SOURCE_COMMAND_LINE); |
+ ASSERT_ENUM_EQUAL(SOURCE_FILE_HANDLER); |
+ ASSERT_ENUM_EQUAL(SOURCE_URL_HANDLER); |
+ ASSERT_ENUM_EQUAL(SOURCE_SYSTEM_TRAY); |
+ ASSERT_ENUM_EQUAL(SOURCE_ABOUT_PAGE); |
+ ASSERT_ENUM_EQUAL(SOURCE_KEYBOARD); |
+ ASSERT_ENUM_EQUAL(SOURCE_EXTENSIONS_PAGE); |
+ ASSERT_ENUM_EQUAL(SOURCE_MANAGEMENT_API); |
+ ASSERT_ENUM_EQUAL_FULL(SOURCE_EPHEMERAL_APP_DEPRECATED, SOURCE_EPHEMERAL_APP); |
+ ASSERT_ENUM_EQUAL(SOURCE_BACKGROUND); |
+ ASSERT_ENUM_EQUAL(SOURCE_KIOSK); |
+ ASSERT_ENUM_EQUAL(SOURCE_CHROME_INTERNAL); |
+ ASSERT_ENUM_EQUAL(SOURCE_TEST); |
+ ASSERT_ENUM_EQUAL(SOURCE_INSTALLED_NOTIFICATION); |
+ static_assert(extensions::NUM_APP_LAUNCH_SOURCES == |
+ app_runtime::LaunchSource::LAUNCH_SOURCE_LAST + 1, |
+ ""); |
+ |
+ return static_cast<app_runtime::LaunchSource>(source); |
} |
} // namespace |