summaryrefslogtreecommitdiffstats
path: root/media/libmediaplayerservice/MediaRecorderClient.cpp
diff options
context:
space:
mode:
authorDave Sparks <>2009-03-27 20:28:22 -0700
committerThe Android Open Source Project <initial-contribution@android.com>2009-03-27 20:28:22 -0700
commit8f7f2dcd8b975657e3c33befdaed48fc2966ce34 (patch)
treea1ebb6af385b046d58b36f57e588a344099d745e /media/libmediaplayerservice/MediaRecorderClient.cpp
parenta845f672e491ec3567709501f8af8d3661f184e7 (diff)
downloadframeworks_av-8f7f2dcd8b975657e3c33befdaed48fc2966ce34.zip
frameworks_av-8f7f2dcd8b975657e3c33befdaed48fc2966ce34.tar.gz
frameworks_av-8f7f2dcd8b975657e3c33befdaed48fc2966ce34.tar.bz2
AI 143267: am: CL 143127 Media recorder service requires android.permission.CAMERA to record video
Original author: davidsparks Merged from: //branches/cupcake/... Automated import of CL 143267
Diffstat (limited to 'media/libmediaplayerservice/MediaRecorderClient.cpp')
-rw-r--r--media/libmediaplayerservice/MediaRecorderClient.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/media/libmediaplayerservice/MediaRecorderClient.cpp b/media/libmediaplayerservice/MediaRecorderClient.cpp
index 5d1887d..e0d2947 100644
--- a/media/libmediaplayerservice/MediaRecorderClient.cpp
+++ b/media/libmediaplayerservice/MediaRecorderClient.cpp
@@ -30,11 +30,24 @@
#include <utils/MemoryHeapBase.h>
#include <utils/MemoryBase.h>
#include <media/PVMediaRecorder.h>
+#include <utils/String16.h>
#include "MediaRecorderClient.h"
namespace android {
+const char* cameraPermission = "android.permission.CAMERA";
+
+static bool checkPermission(const char* permissionString) {
+#ifndef HAVE_ANDROID_OS
+ return true;
+#endif
+ if (getpid() == IPCThreadState::self()->getCallingPid()) return true;
+ bool ok = checkCallingPermission(String16(permissionString));
+ if (!ok) LOGE("Request requires %s", permissionString);
+ return ok;
+}
+
status_t MediaRecorderClient::setCamera(const sp<ICamera>& camera)
{
LOGV("setCamera");
@@ -60,6 +73,9 @@ status_t MediaRecorderClient::setPreviewSurface(const sp<ISurface>& surface)
status_t MediaRecorderClient::setVideoSource(int vs)
{
LOGV("setVideoSource(%d)", vs);
+ if (!checkPermission(cameraPermission)) {
+ return PERMISSION_DENIED;
+ }
Mutex::Autolock lock(mLock);
if (mRecorder == NULL) {
LOGE("recorder is not initialized");