Пример #1
0
void
swfdec_load_object_create (SwfdecAsObject *target, const char *url,
    SwfdecBuffer *data, guint header_count, char **header_names,
    char **header_values, SwfdecLoadObjectProgress progress,
    SwfdecLoadObjectFinish finish)
{
  SwfdecPlayer *player;
  SwfdecLoadObject *load;

  g_return_if_fail (SWFDEC_IS_AS_OBJECT (target));
  g_return_if_fail (url != NULL);
  g_return_if_fail (header_count == 0 || header_names != NULL);
  g_return_if_fail (header_count == 0 || header_values != NULL);
  g_return_if_fail (finish != NULL);

  player = SWFDEC_PLAYER (swfdec_gc_object_get_context (target));
  load = g_object_new (SWFDEC_TYPE_LOAD_OBJECT, NULL);
  swfdec_player_root_full (player, load, swfdec_load_object_mark, g_object_unref);

  load->target = target;
  load->url = url;
  load->buffer = data;
  load->header_count = header_count;
  load->header_names = header_names;
  load->header_values = header_values;
  load->progress = progress;
  load->finish = finish;
  /* get the current security */
  g_assert (SWFDEC_AS_CONTEXT (player)->frame);
  load->sandbox = SWFDEC_SANDBOX (SWFDEC_AS_CONTEXT (player)->global);
  load->version = SWFDEC_AS_CONTEXT (player)->version;
  swfdec_player_request_resource (player, swfdec_load_object_request, load, NULL);
}
void
swfdec_system_security_loadPolicyFile (SwfdecAsContext *cx,
    SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
    SwfdecAsValue *ret)
{
  SwfdecPlayer *player;
  const char *url_string;
  SwfdecURL *url;

  SWFDEC_AS_CHECK (0, NULL, "s", &url_string);

  player = SWFDEC_PLAYER (cx);
  url = swfdec_player_create_url (player, url_string);
  swfdec_player_request_resource (player, swfdec_system_security_do_loadPolicyFile, 
      url, (GDestroyNotify) swfdec_url_free);
}