com.google.android.vending.expansion.downloader.patch 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300
  1. 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.java
  2. index ad6ea0de6..452c7d148 100644
  3. --- a/platform/android/java/src/com/google/android/vending/expansion/downloader/DownloaderClientMarshaller.java
  4. +++ b/platform/android/java/src/com/google/android/vending/expansion/downloader/DownloaderClientMarshaller.java
  5. @@ -32,6 +32,9 @@ import android.os.Messenger;
  6. import android.os.RemoteException;
  7. import android.util.Log;
  8. +// -- GODOT start --
  9. +import java.lang.ref.WeakReference;
  10. +// -- GODOT end --
  11. /**
  12. @@ -118,29 +121,46 @@ public class DownloaderClientMarshaller {
  13. /**
  14. * Target we publish for clients to send messages to IncomingHandler.
  15. */
  16. - final Messenger mMessenger = new Messenger(new Handler() {
  17. + // -- GODOT start --
  18. + private final MessengerHandlerClient mMsgHandler = new MessengerHandlerClient(this);
  19. + final Messenger mMessenger = new Messenger(mMsgHandler);
  20. +
  21. + private static class MessengerHandlerClient extends Handler {
  22. + private final WeakReference<Stub> mDownloader;
  23. + public MessengerHandlerClient(Stub downloader) {
  24. + mDownloader = new WeakReference<>(downloader);
  25. + }
  26. +
  27. @Override
  28. public void handleMessage(Message msg) {
  29. - switch (msg.what) {
  30. - case MSG_ONDOWNLOADPROGRESS:
  31. - Bundle bun = msg.getData();
  32. - if ( null != mContext ) {
  33. - bun.setClassLoader(mContext.getClassLoader());
  34. - DownloadProgressInfo dpi = (DownloadProgressInfo) msg.getData()
  35. - .getParcelable(PARAM_PROGRESS);
  36. - mItf.onDownloadProgress(dpi);
  37. - }
  38. - break;
  39. - case MSG_ONDOWNLOADSTATE_CHANGED:
  40. - mItf.onDownloadStateChanged(msg.getData().getInt(PARAM_NEW_STATE));
  41. - break;
  42. - case MSG_ONSERVICECONNECTED:
  43. - mItf.onServiceConnected(
  44. - (Messenger) msg.getData().getParcelable(PARAM_MESSENGER));
  45. - break;
  46. + Stub downloader = mDownloader.get();
  47. + if (downloader != null) {
  48. + downloader.handleMessage(msg);
  49. }
  50. }
  51. - });
  52. + }
  53. +
  54. + private void handleMessage(Message msg) {
  55. + switch (msg.what) {
  56. + case MSG_ONDOWNLOADPROGRESS:
  57. + Bundle bun = msg.getData();
  58. + if (null != mContext) {
  59. + bun.setClassLoader(mContext.getClassLoader());
  60. + DownloadProgressInfo dpi = (DownloadProgressInfo)msg.getData()
  61. + .getParcelable(PARAM_PROGRESS);
  62. + mItf.onDownloadProgress(dpi);
  63. + }
  64. + break;
  65. + case MSG_ONDOWNLOADSTATE_CHANGED:
  66. + mItf.onDownloadStateChanged(msg.getData().getInt(PARAM_NEW_STATE));
  67. + break;
  68. + case MSG_ONSERVICECONNECTED:
  69. + mItf.onServiceConnected(
  70. + (Messenger)msg.getData().getParcelable(PARAM_MESSENGER));
  71. + break;
  72. + }
  73. + }
  74. + // -- GODOT end --
  75. public Stub(IDownloaderClient itf, Class<?> downloaderService) {
  76. mItf = itf;
  77. diff --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.java
  78. index 979352299..3771d19c9 100644
  79. --- a/platform/android/java/src/com/google/android/vending/expansion/downloader/DownloaderServiceMarshaller.java
  80. +++ b/platform/android/java/src/com/google/android/vending/expansion/downloader/DownloaderServiceMarshaller.java
  81. @@ -25,6 +25,9 @@ import android.os.Message;
  82. import android.os.Messenger;
  83. import android.os.RemoteException;
  84. +// -- GODOT start --
  85. +import java.lang.ref.WeakReference;
  86. +// -- GODOT end --
  87. /**
  88. @@ -108,32 +111,49 @@ public class DownloaderServiceMarshaller {
  89. private static class Stub implements IStub {
  90. private IDownloaderService mItf = null;
  91. - final Messenger mMessenger = new Messenger(new Handler() {
  92. + // -- GODOT start --
  93. + private final MessengerHandlerServer mMsgHandler = new MessengerHandlerServer(this);
  94. + final Messenger mMessenger = new Messenger(mMsgHandler);
  95. +
  96. + private static class MessengerHandlerServer extends Handler {
  97. + private final WeakReference<Stub> mDownloader;
  98. + public MessengerHandlerServer(Stub downloader) {
  99. + mDownloader = new WeakReference<>(downloader);
  100. + }
  101. +
  102. @Override
  103. public void handleMessage(Message msg) {
  104. - switch (msg.what) {
  105. - case MSG_REQUEST_ABORT_DOWNLOAD:
  106. - mItf.requestAbortDownload();
  107. - break;
  108. - case MSG_REQUEST_CONTINUE_DOWNLOAD:
  109. - mItf.requestContinueDownload();
  110. - break;
  111. - case MSG_REQUEST_PAUSE_DOWNLOAD:
  112. - mItf.requestPauseDownload();
  113. - break;
  114. - case MSG_SET_DOWNLOAD_FLAGS:
  115. - mItf.setDownloadFlags(msg.getData().getInt(PARAMS_FLAGS));
  116. - break;
  117. - case MSG_REQUEST_DOWNLOAD_STATE:
  118. - mItf.requestDownloadStatus();
  119. - break;
  120. - case MSG_REQUEST_CLIENT_UPDATE:
  121. - mItf.onClientUpdated((Messenger) msg.getData().getParcelable(
  122. - PARAM_MESSENGER));
  123. - break;
  124. + Stub downloader = mDownloader.get();
  125. + if (downloader != null) {
  126. + downloader.handleMessage(msg);
  127. }
  128. }
  129. - });
  130. + }
  131. +
  132. + private void handleMessage(Message msg) {
  133. + switch (msg.what) {
  134. + case MSG_REQUEST_ABORT_DOWNLOAD:
  135. + mItf.requestAbortDownload();
  136. + break;
  137. + case MSG_REQUEST_CONTINUE_DOWNLOAD:
  138. + mItf.requestContinueDownload();
  139. + break;
  140. + case MSG_REQUEST_PAUSE_DOWNLOAD:
  141. + mItf.requestPauseDownload();
  142. + break;
  143. + case MSG_SET_DOWNLOAD_FLAGS:
  144. + mItf.setDownloadFlags(msg.getData().getInt(PARAMS_FLAGS));
  145. + break;
  146. + case MSG_REQUEST_DOWNLOAD_STATE:
  147. + mItf.requestDownloadStatus();
  148. + break;
  149. + case MSG_REQUEST_CLIENT_UPDATE:
  150. + mItf.onClientUpdated((Messenger)msg.getData().getParcelable(
  151. + PARAM_MESSENGER));
  152. + break;
  153. + }
  154. + }
  155. + // -- GODOT end --
  156. public Stub(IDownloaderService itf) {
  157. mItf = itf;
  158. diff --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.java
  159. index e4b1b0f1c..36cd6aacf 100644
  160. --- a/platform/android/java/src/com/google/android/vending/expansion/downloader/Helpers.java
  161. +++ b/platform/android/java/src/com/google/android/vending/expansion/downloader/Helpers.java
  162. @@ -24,7 +24,10 @@ import android.os.StatFs;
  163. import android.os.SystemClock;
  164. import android.util.Log;
  165. -import com.android.vending.expansion.downloader.R;
  166. +// -- GODOT start --
  167. +//import com.android.vending.expansion.downloader.R;
  168. +import org.godotengine.godot.R;
  169. +// -- GODOT end --
  170. import java.io.File;
  171. import java.text.SimpleDateFormat;
  172. @@ -146,12 +149,14 @@ public class Helpers {
  173. }
  174. return "";
  175. }
  176. - return String.format("%.2f",
  177. + // -- GODOT start --
  178. + return String.format(Locale.ENGLISH, "%.2f",
  179. (float) overallProgress / (1024.0f * 1024.0f))
  180. + "MB /" +
  181. - String.format("%.2f", (float) overallTotal /
  182. + String.format(Locale.ENGLISH, "%.2f", (float) overallTotal /
  183. (1024.0f * 1024.0f))
  184. + "MB";
  185. + // -- GODOT end --
  186. }
  187. /**
  188. @@ -184,7 +189,9 @@ public class Helpers {
  189. }
  190. public static String getSpeedString(float bytesPerMillisecond) {
  191. - return String.format("%.2f", bytesPerMillisecond * 1000 / 1024);
  192. + // -- GODOT start --
  193. + return String.format(Locale.ENGLISH, "%.2f", bytesPerMillisecond * 1000 / 1024);
  194. + // -- GODOT end --
  195. }
  196. public static String getTimeRemaining(long durationInMilliseconds) {
  197. diff --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.java
  198. index 12edd97ab..a0e1165cc 100644
  199. --- a/platform/android/java/src/com/google/android/vending/expansion/downloader/SystemFacade.java
  200. +++ b/platform/android/java/src/com/google/android/vending/expansion/downloader/SystemFacade.java
  201. @@ -26,6 +26,10 @@ import android.net.NetworkInfo;
  202. import android.telephony.TelephonyManager;
  203. import android.util.Log;
  204. +// -- GODOT start --
  205. +import android.annotation.SuppressLint;
  206. +// -- GODOT end --
  207. +
  208. /**
  209. * Contains useful helper functions, typically tied to the application context.
  210. */
  211. @@ -51,6 +55,7 @@ class SystemFacade {
  212. return null;
  213. }
  214. + @SuppressLint("MissingPermission")
  215. NetworkInfo activeInfo = connectivity.getActiveNetworkInfo();
  216. if (activeInfo == null) {
  217. if (Constants.LOGVV) {
  218. @@ -69,6 +74,7 @@ class SystemFacade {
  219. return false;
  220. }
  221. + @SuppressLint("MissingPermission")
  222. NetworkInfo info = connectivity.getActiveNetworkInfo();
  223. boolean isMobile = (info != null && info.getType() == ConnectivityManager.TYPE_MOBILE);
  224. TelephonyManager tm = (TelephonyManager) mContext
  225. diff --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.java
  226. index f1536e80e..4b214b22d 100644
  227. --- a/platform/android/java/src/com/google/android/vending/expansion/downloader/impl/DownloadNotification.java
  228. +++ b/platform/android/java/src/com/google/android/vending/expansion/downloader/impl/DownloadNotification.java
  229. @@ -16,7 +16,11 @@
  230. package com.google.android.vending.expansion.downloader.impl;
  231. -import com.android.vending.expansion.downloader.R;
  232. +// -- GODOT start --
  233. +//import com.android.vending.expansion.downloader.R;
  234. +import org.godotengine.godot.R;
  235. +// -- GODOT end --
  236. +
  237. import com.google.android.vending.expansion.downloader.DownloadProgressInfo;
  238. import com.google.android.vending.expansion.downloader.DownloaderClientMarshaller;
  239. import com.google.android.vending.expansion.downloader.Helpers;
  240. diff --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.java
  241. index b2e0e7af0..c114b8a64 100644
  242. --- a/platform/android/java/src/com/google/android/vending/expansion/downloader/impl/DownloadThread.java
  243. +++ b/platform/android/java/src/com/google/android/vending/expansion/downloader/impl/DownloadThread.java
  244. @@ -146,8 +146,12 @@ public class DownloadThread {
  245. try {
  246. PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
  247. - wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, Constants.TAG);
  248. - wakeLock.acquire();
  249. + // -- GODOT start --
  250. + //wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, Constants.TAG);
  251. + //wakeLock.acquire();
  252. + wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "org.godot.game:wakelock");
  253. + wakeLock.acquire(20 * 60 * 1000L /*20 minutes*/);
  254. + // -- GODOT end --
  255. if (Constants.LOGV) {
  256. Log.v(Constants.TAG, "initiating download for " + mInfo.mFileName);
  257. diff --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.java
  258. index 4babe476f..8d41a7690 100644
  259. --- a/platform/android/java/src/com/google/android/vending/expansion/downloader/impl/DownloaderService.java
  260. +++ b/platform/android/java/src/com/google/android/vending/expansion/downloader/impl/DownloaderService.java
  261. @@ -50,6 +50,10 @@ import android.provider.Settings.Secure;
  262. import android.telephony.TelephonyManager;
  263. import android.util.Log;
  264. +// -- GODOT start --
  265. +import android.annotation.SuppressLint;
  266. +// -- GODOT end --
  267. +
  268. import java.io.File;
  269. /**
  270. @@ -578,6 +582,7 @@ public abstract class DownloaderService extends CustomIntentService implements I
  271. Log.w(Constants.TAG,
  272. "couldn't get connectivity manager to poll network state");
  273. } else {
  274. + @SuppressLint("MissingPermission")
  275. NetworkInfo activeInfo = mConnectivityManager
  276. .getActiveNetworkInfo();
  277. updateNetworkState(activeInfo);