MTP: Use media provider database to implement MTP device support.

Uses a new "MTP objects" table in the media provider to support basic
enumeration of the external storage file system.
Support for accessing audio, video and image metadata in the existing
media provider tables will be added in a later commit.

The C++ MtpDatabase class is now abstract, to support a proxy subclass that
calls through JNI to the Java MtpDatabase class in the media provider.

Change-Id: I90f0db5f3acc5d35ae78c27a8507edff16d14305
Signed-off-by: Mike Lockwood <lockwood@android.com>
diff --git a/media/mtp/MtpServer.h b/media/mtp/MtpServer.h
index 25635af..09556b3 100644
--- a/media/mtp/MtpServer.h
+++ b/media/mtp/MtpServer.h
@@ -26,9 +26,9 @@
 
 namespace android {
 
-class MtpStorage;
-class MtpSqliteDatabase;
+class MtpDatabase;
 class MtpProperty;
+class MtpStorage;
 
 class MtpServer {
 
@@ -36,10 +36,7 @@
     // file descriptor for MTP kernel driver
     int                 mFD;
 
-    // path to our sqlite3 database
-    const char*         mDatabasePath;
-
-    MtpSqliteDatabase*  mDatabase;
+    MtpDatabase*        mDatabase;
 
     // group to own new files and folders
     int                 mFileGroup;
@@ -67,7 +64,7 @@
     size_t              mSendObjectFileSize;
 
 public:
-                        MtpServer(int fd, const char* databasePath,
+                        MtpServer(int fd, MtpDatabase* database,
                                     int fileGroup, int filePerm, int directoryPerm);
     virtual             ~MtpServer();