v8::Local Converter::ToV8()

in shell/common/gin_converters/content_converter.cc [137:215]


v8::Local<v8::Value> Converter<content::PermissionType>::ToV8(
    v8::Isolate* isolate,
    const content::PermissionType& val) {
  using PermissionType = electron::WebContentsPermissionHelper::PermissionType;
  // Based on mappings from content/browser/devtools/protocol/browser_handler.cc
  // Not all permissions are currently used by Electron but this will future
  // proof these conversions.
  switch (val) {
    case content::PermissionType::ACCESSIBILITY_EVENTS:
      return StringToV8(isolate, "accessibility-events");
    case content::PermissionType::AR:
      return StringToV8(isolate, "ar");
    case content::PermissionType::BACKGROUND_FETCH:
      return StringToV8(isolate, "background-fetch");
    case content::PermissionType::BACKGROUND_SYNC:
      return StringToV8(isolate, "background-sync");
    case content::PermissionType::CLIPBOARD_READ_WRITE:
      return StringToV8(isolate, "clipboard-read");
    case content::PermissionType::CLIPBOARD_SANITIZED_WRITE:
      return StringToV8(isolate, "clipboard-sanitized-write");
    case content::PermissionType::FONT_ACCESS:
      return StringToV8(isolate, "font-access");
    case content::PermissionType::IDLE_DETECTION:
      return StringToV8(isolate, "idle-detection");
    case content::PermissionType::MIDI_SYSEX:
      return StringToV8(isolate, "midiSysex");
    case content::PermissionType::NFC:
      return StringToV8(isolate, "nfc");
    case content::PermissionType::NOTIFICATIONS:
      return StringToV8(isolate, "notifications");
    case content::PermissionType::PAYMENT_HANDLER:
      return StringToV8(isolate, "payment-handler");
    case content::PermissionType::PERIODIC_BACKGROUND_SYNC:
      return StringToV8(isolate, "periodic-background-sync");
    case content::PermissionType::DURABLE_STORAGE:
      return StringToV8(isolate, "persistent-storage");
    case content::PermissionType::GEOLOCATION:
      return StringToV8(isolate, "geolocation");
    case content::PermissionType::CAMERA_PAN_TILT_ZOOM:
    case content::PermissionType::AUDIO_CAPTURE:
    case content::PermissionType::VIDEO_CAPTURE:
      return StringToV8(isolate, "media");
    case content::PermissionType::PROTECTED_MEDIA_IDENTIFIER:
      return StringToV8(isolate, "mediaKeySystem");
    case content::PermissionType::MIDI:
      return StringToV8(isolate, "midi");
    case content::PermissionType::WAKE_LOCK_SCREEN:
      return StringToV8(isolate, "screen-wake-lock");
    case content::PermissionType::SENSORS:
      return StringToV8(isolate, "sensors");
    case content::PermissionType::STORAGE_ACCESS_GRANT:
      return StringToV8(isolate, "storage-access");
    case content::PermissionType::VR:
      return StringToV8(isolate, "vr");
    case content::PermissionType::WAKE_LOCK_SYSTEM:
      return StringToV8(isolate, "system-wake-lock");
    case content::PermissionType::WINDOW_PLACEMENT:
      return StringToV8(isolate, "window-placement");
    case content::PermissionType::DISPLAY_CAPTURE:
      return StringToV8(isolate, "display-capture");
    case content::PermissionType::NUM:
      break;
  }

  switch (static_cast<PermissionType>(val)) {
    case PermissionType::POINTER_LOCK:
      return StringToV8(isolate, "pointerLock");
    case PermissionType::FULLSCREEN:
      return StringToV8(isolate, "fullscreen");
    case PermissionType::OPEN_EXTERNAL:
      return StringToV8(isolate, "openExternal");
    case PermissionType::SERIAL:
      return StringToV8(isolate, "serial");
    case PermissionType::HID:
      return StringToV8(isolate, "hid");
    default:
      return StringToV8(isolate, "unknown");
  }
}