Home | History | Annotate | Download | only in private
      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 #ifndef PPAPI_SHARED_IMPL_PRIVATE_PPB_X509_CERTIFICATE_PRIVATE_IMPL_H_
      6 #define PPAPI_SHARED_IMPL_PRIVATE_PPB_X509_CERTIFICATE_PRIVATE_IMPL_H_
      7 
      8 #include <vector>
      9 
     10 #include "base/memory/scoped_ptr.h"
     11 #include "base/values.h"
     12 #include "ppapi/c/private/ppb_x509_certificate_private.h"
     13 #include "ppapi/shared_impl/resource.h"
     14 #include "ppapi/thunk/ppb_x509_certificate_private_api.h"
     15 
     16 namespace IPC {
     17 template <class T>
     18 struct ParamTraits;
     19 }
     20 
     21 namespace ppapi {
     22 
     23 class PPAPI_SHARED_EXPORT PPB_X509Certificate_Fields {
     24  public:
     25   PPB_X509Certificate_Fields();
     26   PPB_X509Certificate_Fields(const PPB_X509Certificate_Fields& fields);
     27 
     28   // Takes ownership of |value|.
     29   void SetField(PP_X509Certificate_Private_Field field, base::Value* value);
     30   PP_Var GetFieldAsPPVar(PP_X509Certificate_Private_Field field) const;
     31 
     32  private:
     33   // Friend so ParamTraits can serialize us.
     34   friend struct IPC::ParamTraits<ppapi::PPB_X509Certificate_Fields>;
     35 
     36   base::ListValue values_;
     37 };
     38 
     39 //------------------------------------------------------------------------------
     40 
     41 class PPAPI_SHARED_EXPORT PPB_X509Certificate_Private_Shared
     42     : public thunk::PPB_X509Certificate_Private_API,
     43       public Resource {
     44  public:
     45   PPB_X509Certificate_Private_Shared(ResourceObjectType type,
     46                                      PP_Instance instance);
     47   // Used by tcp_socket_shared_impl to construct a certificate resource from a
     48   // server certificate.
     49   PPB_X509Certificate_Private_Shared(ResourceObjectType type,
     50                                      PP_Instance instance,
     51                                      const PPB_X509Certificate_Fields& fields);
     52   virtual ~PPB_X509Certificate_Private_Shared();
     53 
     54   // Resource overrides.
     55   virtual PPB_X509Certificate_Private_API*
     56       AsPPB_X509Certificate_Private_API() OVERRIDE;
     57 
     58   // PPB_X509Certificate_Private_API implementation.
     59   virtual PP_Bool Initialize(const char* bytes, uint32_t length) OVERRIDE;
     60   virtual PP_Var GetField(PP_X509Certificate_Private_Field field) OVERRIDE;
     61 
     62  protected:
     63   virtual bool ParseDER(const std::vector<char>& der,
     64                         PPB_X509Certificate_Fields* result);
     65 
     66  private:
     67   scoped_ptr<PPB_X509Certificate_Fields> fields_;
     68 
     69   DISALLOW_COPY_AND_ASSIGN(PPB_X509Certificate_Private_Shared);
     70 };
     71 
     72 }  // namespace ppapi
     73 
     74 #endif  // PPAPI_SHARED_IMPL_PRIVATE_X509_CERTIFICATE_PRIVATE_IMPL_H_
     75