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

Side by Side Diff: webapk/libs/runtime_library/src/org/chromium/webapk/lib/runtime_library/WebApkServiceImpl.java

Issue 1965583002: Move //webapk to //chrome/android/webapk (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 months 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 package org.chromium.webapk.lib.runtime_library;
6
7 import android.app.Notification;
8 import android.app.NotificationManager;
9 import android.app.PendingIntent;
10 import android.content.Context;
11 import android.content.Intent;
12 import android.content.pm.PackageManager;
13 import android.os.Binder;
14 import android.os.Bundle;
15 import android.os.Parcel;
16 import android.os.RemoteException;
17 import android.util.Log;
18
19 import java.util.Arrays;
20 import java.util.HashSet;
21 import java.util.Set;
22
23 /**
24 * Implements services offered by the minted APK to chrome.
25 */
26 public class WebApkServiceImpl extends IWebApkApi.Stub {
27 public static final String KEY_APP_ICON_ID = "app_icon_id";
28 public static final String KEY_EXPECTED_HOST_BROWSER = "expected_host_browse r";
29 private static final String TAG = "WebApkServiceImpl";
30
31 private final Context mContext;
32 // TODO(hanxi): Removes when org.chromium.webapk.R.java is in the web_apk.de x.
33 private final int mAppIcon;
34 private final String mExpectedHostPackage;
35 private final Set<Integer> mAuthorizedUids = new HashSet<>();
36
37 public WebApkServiceImpl(Context context, Bundle bundle) {
38 mContext = context;
39 mAppIcon = bundle.getInt(KEY_APP_ICON_ID);
40 mExpectedHostPackage = bundle.getString(KEY_EXPECTED_HOST_BROWSER);
41 }
42
43 boolean checkHasAccess(int uid, PackageManager packageManager) {
44 String[] callingPackageNames = packageManager.getPackagesForUid(uid);
45 Log.d(TAG, "Verifying bind request from: " + Arrays.toString(callingPack ageNames));
46 if (callingPackageNames == null) {
47 return false;
48 }
49
50 for (String packageName : callingPackageNames) {
51 if (packageName.equals(mExpectedHostPackage)) {
52 return true;
53 }
54 }
55
56 Log.e(TAG, "Unauthorized request from uid: " + uid);
57 return false;
58 }
59
60 @Override
61 public boolean onTransact(int arg0, Parcel arg1, Parcel arg2, int arg3) thro ws RemoteException {
62 int callingUid = Binder.getCallingUid();
63 if (mExpectedHostPackage != null && !mAuthorizedUids.contains(Binder.get CallingUid())) {
64 if (checkHasAccess(callingUid, mContext.getPackageManager())) {
65 mAuthorizedUids.add(callingUid);
66 } else {
67 throw new RemoteException("Unauthorized caller " + callingUid
68 + " does not match expected host=" + mExpectedHostPackag e);
69 }
70 }
71 return super.onTransact(arg0, arg1, arg2, arg3);
72 }
73
74 @Override
75 public PendingIntent getBroadcastPendingIntent(int requestCode, Intent inten t, int flags) {
76 return PendingIntent.getBroadcast(
77 mContext.getApplicationContext(), requestCode, intent, flags);
78 }
79
80 @Override
81 public int getSmallIconId() {
82 return mAppIcon;
83 }
84
85 @Override
86 public void displayNotification(String platformTag, int platformID, Notifica tion notification) {
87 getNotificationManager().notify(platformTag, platformID, notification);
88 }
89
90 @Override
91 public void closeNotification(String platformTag, int platformID) {
92 getNotificationManager().cancel(platformTag, platformID);
93 }
94
95 private NotificationManager getNotificationManager() {
96 return (NotificationManager) mContext.getSystemService(Context.NOTIFICAT ION_SERVICE);
97 }
98 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698