Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / media / blink / null_encrypted_media_player_support.h
1 // Copyright 2014 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 MEDIA_BLINK_NULL_ENCRYPTED_MEDIA_PLAYER_SUPPORT_H_
6 #define MEDIA_BLINK_NULL_ENCRYPTED_MEDIA_PLAYER_SUPPORT_H_
7
8 #include "media/base/media_export.h"
9 #include "media/blink/encrypted_media_player_support.h"
10
11 namespace media {
12
13 // A "null" implementation of the EncryptedMediaPlayerSupport interface
14 // that indicates all key systems are not supported. This makes sure that
15 // any attempts to play encrypted content always fail.
16 class MEDIA_EXPORT NullEncryptedMediaPlayerSupport
17     : public EncryptedMediaPlayerSupport {
18  public:
19   static scoped_ptr<EncryptedMediaPlayerSupport> Create(
20       blink::WebMediaPlayerClient* client);
21
22   ~NullEncryptedMediaPlayerSupport() override;
23
24   // Prefixed API methods.
25   blink::WebMediaPlayer::MediaKeyException GenerateKeyRequest(
26       blink::WebLocalFrame* frame,
27       const blink::WebString& key_system,
28       const unsigned char* init_data,
29       unsigned init_data_length) override;
30
31   blink::WebMediaPlayer::MediaKeyException AddKey(
32       const blink::WebString& key_system,
33       const unsigned char* key,
34       unsigned key_length,
35       const unsigned char* init_data,
36       unsigned init_data_length,
37       const blink::WebString& session_id) override;
38
39   blink::WebMediaPlayer::MediaKeyException CancelKeyRequest(
40       const blink::WebString& key_system,
41       const blink::WebString& session_id) override;
42
43   // Unprefixed API methods.
44   void SetInitialContentDecryptionModule(
45       blink::WebContentDecryptionModule* initial_cdm) override;
46   void SetContentDecryptionModule(
47       blink::WebContentDecryptionModule* cdm) override;
48   void SetContentDecryptionModule(
49       blink::WebContentDecryptionModule* cdm,
50       blink::WebContentDecryptionModuleResult result) override;
51
52   // Callback factory and notification methods used by WebMediaPlayerImpl.
53
54   // Creates a callback that Demuxers can use to signal that the content
55   // requires a key. This method makes sure the callback returned can be safely
56   // invoked from any thread.
57   Demuxer::NeedKeyCB CreateNeedKeyCB() override;
58
59   // Creates a callback that renderers can use to set decryptor
60   // ready callback. This method makes sure the callback returned can be safely
61   // invoked from any thread.
62   SetDecryptorReadyCB CreateSetDecryptorReadyCB() override;
63
64   // Called to inform this object that the media pipeline encountered
65   // and handled a decryption error.
66   void OnPipelineDecryptError() override;
67
68  private:
69   NullEncryptedMediaPlayerSupport();
70
71   DISALLOW_COPY_AND_ASSIGN(NullEncryptedMediaPlayerSupport);
72 };
73
74 }  // namespace media
75
76 #endif  // MEDIA_BLINK_NULL_ENCRYPTED_MEDIA_PLAYER_SUPPORT_H_