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)#include "ppapi/cpp/url_request_info.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/cpp/file_ref.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/cpp/instance_handle.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/cpp/module.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/cpp/module_impl.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace pp {
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace {
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)template <> const char* interface_name<PPB_URLRequestInfo_1_0>() {
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return PPB_URLREQUESTINFO_INTERFACE_1_0;
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)URLRequestInfo::URLRequestInfo(const InstanceHandle& instance) {
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (!has_interface<PPB_URLRequestInfo_1_0>())
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return;
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PassRefFromConstructor(
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      get_interface<PPB_URLRequestInfo_1_0>()->Create(instance.pp_instance()));
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)URLRequestInfo::URLRequestInfo(const URLRequestInfo& other)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    : Resource(other) {
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool URLRequestInfo::SetProperty(PP_URLRequestProperty property,
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                 const Var& value) {
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (!has_interface<PPB_URLRequestInfo_1_0>())
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return false;
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return PP_ToBool(get_interface<PPB_URLRequestInfo_1_0>()->SetProperty(
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      pp_resource(), property, value.pp_var()));
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool URLRequestInfo::AppendDataToBody(const void* data, uint32_t len) {
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (!has_interface<PPB_URLRequestInfo_1_0>())
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return false;
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return PP_ToBool(get_interface<PPB_URLRequestInfo_1_0>()->AppendDataToBody(
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      pp_resource(), data, len));
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool URLRequestInfo::AppendFileToBody(const FileRef& file_ref,
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      PP_Time expected_last_modified_time) {
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (!has_interface<PPB_URLRequestInfo_1_0>())
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return false;
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return PP_ToBool(
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      get_interface<PPB_URLRequestInfo_1_0>()->AppendFileToBody(
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          pp_resource(),
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          file_ref.pp_resource(),
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          0,
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          -1,
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          expected_last_modified_time));
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool URLRequestInfo::AppendFileRangeToBody(
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const FileRef& file_ref,
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int64_t start_offset,
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int64_t length,
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    PP_Time expected_last_modified_time) {
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (!has_interface<PPB_URLRequestInfo_1_0>())
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return false;
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return PP_ToBool(get_interface<PPB_URLRequestInfo_1_0>()->AppendFileToBody(
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      pp_resource(),
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      file_ref.pp_resource(),
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      start_offset,
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      length,
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      expected_last_modified_time));
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace pp
77