1d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi/*
2d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * Copyright (C) 2010 The Android Open Source Project
3d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi *
4d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * Licensed under the Apache License, Version 2.0 (the "License");
5d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * you may not use this file except in compliance with the License.
6d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * You may obtain a copy of the License at
7d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi *
8d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi *      http://www.apache.org/licenses/LICENSE-2.0
9d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi *
10d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * Unless required by applicable law or agreed to in writing, software
11d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * distributed under the License is distributed on an "AS IS" BASIS,
12d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * See the License for the specific language governing permissions and
14d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * limitations under the License.
15d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */
16d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi
17d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi#ifndef __IDRM_SERVICE_LISTENER_H__
18d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi#define __IDRM_SERVICE_LISTENER_H__
19d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi
20d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi#include <utils/RefBase.h>
21d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi#include <binder/IInterface.h>
22d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi#include <binder/Parcel.h>
23d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi
24d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshinamespace android {
25d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi
26d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshiclass DrmInfoEvent;
27d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi
28d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi/**
29d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * This is the interface class for DRM service listener.
30d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi *
31d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */
32d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshiclass IDrmServiceListener : public IInterface
33d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi{
34d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshipublic:
35d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi    enum {
36d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi        NOTIFY = IBinder::FIRST_CALL_TRANSACTION,
37d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi    };
38d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi
39d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshipublic:
40d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi    DECLARE_META_INTERFACE(DrmServiceListener);
41d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi
42d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshipublic:
43d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi    virtual status_t notify(const DrmInfoEvent& event) = 0;
44d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi};
45d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi
46d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi/**
47d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * This is the Binder implementation class for DRM service listener.
48d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */
49d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshiclass BpDrmServiceListener: public BpInterface<IDrmServiceListener>
50d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi{
51d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshipublic:
52d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi    BpDrmServiceListener(const sp<IBinder>& impl)
53d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi            : BpInterface<IDrmServiceListener>(impl) {}
54d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi
55d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi    virtual status_t notify(const DrmInfoEvent& event);
56d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi};
57d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi
58d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi/**
59d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * This is the Binder implementation class for DRM service listener.
60d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */
61d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshiclass BnDrmServiceListener: public BnInterface<IDrmServiceListener>
62d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi{
63d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshipublic:
64d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi    virtual status_t onTransact(
65d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi            uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags = 0);
66d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi};
67d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi
68d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi};
69d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi
70d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi#endif /* __IDRM_SERVICE_LISTENER_H__ */
71d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi
72