127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi/*
227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * Copyright (C) 2010 The Android Open Source Project
327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi *
427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * Licensed under the Apache License, Version 2.0 (the "License");
527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * you may not use this file except in compliance with the License.
627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * You may obtain a copy of the License at
727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi *
827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi *      http://www.apache.org/licenses/LICENSE-2.0
927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi *
1027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * Unless required by applicable law or agreed to in writing, software
1127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * distributed under the License is distributed on an "AS IS" BASIS,
1227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * See the License for the specific language governing permissions and
1427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * limitations under the License.
1527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi */
1627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
1727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi#ifndef __IDRM_SERVICE_LISTENER_H__
1827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi#define __IDRM_SERVICE_LISTENER_H__
1927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
2027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi#include <utils/RefBase.h>
2127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi#include <binder/IInterface.h>
2227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi#include <binder/Parcel.h>
2327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
2427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshinamespace android {
2527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
2627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiclass DrmInfoEvent;
2727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
2827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi/**
2927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * This is the interface class for DRM service listener.
3027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi *
3127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi */
3227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiclass IDrmServiceListener : public IInterface
3327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi{
3427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshipublic:
3527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    enum {
3627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi        NOTIFY = IBinder::FIRST_CALL_TRANSACTION,
3727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    };
3827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
3927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshipublic:
4027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    DECLARE_META_INTERFACE(DrmServiceListener);
4127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
4227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshipublic:
4327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    virtual status_t notify(const DrmInfoEvent& event) = 0;
4427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi};
4527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
4627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi/**
4727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * This is the Binder implementation class for DRM service listener.
4827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi */
4927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiclass BpDrmServiceListener: public BpInterface<IDrmServiceListener>
5027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi{
5127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshipublic:
5227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    BpDrmServiceListener(const sp<IBinder>& impl)
5327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi            : BpInterface<IDrmServiceListener>(impl) {}
5427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
5527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    virtual status_t notify(const DrmInfoEvent& event);
5627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi};
5727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
5827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi/**
5927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * This is the Binder implementation class for DRM service listener.
6027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi */
6127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiclass BnDrmServiceListener: public BnInterface<IDrmServiceListener>
6227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi{
6327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshipublic:
6427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    virtual status_t onTransact(
6527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi            uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags = 0);
6627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi};
6727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
6827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi};
6927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
7027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi#endif /* __IDRM_SERVICE_LISTENER_H__ */
7127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
72