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/c/private/ppb_x509_certificate_private.h"
6#include "ppapi/thunk/enter.h"
7#include "ppapi/thunk/ppb_x509_certificate_private_api.h"
8#include "ppapi/thunk/resource_creation_api.h"
9#include "ppapi/thunk/thunk.h"
10
11namespace ppapi {
12namespace thunk {
13
14namespace {
15
16typedef EnterResource<PPB_X509Certificate_Private_API>
17    EnterX509CertificatePrivate;
18
19PP_Resource Create(PP_Instance instance) {
20  EnterResourceCreation enter(instance);
21  if (enter.failed())
22    return 0;
23  return enter.functions()->CreateX509CertificatePrivate(instance);
24}
25
26PP_Bool IsX509CertificatePrivate(PP_Resource resource) {
27  EnterX509CertificatePrivate enter(resource, false);
28  return PP_FromBool(enter.succeeded());
29}
30
31PP_Bool Initialize(PP_Resource certificate,
32                   const char *bytes,
33                   uint32_t length) {
34  EnterX509CertificatePrivate enter(certificate, true);
35  if (enter.failed())
36    return PP_FALSE;
37  return enter.object()->Initialize(bytes, length);
38}
39
40PP_Var GetField(PP_Resource certificate,
41                PP_X509Certificate_Private_Field field) {
42  EnterX509CertificatePrivate enter(certificate, true);
43  if (enter.failed())
44    return PP_MakeUndefined();
45  return enter.object()->GetField(field);
46}
47
48const PPB_X509Certificate_Private g_ppb_x509_certificate_thunk = {
49  &Create,
50  &IsX509CertificatePrivate,
51  &Initialize,
52  &GetField
53};
54
55}  // namespace
56
57const PPB_X509Certificate_Private_0_1*
58GetPPB_X509Certificate_Private_0_1_Thunk() {
59  return &g_ppb_x509_certificate_thunk;
60}
61
62}  // namespace thunk
63}  // namespace ppapi
64