1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "ppapi/cpp/private/x509_certificate_private.h"
6
7#include "ppapi/cpp/module_impl.h"
8#include "ppapi/cpp/pass_ref.h"
9#include "ppapi/cpp/var.h"
10
11namespace pp {
12
13namespace {
14
15template <> const char* interface_name<PPB_X509Certificate_Private_0_1>() {
16  return PPB_X509CERTIFICATE_PRIVATE_INTERFACE_0_1;
17}
18
19}  // namespace
20
21X509CertificatePrivate::X509CertificatePrivate() : Resource() {}
22
23X509CertificatePrivate::X509CertificatePrivate(PassRef, PP_Resource resource)
24    : Resource(PASS_REF, resource) {
25}
26
27X509CertificatePrivate::X509CertificatePrivate(const InstanceHandle& instance) {
28  if (has_interface<PPB_X509Certificate_Private_0_1>()) {
29    PassRefFromConstructor(get_interface<PPB_X509Certificate_Private_0_1>()->
30        Create(instance.pp_instance()));
31  }
32}
33
34// static
35bool X509CertificatePrivate::IsAvailable() {
36  return has_interface<PPB_X509Certificate_Private_0_1>();
37}
38
39bool X509CertificatePrivate::Initialize(const char* bytes, uint32_t length) {
40  if (!has_interface<PPB_X509Certificate_Private_0_1>())
41    return false;
42  PP_Bool result = get_interface<PPB_X509Certificate_Private_0_1>()->Initialize(
43      pp_resource(),
44      bytes,
45      length);
46  return PP_ToBool(result);
47}
48
49Var X509CertificatePrivate::GetField(
50    PP_X509Certificate_Private_Field field) const {
51  if (!has_interface<PPB_X509Certificate_Private_0_1>())
52    return Var();
53  return Var(PassRef(),
54      get_interface<PPB_X509Certificate_Private_0_1>()->GetField(pp_resource(),
55                                                                 field));
56}
57
58}  // namespace pp
59