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