1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
// Copyright 2013 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 CONTENT_BROWSER_MEDIA_ANDROID_MEDIA_DRM_CREDENTIAL_MANAGER_H_
#define CONTENT_BROWSER_MEDIA_ANDROID_MEDIA_DRM_CREDENTIAL_MANAGER_H_
#include <jni.h>
#include <string>
#include "base/callback.h"
#include "base/memory/singleton.h"
#include "media/base/android/media_drm_bridge.h"
namespace content {
// This class manages the media DRM credentials on Android.
class MediaDrmCredentialManager {
public:
static MediaDrmCredentialManager* GetInstance();
typedef base::Callback<void(bool)> ResetCredentialsCB;
// Called to reset the DRM credentials. (for Java)
static void ResetCredentials(JNIEnv* env, jclass clazz, jobject callback);
// Called to reset the DRM credentials. The result is returned in the
// |reset_credentials_cb|.
void ResetCredentials(const ResetCredentialsCB& reset_credentials_cb);
static bool RegisterMediaDrmCredentialManager(JNIEnv* env);
private:
friend struct DefaultSingletonTraits<MediaDrmCredentialManager>;
friend class Singleton<MediaDrmCredentialManager>;
typedef media::MediaDrmBridge::SecurityLevel SecurityLevel;
MediaDrmCredentialManager();
~MediaDrmCredentialManager();
// Callback function passed to MediaDrmBridge. It is called when credentials
// reset is completed.
void OnResetCredentialsCompleted(SecurityLevel security_level, bool success);
// Resets DRM credentials for a particular |security_level|. Returns false if
// we fail to create the MediaDrmBridge at all, in which case we cannot reset
// the credentials. Otherwise, the result is returned asynchronously in
// OnResetCredentialsCompleted() function.
bool ResetCredentialsInternal(SecurityLevel security_level);
// The MediaDrmBridge object used to perform the credential reset.
scoped_ptr<media::MediaDrmBridge> media_drm_bridge_;
// The callback provided by the caller.
ResetCredentialsCB reset_credentials_cb_;
DISALLOW_COPY_AND_ASSIGN(MediaDrmCredentialManager);
};
} // namespace content
#endif // CONTENT_BROWSER_MEDIA_ANDROID_MEDIA_DRM_CREDENTIAL_MANAGER_H_
|