Commit c816bb88 authored by anina koehler's avatar anina koehler Committed by Commit Bot

Use behaviour feature for determining login-screen UI title

This cl removes the mapping between extension ID and window title for
the login-screen extension and uses the existing behavior feature
instead.


Bug: 1145126
Change-Id: I86bef81b140f5b9aa51fa9a87d8053e85d2ff7d4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2527024
Commit-Queue: Anina Koehler <aninak@google.com>
Reviewed-by: default avatarDevlin <rdevlin.cronin@chromium.org>
Reviewed-by: default avatarAlexander Hendrich <hendrich@chromium.org>
Cr-Commit-Position: refs/heads/master@{#829167}
parent 055799d6
...@@ -21,6 +21,9 @@ ...@@ -21,6 +21,9 @@
#include "content/public/browser/browser_thread.h" #include "content/public/browser/browser_thread.h"
#include "extensions/common/constants.h" #include "extensions/common/constants.h"
#include "extensions/common/extension.h" #include "extensions/common/extension.h"
#include "extensions/common/features/behavior_feature.h"
#include "extensions/common/features/feature.h"
#include "extensions/common/features/feature_provider.h"
#include "extensions/common/permissions/permissions_data.h" #include "extensions/common/permissions/permissions_data.h"
namespace chromeos { namespace chromeos {
...@@ -33,53 +36,24 @@ const char kErrorNoExistingWindow[] = "No open window to close."; ...@@ -33,53 +36,24 @@ const char kErrorNoExistingWindow[] = "No open window to close.";
const char kErrorNotOnLoginOrLockScreen[] = const char kErrorNotOnLoginOrLockScreen[] =
"Windows can only be created on the login and lock screen."; "Windows can only be created on the login and lock screen.";
struct ExtensionNameMapping { const char kExtensionNameImprivata[] = "Imprivata";
const char* extension_id; const char kExtensionNameImprivataTest[] = "LoginScreenUi test extension";
const char* extension_name; const char kExtensionNameUnknown[] = "UNKNOWN EXTENSION";
};
// Hardcoded extension names to be used in the window's dialog title.
// Intentionally not using |extension->name()| here to prevent a compromised
// extension from being able to control the dialog title's content.
// This list has to be sorted for quick access using std::lower_bound.
const ExtensionNameMapping kExtensionNameMappings[] = {
{"bnfoibgpjolimhppjmligmcgklpboloj", "Imprivata"},
{"cdgickkdpbekbnalbmpgochbninibkko", "Imprivata"},
{"dbknmmkopacopifbkgookcdbhfnggjjh", "Imprivata"},
{"ddcjglpbfbibgepfffpklmpihphbcdco", "Imprivata"},
{"dhodapiemamlmhlhblgcibabhdkohlen", "Imprivata"},
{"dlahpllbhpbkfnoiedkgombmegnnjopi", "Imprivata"},
{"lpimkpkllnkdlcigdbgmabfplniahkgm", "Imprivata"},
{"oclffehlkdgibkainkilopaalpdobkan", "LoginScreenUi test extension"},
{"odehonhhkcjnbeaomlodfkjaecbmhklm", "Imprivata"},
{"olnmflhcfkifkgbiegcoabineoknmbjc", "Imprivata"},
{"phjobickjiififdadeoepbdaciefacfj", "Imprivata"},
{"pkeacbojooejnjolgjdecbpnloibpafm", "Imprivata"},
{"pmhiabnkkchjeaehcodceadhdpfejmmd", "Imprivata"},
};
const ExtensionNameMapping* kExtensionNameMappingsEnd =
std::end(kExtensionNameMappings);
std::string GetHardcodedExtensionName(const extensions::Extension* extension) { std::string GetHardcodedExtensionName(const extensions::Extension* extension) {
DCHECK(std::is_sorted(kExtensionNameMappings, kExtensionNameMappingsEnd, const extensions::Feature* imprivata_login_screen_extension =
[](const ExtensionNameMapping& entry1, extensions::FeatureProvider::GetBehaviorFeature(
const ExtensionNameMapping& entry2) { extensions::behavior_feature::kImprivataLoginScreenExtension);
return strcmp(entry1.extension_id,
entry2.extension_id) < 0; if (imprivata_login_screen_extension->IsAvailableToExtension(extension)
})); .is_available()) {
return kExtensionNameImprivata;
const char* extension_id = extension->id().c_str(); }
const ExtensionNameMapping* entry = std::lower_bound( if (extension->id() == "oclffehlkdgibkainkilopaalpdobkan") {
kExtensionNameMappings, kExtensionNameMappingsEnd, extension_id, return kExtensionNameImprivataTest;
[](const ExtensionNameMapping& entry, const char* key) {
return strcmp(entry.extension_id, key) < 0;
});
if (entry == kExtensionNameMappingsEnd ||
strcmp(entry->extension_id, extension_id) != 0) {
NOTREACHED();
return "UNKNOWN EXTENSION";
} }
return entry->extension_name; NOTREACHED();
return kExtensionNameUnknown;
} }
bool CanUseLoginScreenUiApi(const extensions::Extension* extension) { bool CanUseLoginScreenUiApi(const extensions::Extension* extension) {
......
...@@ -26,6 +26,9 @@ const char kKeyPermissionsInLoginScreen[] = "key_permissions_in_login_screen"; ...@@ -26,6 +26,9 @@ const char kKeyPermissionsInLoginScreen[] = "key_permissions_in_login_screen";
const char kImprivataInSessionExtension[] = "imprivata_in_session_extension"; const char kImprivataInSessionExtension[] = "imprivata_in_session_extension";
const char kImprivataLoginScreenExtension[] =
"imprivata_login_screen_extension";
} // namespace behavior_feature } // namespace behavior_feature
} // namespace extensions } // namespace extensions
...@@ -19,6 +19,7 @@ extern const char kAllowDeprecatedAudioApi[]; ...@@ -19,6 +19,7 @@ extern const char kAllowDeprecatedAudioApi[];
extern const char kAllowSecondaryKioskAppEnabledOnLaunch[]; extern const char kAllowSecondaryKioskAppEnabledOnLaunch[];
extern const char kKeyPermissionsInLoginScreen[]; extern const char kKeyPermissionsInLoginScreen[];
extern const char kImprivataInSessionExtension[]; extern const char kImprivataInSessionExtension[];
extern const char kImprivataLoginScreenExtension[];
} // namespace behavior_feature } // namespace behavior_feature
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment