Path: blob/master/platform/android/java/lib/patches/com.google.android.vending.expansion.downloader.patch
10281 views
diff --git a/platform/android/java/src/com/google/android/vending/expansion/downloader/DownloaderClientMarshaller.java b/platform/android/java/src/com/google/android/vending/expansion/downloader/DownloaderClientMarshaller.java1index ad6ea0de6..452c7d148 1006442--- a/platform/android/java/src/com/google/android/vending/expansion/downloader/DownloaderClientMarshaller.java3+++ b/platform/android/java/src/com/google/android/vending/expansion/downloader/DownloaderClientMarshaller.java4@@ -32,6 +32,9 @@ import android.os.Messenger;5import android.os.RemoteException;6import android.util.Log;78+// -- GODOT start --9+import java.lang.ref.WeakReference;10+// -- GODOT end --111213/**14@@ -118,29 +121,46 @@ public class DownloaderClientMarshaller {15/**16* Target we publish for clients to send messages to IncomingHandler.17*/18- final Messenger mMessenger = new Messenger(new Handler() {19+ // -- GODOT start --20+ private final MessengerHandlerClient mMsgHandler = new MessengerHandlerClient(this);21+ final Messenger mMessenger = new Messenger(mMsgHandler);22+23+ private static class MessengerHandlerClient extends Handler {24+ private final WeakReference<Stub> mDownloader;25+ public MessengerHandlerClient(Stub downloader) {26+ mDownloader = new WeakReference<>(downloader);27+ }28+29@Override30public void handleMessage(Message msg) {31- switch (msg.what) {32- case MSG_ONDOWNLOADPROGRESS:33- Bundle bun = msg.getData();34- if ( null != mContext ) {35- bun.setClassLoader(mContext.getClassLoader());36- DownloadProgressInfo dpi = (DownloadProgressInfo) msg.getData()37- .getParcelable(PARAM_PROGRESS);38- mItf.onDownloadProgress(dpi);39- }40- break;41- case MSG_ONDOWNLOADSTATE_CHANGED:42- mItf.onDownloadStateChanged(msg.getData().getInt(PARAM_NEW_STATE));43- break;44- case MSG_ONSERVICECONNECTED:45- mItf.onServiceConnected(46- (Messenger) msg.getData().getParcelable(PARAM_MESSENGER));47- break;48+ Stub downloader = mDownloader.get();49+ if (downloader != null) {50+ downloader.handleMessage(msg);51}52}53- });54+ }55+56+ private void handleMessage(Message msg) {57+ switch (msg.what) {58+ case MSG_ONDOWNLOADPROGRESS:59+ Bundle bun = msg.getData();60+ if (null != mContext) {61+ bun.setClassLoader(mContext.getClassLoader());62+ DownloadProgressInfo dpi = (DownloadProgressInfo)msg.getData()63+ .getParcelable(PARAM_PROGRESS);64+ mItf.onDownloadProgress(dpi);65+ }66+ break;67+ case MSG_ONDOWNLOADSTATE_CHANGED:68+ mItf.onDownloadStateChanged(msg.getData().getInt(PARAM_NEW_STATE));69+ break;70+ case MSG_ONSERVICECONNECTED:71+ mItf.onServiceConnected(72+ (Messenger)msg.getData().getParcelable(PARAM_MESSENGER));73+ break;74+ }75+ }76+ // -- GODOT end --7778public Stub(IDownloaderClient itf, Class<?> downloaderService) {79mItf = itf;80diff --git a/platform/android/java/src/com/google/android/vending/expansion/downloader/DownloaderServiceMarshaller.java b/platform/android/java/src/com/google/android/vending/expansion/downloader/DownloaderServiceMarshaller.java81index 979352299..3771d19c9 10064482--- a/platform/android/java/src/com/google/android/vending/expansion/downloader/DownloaderServiceMarshaller.java83+++ b/platform/android/java/src/com/google/android/vending/expansion/downloader/DownloaderServiceMarshaller.java84@@ -25,6 +25,9 @@ import android.os.Message;85import android.os.Messenger;86import android.os.RemoteException;8788+// -- GODOT start --89+import java.lang.ref.WeakReference;90+// -- GODOT end --919293/**94@@ -108,32 +111,49 @@ public class DownloaderServiceMarshaller {9596private static class Stub implements IStub {97private IDownloaderService mItf = null;98- final Messenger mMessenger = new Messenger(new Handler() {99+ // -- GODOT start --100+ private final MessengerHandlerServer mMsgHandler = new MessengerHandlerServer(this);101+ final Messenger mMessenger = new Messenger(mMsgHandler);102+103+ private static class MessengerHandlerServer extends Handler {104+ private final WeakReference<Stub> mDownloader;105+ public MessengerHandlerServer(Stub downloader) {106+ mDownloader = new WeakReference<>(downloader);107+ }108+109@Override110public void handleMessage(Message msg) {111- switch (msg.what) {112- case MSG_REQUEST_ABORT_DOWNLOAD:113- mItf.requestAbortDownload();114- break;115- case MSG_REQUEST_CONTINUE_DOWNLOAD:116- mItf.requestContinueDownload();117- break;118- case MSG_REQUEST_PAUSE_DOWNLOAD:119- mItf.requestPauseDownload();120- break;121- case MSG_SET_DOWNLOAD_FLAGS:122- mItf.setDownloadFlags(msg.getData().getInt(PARAMS_FLAGS));123- break;124- case MSG_REQUEST_DOWNLOAD_STATE:125- mItf.requestDownloadStatus();126- break;127- case MSG_REQUEST_CLIENT_UPDATE:128- mItf.onClientUpdated((Messenger) msg.getData().getParcelable(129- PARAM_MESSENGER));130- break;131+ Stub downloader = mDownloader.get();132+ if (downloader != null) {133+ downloader.handleMessage(msg);134}135}136- });137+ }138+139+ private void handleMessage(Message msg) {140+ switch (msg.what) {141+ case MSG_REQUEST_ABORT_DOWNLOAD:142+ mItf.requestAbortDownload();143+ break;144+ case MSG_REQUEST_CONTINUE_DOWNLOAD:145+ mItf.requestContinueDownload();146+ break;147+ case MSG_REQUEST_PAUSE_DOWNLOAD:148+ mItf.requestPauseDownload();149+ break;150+ case MSG_SET_DOWNLOAD_FLAGS:151+ mItf.setDownloadFlags(msg.getData().getInt(PARAMS_FLAGS));152+ break;153+ case MSG_REQUEST_DOWNLOAD_STATE:154+ mItf.requestDownloadStatus();155+ break;156+ case MSG_REQUEST_CLIENT_UPDATE:157+ mItf.onClientUpdated((Messenger)msg.getData().getParcelable(158+ PARAM_MESSENGER));159+ break;160+ }161+ }162+ // -- GODOT end --163164public Stub(IDownloaderService itf) {165mItf = itf;166diff --git a/platform/android/java/src/com/google/android/vending/expansion/downloader/Helpers.java b/platform/android/java/src/com/google/android/vending/expansion/downloader/Helpers.java167index e4b1b0f1c..36cd6aacf 100644168--- a/platform/android/java/src/com/google/android/vending/expansion/downloader/Helpers.java169+++ b/platform/android/java/src/com/google/android/vending/expansion/downloader/Helpers.java170@@ -24,7 +24,10 @@ import android.os.StatFs;171import android.os.SystemClock;172import android.util.Log;173174-import com.android.vending.expansion.downloader.R;175+// -- GODOT start --176+//import com.android.vending.expansion.downloader.R;177+import org.godotengine.godot.R;178+// -- GODOT end --179180import java.io.File;181import java.text.SimpleDateFormat;182@@ -146,12 +149,14 @@ public class Helpers {183}184return "";185}186- return String.format("%.2f",187+ // -- GODOT start --188+ return String.format(Locale.ENGLISH, "%.2f",189(float) overallProgress / (1024.0f * 1024.0f))190+ "MB /" +191- String.format("%.2f", (float) overallTotal /192+ String.format(Locale.ENGLISH, "%.2f", (float) overallTotal /193(1024.0f * 1024.0f))194+ "MB";195+ // -- GODOT end --196}197198/**199@@ -184,7 +189,9 @@ public class Helpers {200}201202public static String getSpeedString(float bytesPerMillisecond) {203- return String.format("%.2f", bytesPerMillisecond * 1000 / 1024);204+ // -- GODOT start --205+ return String.format(Locale.ENGLISH, "%.2f", bytesPerMillisecond * 1000 / 1024);206+ // -- GODOT end --207}208209public static String getTimeRemaining(long durationInMilliseconds) {210diff --git a/platform/android/java/src/com/google/android/vending/expansion/downloader/SystemFacade.java b/platform/android/java/src/com/google/android/vending/expansion/downloader/SystemFacade.java211index 12edd97ab..a0e1165cc 100644212--- a/platform/android/java/src/com/google/android/vending/expansion/downloader/SystemFacade.java213+++ b/platform/android/java/src/com/google/android/vending/expansion/downloader/SystemFacade.java214@@ -26,6 +26,10 @@ import android.net.NetworkInfo;215import android.telephony.TelephonyManager;216import android.util.Log;217218+// -- GODOT start --219+import android.annotation.SuppressLint;220+// -- GODOT end --221+222/**223* Contains useful helper functions, typically tied to the application context.224*/225@@ -51,6 +55,7 @@ class SystemFacade {226return null;227}228229+ @SuppressLint("MissingPermission")230NetworkInfo activeInfo = connectivity.getActiveNetworkInfo();231if (activeInfo == null) {232if (Constants.LOGVV) {233@@ -69,6 +74,7 @@ class SystemFacade {234return false;235}236237+ @SuppressLint("MissingPermission")238NetworkInfo info = connectivity.getActiveNetworkInfo();239boolean isMobile = (info != null && info.getType() == ConnectivityManager.TYPE_MOBILE);240TelephonyManager tm = (TelephonyManager) mContext241diff --git a/platform/android/java/src/com/google/android/vending/expansion/downloader/impl/DownloadNotification.java b/platform/android/java/src/com/google/android/vending/expansion/downloader/impl/DownloadNotification.java242index f1536e80e..4b214b22d 100644243--- a/platform/android/java/src/com/google/android/vending/expansion/downloader/impl/DownloadNotification.java244+++ b/platform/android/java/src/com/google/android/vending/expansion/downloader/impl/DownloadNotification.java245@@ -16,7 +16,11 @@246247package com.google.android.vending.expansion.downloader.impl;248249-import com.android.vending.expansion.downloader.R;250+// -- GODOT start --251+//import com.android.vending.expansion.downloader.R;252+import org.godotengine.godot.R;253+// -- GODOT end --254+255import com.google.android.vending.expansion.downloader.DownloadProgressInfo;256import com.google.android.vending.expansion.downloader.DownloaderClientMarshaller;257import com.google.android.vending.expansion.downloader.Helpers;258diff --git a/platform/android/java/src/com/google/android/vending/expansion/downloader/impl/DownloadThread.java b/platform/android/java/src/com/google/android/vending/expansion/downloader/impl/DownloadThread.java259index b2e0e7af0..c114b8a64 100644260--- a/platform/android/java/src/com/google/android/vending/expansion/downloader/impl/DownloadThread.java261+++ b/platform/android/java/src/com/google/android/vending/expansion/downloader/impl/DownloadThread.java262@@ -146,8 +146,12 @@ public class DownloadThread {263264try {265PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);266- wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, Constants.TAG);267- wakeLock.acquire();268+ // -- GODOT start --269+ //wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, Constants.TAG);270+ //wakeLock.acquire();271+ wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "org.godot.game:wakelock");272+ wakeLock.acquire(20 * 60 * 1000L /*20 minutes*/);273+ // -- GODOT end --274275if (Constants.LOGV) {276Log.v(Constants.TAG, "initiating download for " + mInfo.mFileName);277diff --git a/platform/android/java/src/com/google/android/vending/expansion/downloader/impl/DownloaderService.java b/platform/android/java/src/com/google/android/vending/expansion/downloader/impl/DownloaderService.java278index 4babe476f..8d41a7690 100644279--- a/platform/android/java/src/com/google/android/vending/expansion/downloader/impl/DownloaderService.java280+++ b/platform/android/java/src/com/google/android/vending/expansion/downloader/impl/DownloaderService.java281@@ -50,6 +50,10 @@ import android.provider.Settings.Secure;282import android.telephony.TelephonyManager;283import android.util.Log;284285+// -- GODOT start --286+import android.annotation.SuppressLint;287+// -- GODOT end --288+289import java.io.File;290291/**292@@ -578,6 +582,7 @@ public abstract class DownloaderService extends CustomIntentService implements I293Log.w(Constants.TAG,294"couldn't get connectivity manager to poll network state");295} else {296+ @SuppressLint("MissingPermission")297NetworkInfo activeInfo = mConnectivityManager298.getActiveNetworkInfo();299updateNetworkState(activeInfo);300301302