Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 25f845a7 authored by Marvin W.'s avatar Marvin W. 🐿️
Browse files

Start adding Icing Index Service and implementing serious Auth:hasFeatures

parent 17bf9f13
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -238,5 +238,13 @@
                <action android:name="com.google.android.gms.icing.LIGHTWEIGHT_INDEX_SERVICE" />
            </intent-filter>
        </service>

        <service
            android:name="org.microg.gms.icing.IndexService"
            android:exported="true">
            <intent-filter>
                <action android:name="com.google.android.gms.icing.INDEX_SERVICE" />
            </intent-filter>
        </service>
    </application>
</manifest>
Compare cee8188d to 1510aa1b
Original line number Diff line number Diff line
Subproject commit cee8188daef20716b4879be8f34c3ad730161e17
Subproject commit 1510aa1b0adeeed9dbe591b25ad75b015f968d82
+33 −21
Original line number Diff line number Diff line
@@ -18,11 +18,16 @@ package org.microg.gms;

import android.os.Bundle;
import android.os.IBinder;
import android.os.Parcel;
import android.os.RemoteException;
import android.util.Log;

import com.google.android.gms.common.internal.IGmsCallbacks;
import com.google.android.gms.common.internal.IGmsServiceBroker;

public abstract class AbstractGmsServiceBroker extends IGmsServiceBroker.Stub {
    private static final String TAG = "GmsServiceBroker";

    @Override
    public void getPlusService(IGmsCallbacks callback, int versionCode, String packageName,
                               String str2, String[] paramArrayOfString, String str3, Bundle params)
@@ -167,4 +172,11 @@ public abstract class AbstractGmsServiceBroker extends IGmsServiceBroker.Stub {
            throws RemoteException {
        throw new IllegalArgumentException("Address service not supported");
    }

    @Override
    public boolean onTransact(int code, Parcel data, Parcel reply, int flags) throws RemoteException {
        if (super.onTransact(code, data, reply, flags)) return true;
        Log.d(TAG, "onTransact [unknown]: " + code + ", " + data + ", " + flags);
        return false;
    }
}
+18 −4
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package org.microg.gms.auth.loginservice;
import android.accounts.AbstractAccountAuthenticator;
import android.accounts.Account;
import android.accounts.AccountAuthenticatorResponse;
import android.accounts.AccountManager;
import android.accounts.NetworkErrorException;
import android.app.Service;
import android.content.Intent;
@@ -36,6 +37,7 @@ import org.microg.gms.auth.login.LoginActivity;
import org.microg.gms.common.PackageUtils;

import java.util.Arrays;
import java.util.List;

import static android.accounts.AccountManager.ACTION_AUTHENTICATOR_INTENT;
import static android.accounts.AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE;
@@ -95,21 +97,33 @@ public class GoogleLoginService extends Service {

                @Override
                public Bundle updateCredentials(AccountAuthenticatorResponse response, Account account, String authTokenType, Bundle options) throws NetworkErrorException {
                    Log.d(TAG, "updateCredentials: " + account + ", " + authTokenType + ", " + options);
                    return null;
                }

                @Override
                public Bundle hasFeatures(AccountAuthenticatorResponse response, Account account, String[] features) throws NetworkErrorException {
                    Log.d(TAG, "hasFeatures: " + account + ", " + Arrays.toString(features));
                    Bundle result = new Bundle();
                    result.putBoolean(KEY_BOOLEAN_RESULT, true);
                    return result;
                    return GoogleLoginService.this.hasFeatures(account, features);
                }
            }.getIBinder();
        }
        return null;
    }

    private Bundle hasFeatures(Account account, String[] features) {
        Log.d(TAG, "hasFeatures: " + account + ", " + Arrays.toString(features));
        AccountManager accountManager = AccountManager.get(this);
        List<String> services = Arrays.asList(accountManager.getUserData(account, "services").split(","));
        boolean res = true;
        for (String feature : features) {
            if (feature.startsWith("service_") && !services.contains(feature.substring(8)))
                res = false;
        }
        Bundle result = new Bundle();
        result.putBoolean(KEY_BOOLEAN_RESULT, res);
        return result;
    }

    private Bundle getAuthToken(AccountAuthenticatorResponse response, Account account, String authTokenType, Bundle options) {
        options.keySet();
        Log.d(TAG, "getAuthToken: " + account + ", " + authTokenType + ", " + options);
+47 −0
Original line number Diff line number Diff line
/*
 * Copyright 2013-2015 µg Project Team
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.microg.gms.icing;

import android.os.Parcel;
import android.os.RemoteException;
import android.util.Log;

import com.google.android.gms.appdatasearch.CorpusStatus;
import com.google.android.gms.appdatasearch.SuggestSpecification;
import com.google.android.gms.appdatasearch.SuggestionResults;
import com.google.android.gms.appdatasearch.internal.IAppDataSearch;

public class AppDataSearchImpl extends IAppDataSearch.Stub {
    private static final String TAG = "GmsIcingSearchImpl";

    @Override
    public boolean onTransact(int code, Parcel data, Parcel reply, int flags) throws RemoteException {
        if (super.onTransact(code, data, reply, flags)) return true;
        Log.d(TAG, "onTransact [unknown]: " + code + ", " + data + ", " + flags);
        return false;
    }

    @Override
    public SuggestionResults getSuggestions(String var1, String packageName, String[] accounts, int maxNum, SuggestSpecification specs) throws RemoteException {
        return new SuggestionResults("Unknown error");
    }

    @Override
    public CorpusStatus getStatus(String packageName, String accountName) throws RemoteException {
        return new CorpusStatus();
    }
}
Loading