// Copyright 2015 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "chrome/browser/permissions/permission_util.h" #include "base/logging.h" #include "content/public/browser/permission_type.h" using content::PermissionType; // The returned strings must match the RAPPOR metrics in rappor.xml, // and any Field Trial configs for the Permissions kill switch e.g. // Permissions.Action.Geolocation etc.. std::string PermissionUtil::GetPermissionString( content::PermissionType permission) { switch (permission) { case content::PermissionType::GEOLOCATION: return "Geolocation"; case content::PermissionType::NOTIFICATIONS: return "Notifications"; case content::PermissionType::MIDI_SYSEX: return "MidiSysEx"; case content::PermissionType::PUSH_MESSAGING: return "PushMessaging"; case content::PermissionType::DURABLE_STORAGE: return "DurableStorage"; case content::PermissionType::PROTECTED_MEDIA_IDENTIFIER: return "ProtectedMediaIdentifier"; case content::PermissionType::AUDIO_CAPTURE: return "AudioCapture"; case content::PermissionType::VIDEO_CAPTURE: return "VideoCapture"; case content::PermissionType::MIDI: return "Midi"; case content::PermissionType::BACKGROUND_SYNC: return "BackgroundSync"; case content::PermissionType::NUM: break; } NOTREACHED(); return std::string(); } bool PermissionUtil::GetPermissionType(ContentSettingsType type, PermissionType* out) { if (type == CONTENT_SETTINGS_TYPE_GEOLOCATION) { *out = PermissionType::GEOLOCATION; } else if (type == CONTENT_SETTINGS_TYPE_NOTIFICATIONS) { *out = PermissionType::NOTIFICATIONS; } else if (type == CONTENT_SETTINGS_TYPE_MIDI_SYSEX) { *out = PermissionType::MIDI_SYSEX; } else if (type == CONTENT_SETTINGS_TYPE_PUSH_MESSAGING) { *out = PermissionType::PUSH_MESSAGING; } else if (type == CONTENT_SETTINGS_TYPE_DURABLE_STORAGE) { *out = PermissionType::DURABLE_STORAGE; } else if (type == CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA) { *out = PermissionType::VIDEO_CAPTURE; } else if (type == CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC) { *out = PermissionType::AUDIO_CAPTURE; } else if (type == CONTENT_SETTINGS_TYPE_BACKGROUND_SYNC) { *out = PermissionType::BACKGROUND_SYNC; #if defined(OS_ANDROID) || defined(OS_CHROMEOS) } else if (type == CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER) { *out = PermissionType::PROTECTED_MEDIA_IDENTIFIER; #endif } else { return false; } return true; }