15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* From trusted/ppb_url_loader_trusted.idl modified Wed Oct  5 14:06:02 2011. */
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef PPAPI_C_TRUSTED_PPB_URL_LOADER_TRUSTED_H_
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPAPI_C_TRUSTED_PPB_URL_LOADER_TRUSTED_H_
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_instance.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_macros.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_resource.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_stdint.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPB_URLLOADERTRUSTED_INTERFACE_0_3 "PPB_URLLoaderTrusted;0.3"
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPB_URLLOADERTRUSTED_INTERFACE PPB_URLLOADERTRUSTED_INTERFACE_0_3
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @file
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * URL loader trusted interfaces. */
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @addtogroup Typedefs
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @{
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Callback that indicates the status of the download and upload for the
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * given URLLoader resource.
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void (*PP_URLLoaderTrusted_StatusCallback)(
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    PP_Instance pp_instance,
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    PP_Resource pp_resource,
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int64_t bytes_sent,
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int64_t total_bytes_to_be_sent,
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int64_t bytes_received,
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int64_t total_bytes_to_be_received);
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @}
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @addtogroup Interfaces
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @{
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Available only to trusted implementations. */
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct PPB_URLLoaderTrusted_0_3 {
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Grant this URLLoader the capability to make unrestricted cross-origin
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * requests.
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void (*GrantUniversalAccess)(PP_Resource loader);
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Registers that the given function will be called when the upload or
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * downloaded byte count has changed. This is not exposed on the untrusted
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * interface because it can be quite chatty and encourages people to write
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * feedback UIs that update as frequently as the progress updates.
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * The other serious gotcha with this callback is that the callback must not
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * mutate the URL loader or cause it to be destroyed.
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * However, the proxy layer needs this information to push to the other
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * process, so we expose it here. Only one callback can be set per URL
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Loader. Setting to a NULL callback will disable it.
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void (*RegisterStatusCallback)(PP_Resource loader,
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                 PP_URLLoaderTrusted_StatusCallback cb);
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct PPB_URLLoaderTrusted_0_3 PPB_URLLoaderTrusted;
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @}
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  /* PPAPI_C_TRUSTED_PPB_URL_LOADER_TRUSTED_H_ */
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
78