1bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann/*
2bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann * (c) Copyright 2016 Mopria Alliance, Inc.
3bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann * Copyright (C) 2016 The Android Open Source Project
4bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann *
5bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann * Licensed under the Apache License, Version 2.0 (the "License");
6bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann * you may not use this file except in compliance with the License.
7bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann * You may obtain a copy of the License at
8bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann *
9bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann * http://www.apache.org/licenses/LICENSE-2.0
10bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann *
11bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann * Unless required by applicable law or agreed to in writing, software
12bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann * distributed under the License is distributed on an "AS IS" BASIS,
13bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann * See the License for the specific language governing permissions and
15bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann * limitations under the License.
16bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann */
17bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann
18bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmannpackage com.android.printservice.recommendation.plugin.mopria;
19bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann
20bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmannimport android.content.Context;
21bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmannimport android.net.nsd.NsdServiceInfo;
22bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmannimport android.text.TextUtils;
23bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmannimport android.util.Pair;
24bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann
25bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmannimport com.android.printservice.recommendation.plugin.hp.MDnsUtils;
26bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmannimport com.android.printservice.recommendation.plugin.hp.ServiceRecommendationPlugin;
27bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmannimport com.android.printservice.recommendation.plugin.hp.VendorInfo;
28bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmannimport com.android.printservice.recommendation.R;
29bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann
30bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmannpublic class MopriaRecommendationPlugin extends ServiceRecommendationPlugin {
31bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann
32bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann    private static final String PDL__PDF = "application/pdf";
33bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann    private static final String PDL__PCLM = "application/PCLm";
34bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann    private static final String PDL__PWG_RASTER = "image/pwg-raster";
35bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann
36bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann    public MopriaRecommendationPlugin(Context context) {
37bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann        super(context, R.string.plugin_vendor_morpia, new VendorInfo(context.getResources(), R.array.known_print_vendor_info_for_mopria), new String[]{"_ipp._tcp", "_ipps._tcp"});
38bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann    }
39bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann
40bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann    @Override
41bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann    public boolean matchesCriteria(String vendor, NsdServiceInfo nsdServiceInfo) {
42bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann        String pdls = MDnsUtils.getString(nsdServiceInfo.getAttributes().get(PDL_ATTRIBUTE));
43bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann        return (!TextUtils.isEmpty(pdls)
44bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann                && (pdls.contains(PDL__PDF)
45bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann                || pdls.contains(PDL__PCLM)
46bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann                || pdls.contains(PDL__PWG_RASTER)));
47bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann    }
48bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann
49bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann    @Override
50bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann    public int getCount() {
51bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann        Pair<Integer, Integer> count = mListener.getCount();
52bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann        return ((count.first > 1) ? count.second : 0);
53bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann    }
54bfaa47233215996b8554a4b7a1a7b36bb3eaf607Philip P. Moltmann}
55