| // Copyright 2015 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_BASE_ANDROID_MEDIA_DRM_BRIDGE_DELEGATE_H_ | 
 | #define MEDIA_BASE_ANDROID_MEDIA_DRM_BRIDGE_DELEGATE_H_ | 
 |  | 
 | #include <stdint.h> | 
 |  | 
 | #include <string> | 
 | #include <vector> | 
 |  | 
 | #include "base/macros.h" | 
 | #include "media/base/android/media_drm_bridge_client.h" | 
 | #include "media/base/eme_constants.h" | 
 | #include "media/base/media_export.h" | 
 |  | 
 | namespace media { | 
 |  | 
 | // Allows embedders to modify the Android MediaDrm flow. Delegates are | 
 | // registered to a specific key system. | 
 | class MEDIA_EXPORT MediaDrmBridgeDelegate { | 
 |  public: | 
 |   MediaDrmBridgeDelegate(); | 
 |   virtual ~MediaDrmBridgeDelegate(); | 
 |  | 
 |   // Returns the UUID of the DRM scheme that this delegate applies to. | 
 |   virtual const UUID GetUUID() const = 0; | 
 |  | 
 |   // Invoked from CreateSession. | 
 |   // If |init_data_out| is filled, it replaces |init_data| to send to the | 
 |   // MediaDrm instance. | 
 |   // If |optional_parameters_out| is filled, it is expected to be an | 
 |   // even-length list of (key, value) pairs to send to the MediaDrm instance. | 
 |   // Returns false if the request should be rejected. | 
 |   virtual bool OnCreateSession( | 
 |       const EmeInitDataType init_data_type, | 
 |       const std::vector<uint8_t>& init_data, | 
 |       std::vector<uint8_t>* init_data_out, | 
 |       std::vector<std::string>* optional_parameters_out); | 
 |  | 
 |  private: | 
 |   DISALLOW_COPY_AND_ASSIGN(MediaDrmBridgeDelegate); | 
 | }; | 
 |  | 
 | }  // namespace media | 
 |  | 
 | #endif  // MEDIA_BASE_ANDROID_MEDIA_DRM_BRIDGE_DELEGATE_H_ |