summaryrefslogtreecommitdiff
path: root/native/android/storage_manager.cpp
diff options
context:
space:
mode:
authorKenny Root <kroot@google.com>2010-09-22 17:29:43 -0700
committerKenny Root <kroot@google.com>2010-09-28 17:23:26 -0700
commit05105f7abe02b2dff91d6260b3628c8b97816bab (patch)
treef42676d818548d76b2c55045a1bcc4866d6feec1 /native/android/storage_manager.cpp
parentea2cf2f936b03f1720bc43863e41c89ea2a7903a (diff)
Update OBB API to include callbacks
Add a callback for users of the StorageManager API to be able to receive notifications when the requested operation completes for mountObb and unmountObb. Add NDK API to get to ObbInfo like the Java API has. Also update the docs for the API and remove the "STOPSHIP" comments. Change-Id: I23a4409c7f8b74d3169614beba920b4d667990a4
Diffstat (limited to 'native/android/storage_manager.cpp')
-rw-r--r--native/android/storage_manager.cpp31
1 files changed, 21 insertions, 10 deletions
diff --git a/native/android/storage_manager.cpp b/native/android/storage_manager.cpp
index 6dbe7463dd5e..2f2064173988 100644
--- a/native/android/storage_manager.cpp
+++ b/native/android/storage_manager.cpp
@@ -38,20 +38,20 @@ public:
mStorageManager(mgr)
{}
- virtual void onObbResult(const android::String16& filename, const android::String16& state) {
- LOGD("Got obb result (%s, %s)\n", String8(filename).string(), String8(state).string());
- }
+ virtual void onObbResult(const android::String16& filename, const android::String16& state);
};
struct AStorageManager : public RefBase {
protected:
- void* mObbCallback;
+ AStorageManager_obbCallbackFunc mObbCallback;
+ void* mObbCallbackData;
sp<ObbActionListener> mObbActionListener;
sp<IMountService> mMountService;
public:
- AStorageManager() :
- mObbCallback(NULL)
+ AStorageManager()
+ : mObbCallback(NULL)
+ , mObbCallbackData(NULL)
{
}
@@ -73,8 +73,15 @@ public:
return true;
}
- void setObbCallback(void* cb) {
+ void setObbCallback(AStorageManager_obbCallbackFunc cb, void* data) {
mObbCallback = cb;
+ mObbCallbackData = data;
+ }
+
+ void fireCallback(const char* filename, const char* state) {
+ if (mObbCallback != NULL) {
+ mObbCallback(filename, state, mObbCallbackData);
+ }
}
void mountObb(const char* filename, const char* key) {
@@ -85,7 +92,7 @@ public:
void unmountObb(const char* filename, const bool force) {
String16 filename16(filename);
- mMountService->unmountObb(filename16, force);
+ mMountService->unmountObb(filename16, force, mObbActionListener);
}
int isObbMounted(const char* filename) {
@@ -104,6 +111,10 @@ public:
}
};
+void ObbActionListener::onObbResult(const android::String16& filename, const android::String16& state) {
+ mStorageManager->fireCallback(String8(filename).string(), String8(state).string());
+}
+
AStorageManager* AStorageManager_new() {
sp<AStorageManager> mgr = new AStorageManager();
@@ -120,8 +131,8 @@ void AStorageManager_delete(AStorageManager* mgr) {
}
}
-void AStorageManager_setObbCallback(AStorageManager* mgr, void* cb) {
- mgr->setObbCallback(cb);
+void AStorageManager_setObbCallback(AStorageManager* mgr, AStorageManager_obbCallbackFunc cb, void* data) {
+ mgr->setObbCallback(cb, data);
}
void AStorageManager_mountObb(AStorageManager* mgr, const char* filename, const char* key) {