1 // Copyright 2013 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.
5 #ifndef MEDIA_BLINK_WEBCONTENTDECRYPTIONMODULE_IMPL_H_
6 #define MEDIA_BLINK_WEBCONTENTDECRYPTIONMODULE_IMPL_H_
8 #include "base/memory/ref_counted.h"
9 #include "base/memory/scoped_ptr.h"
10 #include "base/strings/string16.h"
11 #include "media/base/media_export.h"
12 #include "third_party/WebKit/public/platform/WebContentDecryptionModule.h"
13 #include "third_party/WebKit/public/platform/WebContentDecryptionModuleResult.h"
16 #if defined(ENABLE_PEPPER_CDMS)
19 class WebSecurityOrigin
;
27 class CdmSessionAdapter
;
28 class WebContentDecryptionModuleSessionImpl
;
30 class MEDIA_EXPORT WebContentDecryptionModuleImpl
31 : public blink::WebContentDecryptionModule
{
34 CdmFactory
* cdm_factory
,
35 const base::string16
& key_system
,
36 const blink::WebSecurityOrigin
& security_origin
,
37 const CdmConfig
& cdm_config
,
38 scoped_ptr
<blink::WebContentDecryptionModuleResult
> result
);
40 virtual ~WebContentDecryptionModuleImpl();
42 // blink::WebContentDecryptionModule implementation.
43 virtual blink::WebContentDecryptionModuleSession
* createSession();
45 virtual void setServerCertificate(
46 const uint8
* server_certificate
,
47 size_t server_certificate_length
,
48 blink::WebContentDecryptionModuleResult result
);
50 // Returns the CdmContext associated with this CDM, which must not be nullptr.
51 // TODO(jrummell): Figure out lifetimes, as WMPI may still use the decryptor
52 // after WebContentDecryptionModule is freed. http://crbug.com/330324
53 CdmContext
* GetCdmContext();
56 friend CdmSessionAdapter
;
58 // Takes reference to |adapter|.
59 WebContentDecryptionModuleImpl(scoped_refptr
<CdmSessionAdapter
> adapter
);
61 scoped_refptr
<CdmSessionAdapter
> adapter_
;
63 DISALLOW_COPY_AND_ASSIGN(WebContentDecryptionModuleImpl
);
66 // Allow typecasting from blink type as this is the only implementation.
67 inline WebContentDecryptionModuleImpl
* ToWebContentDecryptionModuleImpl(
68 blink::WebContentDecryptionModule
* cdm
) {
69 return static_cast<WebContentDecryptionModuleImpl
*>(cdm
);
74 #endif // MEDIA_BLINK_WEBCONTENTDECRYPTIONMODULE_IMPL_H_