add TransferProvider and supporting sources forked from AOSP