Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(27)

Unified Diff: chrome/browser/chromeos/extensions/device_local_account_management_policy_provider.cc

Issue 2930653002: [Merge to M60] Added UMA for extension permissions used in public sessions (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/chromeos/extensions/device_local_account_management_policy_provider.cc
diff --git a/chrome/browser/chromeos/extensions/device_local_account_management_policy_provider.cc b/chrome/browser/chromeos/extensions/device_local_account_management_policy_provider.cc
index 97817b0f9ac09c8212c76aef1d9083da76e7d229..b05be4018ee05b6a045f8feeda0415425f286539 100644
--- a/chrome/browser/chromeos/extensions/device_local_account_management_policy_provider.cc
+++ b/chrome/browser/chromeos/extensions/device_local_account_management_policy_provider.cc
@@ -10,6 +10,7 @@
#include <string>
#include "base/logging.h"
+#include "base/metrics/histogram_macros.h"
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "base/values.h"
@@ -18,6 +19,8 @@
#include "extensions/common/manifest.h"
#include "extensions/common/manifest_constants.h"
#include "extensions/common/manifest_handlers/app_isolation_info.h"
+#include "extensions/common/permissions/api_permission.h"
+#include "extensions/common/permissions/permissions_info.h"
#include "ui/base/l10n/l10n_util.h"
namespace chromeos {
@@ -760,6 +763,17 @@ bool ArrayContains(const char* const (&char_array)[N],
return ArrayContainsImpl(char_array, N, entry);
}
+// Helper method used to log extension permissions UMA stats.
+void LogPermissionUmaStats(const std::string& permission_string) {
+ const auto* permission_info =
+ extensions::PermissionsInfo::GetInstance()->GetByName(permission_string);
+ // Not a permission.
+ if (!permission_info) return;
+
+ UMA_HISTOGRAM_SPARSE_SLOWLY("Enterprise.PublicSession.ExtensionPermissions",
+ permission_info->id());
+}
+
// Returns true for extensions that are considered safe for Public Sessions,
// which among other things requires the manifest top-level entries to be
// contained in the |kSafeManifestEntries| whitelist and all permissions to be
@@ -807,6 +821,8 @@ bool IsSafeForPublicSession(const extensions::Extension* extension) {
}
for (base::DictionaryValue::Iterator it3(*dict_value);
!it3.IsAtEnd(); it3.Advance()) {
+ // Log permission (dictionary form).
+ LogPermissionUmaStats(it3.key());
if (!ArrayContains(kSafePermissionDicts, it3.key())) {
LOG(ERROR) << extension->id()
<< " has non-whitelisted dict in permission list: "
@@ -825,6 +841,8 @@ bool IsSafeForPublicSession(const extensions::Extension* extension) {
safe = false;
continue;
}
+ // Log permission (usual, string form).
+ LogPermissionUmaStats(permission_string);
// Accept whitelisted permissions.
if (ArrayContains(kSafePermissionStrings, permission_string)) {
continue;
« no previous file with comments | « no previous file | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698