Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1352)

Unified Diff: content/public/android/java/src/org/chromium/content/browser/ChildProcessConnectionImpl.java

Issue 2487673006: Fix bug: turns on BIND_EXTERNAL_SERVICE flag on Android N crashes WebAPK. (Closed)
Patch Set: Add a TODO. Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/public/android/java/src/org/chromium/content/browser/ChildProcessConnectionImpl.java
diff --git a/content/public/android/java/src/org/chromium/content/browser/ChildProcessConnectionImpl.java b/content/public/android/java/src/org/chromium/content/browser/ChildProcessConnectionImpl.java
index d13663343a10d2c771d01e19f61472c46c265ec4..99032d485841e21fb8ac1c48891c446da628c949 100644
--- a/content/public/android/java/src/org/chromium/content/browser/ChildProcessConnectionImpl.java
+++ b/content/public/android/java/src/org/chromium/content/browser/ChildProcessConnectionImpl.java
@@ -10,6 +10,7 @@ import android.content.Intent;
import android.content.ServiceConnection;
import android.content.pm.PackageManager;
import android.content.pm.ServiceInfo;
+import android.os.Build;
import android.os.Bundle;
import android.os.DeadObjectException;
import android.os.IBinder;
@@ -120,10 +121,7 @@ public class ChildProcessConnectionImpl implements ChildProcessConnection {
return intent;
}
- public ChildServiceConnection(int bindFlags, boolean needsExtraBindFlags) {
- if (needsExtraBindFlags && mCreationParams != null) {
- bindFlags = mCreationParams.addExtraBindFlags(bindFlags);
- }
+ public ChildServiceConnection(int bindFlags) {
mBindFlags = bindFlags;
}
@@ -226,16 +224,18 @@ public class ChildProcessConnectionImpl implements ChildProcessConnection {
mCreationParams = creationParams;
int initialFlags = Context.BIND_AUTO_CREATE;
if (mAlwaysInForeground) initialFlags |= Context.BIND_IMPORTANT;
- // "external service" attribute is approximated by "exported" attribute.
- // TODO(mnaganov): Update after the release of the next Android SDK.
- final boolean needsExtraBindFlags = isExportedService(inSandbox, mContext, mServiceName);
- mInitialBinding = new ChildServiceConnection(initialFlags, needsExtraBindFlags);
+ int extraBindFlags = 0;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && mCreationParams != null
+ && mCreationParams.getIsExternalService()
+ && isExportedService(inSandbox, mContext, mServiceName)) {
+ extraBindFlags = Context.BIND_EXTERNAL_SERVICE;
+ }
+ mInitialBinding = new ChildServiceConnection(initialFlags | extraBindFlags);
mStrongBinding = new ChildServiceConnection(
- Context.BIND_AUTO_CREATE | Context.BIND_IMPORTANT, needsExtraBindFlags);
+ Context.BIND_AUTO_CREATE | Context.BIND_IMPORTANT | extraBindFlags);
mWaivedBinding = new ChildServiceConnection(
- Context.BIND_AUTO_CREATE | Context.BIND_WAIVE_PRIORITY, needsExtraBindFlags);
- mModerateBinding = new ChildServiceConnection(
- Context.BIND_AUTO_CREATE, needsExtraBindFlags);
+ Context.BIND_AUTO_CREATE | Context.BIND_WAIVE_PRIORITY | extraBindFlags);
+ mModerateBinding = new ChildServiceConnection(Context.BIND_AUTO_CREATE | extraBindFlags);
}
private static boolean isExportedService(boolean inSandbox, Context context,

Powered by Google App Engine
This is Rietveld 408576698