code: def _ExtractExtensionInstallEvents(self, settings_dict, parser_mediator):
      
      for extension_id, extension in sorted(settings_dict.items()):
        install_time = extension.get('install_time', None)
        if not install_time:
          parser_mediator.ProduceExtractionWarning(
              'installation time missing for extension ID {0:s}'.format(
                  extension_id))
          continue
  
        try:
          install_time = int(install_time, 10)
        except ValueError:
          parser_mediator.ProduceExtractionWarning((
              'unable to convert installation time for extension ID '
              '{0:s}').format(extension_id))
          continue
  
        manifest = extension.get('manifest', None)
        if not manifest:
          parser_mediator.ProduceExtractionWarning(
              'manifest missing for extension ID {0:s}'.format(extension_id))
          continue
  
        event_data = ChromeExtensionInstallationEventData()
        event_data.extension_id = extension_id
        event_data.extension_name = manifest.get('name', None)
        event_data.path = extension.get('path', None)
  
        date_time = dfdatetime_webkit_time.WebKitTime(timestamp=install_time)
        event = time_events.DateTimeValuesEvent(
            date_time, definitions.TIME_DESCRIPTION_ADDED)
        parser_mediator.ProduceEventWithEventData(event, event_data)
docs: Extract extension installation events.
  
      Args:
        settings_dict (dict[str: object]): settings data from a Preferences file.
        parser_mediator (ParserMediator): mediates interactions between parsers
            and other components, such as storage and dfvfs.