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)
55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// From ppb_url_request_info.idl modified Tue Aug 20 08:13:36 2013.
6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ppapi/c/pp_errors.h"
8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ppapi/c/ppb_url_request_info.h"
9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ppapi/shared_impl/tracked_callback.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/thunk/enter.h"
115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ppapi/thunk/ppapi_thunk_export.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/thunk/ppb_url_request_info_api.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ppapi {
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace thunk {
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace {
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_Resource Create(PP_Instance instance) {
20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  VLOG(4) << "PPB_URLRequestInfo::Create()";
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EnterResourceCreation enter(instance);
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (enter.failed())
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return 0;
24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  return enter.functions()->CreateURLRequestInfo(instance);
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_Bool IsURLRequestInfo(PP_Resource resource) {
28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  VLOG(4) << "PPB_URLRequestInfo::IsURLRequestInfo()";
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EnterResource<PPB_URLRequestInfo_API> enter(resource, false);
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return PP_FromBool(enter.succeeded());
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_Bool SetProperty(PP_Resource request,
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    PP_URLRequestProperty property,
35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                    struct PP_Var value) {
36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  VLOG(4) << "PPB_URLRequestInfo::SetProperty()";
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EnterResource<PPB_URLRequestInfo_API> enter(request, true);
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (enter.failed())
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return PP_FALSE;
40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  return enter.object()->SetProperty(property, value);
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)PP_Bool AppendDataToBody(PP_Resource request, const void* data, uint32_t len) {
44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  VLOG(4) << "PPB_URLRequestInfo::AppendDataToBody()";
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EnterResource<PPB_URLRequestInfo_API> enter(request, true);
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (enter.failed())
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return PP_FALSE;
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return enter.object()->AppendDataToBody(data, len);
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_Bool AppendFileToBody(PP_Resource request,
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         PP_Resource file_ref,
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         int64_t start_offset,
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         int64_t number_of_bytes,
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         PP_Time expected_last_modified_time) {
56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  VLOG(4) << "PPB_URLRequestInfo::AppendFileToBody()";
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EnterResource<PPB_URLRequestInfo_API> enter(request, true);
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (enter.failed())
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return PP_FALSE;
60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  return enter.object()->AppendFileToBody(file_ref,
61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                          start_offset,
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          number_of_bytes,
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          expected_last_modified_time);
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)const PPB_URLRequestInfo_1_0 g_ppb_urlrequestinfo_thunk_1_0 = {
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  &Create,
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  &IsURLRequestInfo,
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  &SetProperty,
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  &AppendDataToBody,
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  &AppendFileToBody
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)PPAPI_THUNK_EXPORT const PPB_URLRequestInfo_1_0*
775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    GetPPB_URLRequestInfo_1_0_Thunk() {
78c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  return &g_ppb_urlrequestinfo_thunk_1_0;
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace thunk
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace ppapi
83