int32_t
ppb_flash_navigate(PP_Resource request_info, const char *target, PP_Bool from_user_action)
{

    struct pp_url_request_info_s *ri =
        pp_resource_acquire(request_info, PP_RESOURCE_URL_REQUEST_INFO);
    if (!ri) {
        trace_error("%s, bad resource\n", __func__);
        return PP_ERROR_BADRESOURCE;
    }
    pp_resource_release(request_info);

    PP_Resource url_loader = ppb_url_loader_create(ri->instance->id);
    int32_t result = ppb_url_loader_open_target(url_loader, request_info,
                                                PP_MakeCCB(nop_callback, NULL), target);
    ppb_core_release_resource(url_loader);
    if (result != PP_OK && result != PP_OK_COMPLETIONPENDING)
        return result;

    return PP_OK;
}
int32_t
ppb_url_loader_open(PP_Resource loader, PP_Resource request_info,
                    struct PP_CompletionCallback callback)
{
    return ppb_url_loader_open_target(loader, request_info, callback, NULL);
}