| // Copyright 2016 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef MEDIA_REMOTING_REMOTING_CDM_CONTEXT_H_ |
| #define MEDIA_REMOTING_REMOTING_CDM_CONTEXT_H_ |
| |
| #include "media/base/cdm_context.h" |
| |
| namespace media { |
| namespace remoting { |
| |
| class RemotingCdm; |
| class SharedSession; |
| |
| // TODO(xjz): Merge this with erickung's implementation. |
| // TODO(miu): This class should just be merged into RemotingCdm and implement |
| // both the CDM and CdmContext interfaces. Also, replace the GetSharedSession() |
| // accessor and move it to a new SharedSession::FromCdmContext() function. Then, |
| // neither the controller nor renderer can gain direct access to the CDM impl. |
| // See discussion in https://codereview.chromium.org/2643253003 for more info. |
| class RemotingCdmContext : public CdmContext { |
| public: |
| explicit RemotingCdmContext(RemotingCdm* remoting_cdm); |
| ~RemotingCdmContext() override; |
| |
| // If |cdm_context| is an instance of RemotingCdmContext, return a type-casted |
| // pointer to it. Otherwise, return nullptr. |
| static RemotingCdmContext* From(CdmContext* cdm_context); |
| |
| SharedSession* GetSharedSession() const; |
| |
| // CdmContext implementations. |
| Decryptor* GetDecryptor() override; |
| int GetCdmId() const override; |
| void* GetClassIdentifier() const override; |
| |
| private: |
| RemotingCdm* const remoting_cdm_; // Outlives this class. |
| |
| DISALLOW_COPY_AND_ASSIGN(RemotingCdmContext); |
| }; |
| |
| } // namespace remoting |
| } // namespace media |
| |
| #endif // MEDIA_REMOTING_REMOTING_CDM_CONTEXT_H_ |