PolicyServiceProxy.java revision e714bb9d153cfe13a7f0932e7d67ea08fa5a1d98
19ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank/* 29ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank * Copyright (C) 2011 The Android Open Source Project 39ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank * 49ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank * Licensed under the Apache License, Version 2.0 (the "License"); 59ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank * you may not use this file except in compliance with the License. 69ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank * You may obtain a copy of the License at 79ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank * 89ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank * http://www.apache.org/licenses/LICENSE-2.0 99ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank * 109ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank * Unless required by applicable law or agreed to in writing, software 119ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank * distributed under the License is distributed on an "AS IS" BASIS, 129ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank * See the License for the specific language governing permissions and 149ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank * limitations under the License. 159ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank */ 169ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank 179ba506c4dd498150555f6c59aa758f7467bf9236Marc Blankpackage com.android.emailcommon.service; 189ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank 199ba506c4dd498150555f6c59aa758f7467bf9236Marc Blankimport android.content.Context; 209ba506c4dd498150555f6c59aa758f7467bf9236Marc Blankimport android.os.IBinder; 219ba506c4dd498150555f6c59aa758f7467bf9236Marc Blankimport android.os.RemoteException; 229ba506c4dd498150555f6c59aa758f7467bf9236Marc Blankimport android.util.Log; 239ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank 24c28fdfeaaddbd7d3f3b8f78895303f7a9ae5a521Marc Blankimport com.android.emailcommon.provider.Account; 25c28fdfeaaddbd7d3f3b8f78895303f7a9ae5a521Marc Blankimport com.android.emailcommon.provider.Policy; 26c28fdfeaaddbd7d3f3b8f78895303f7a9ae5a521Marc Blank 279ba506c4dd498150555f6c59aa758f7467bf9236Marc Blankpublic class PolicyServiceProxy extends ServiceProxy implements IPolicyService { 28da3c4b8261825063ddf081e9335823569b813bd3Marc Blank private static final boolean DEBUG_PROXY = false; // DO NOT CHECK THIS IN SET TO TRUE 299ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank private static final String TAG = "PolicyServiceProxy"; 309ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank 319ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank private IPolicyService mService = null; 329ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank private Object mReturn = null; 339ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank 349ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank public PolicyServiceProxy(Context _context) { 35e714bb9d153cfe13a7f0932e7d67ea08fa5a1d98Marc Blank super(_context, getIntentForEmailPackage(_context, "POLICY_INTENT")); 369ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank } 379ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank 389ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank @Override 399ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank public void onConnected(IBinder binder) { 409ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank mService = IPolicyService.Stub.asInterface(binder); 419ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank } 429ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank 439ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank public IBinder asBinder() { 449ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank return null; 459ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank } 469ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank 479ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank @Override 48aeee10e57ef4d931e7708fde218d590453a82aeaMarc Blank public boolean isActive(final Policy arg0) throws RemoteException { 499ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank setTask(new ProxyTask() { 509ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank public void run() throws RemoteException { 519ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank mReturn = mService.isActive(arg0); 529ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank } 539ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank }, "isActive"); 549ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank waitForCompletion(); 559ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank if (DEBUG_PROXY) { 569ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank Log.v(TAG, "isActive: " + ((mReturn == null) ? "null" : mReturn)); 579ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank } 589ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank if (mReturn == null) { 59c28fdfeaaddbd7d3f3b8f78895303f7a9ae5a521Marc Blank throw new ServiceUnavailableException("isActive"); 609ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank } else { 619ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank return (Boolean)mReturn; 629ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank } 639ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank } 649ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank 659ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank @Override 66f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank public void setAccountPolicy(final long accountId, final Policy policy, 67f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank final String securityKey) throws RemoteException { 689ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank setTask(new ProxyTask() { 699ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank public void run() throws RemoteException { 70f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank mService.setAccountPolicy(accountId, policy, securityKey); 719ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank } 72f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank }, "setAccountPolicy"); 739ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank waitForCompletion(); 749ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank } 759ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank 769ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank @Override 779ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank public void remoteWipe() throws RemoteException { 789ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank setTask(new ProxyTask() { 799ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank public void run() throws RemoteException { 809ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank mService.remoteWipe(); 819ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank } 829ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank }, "remoteWipe"); 839ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank } 849ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank 859ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank @Override 869ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank public void setAccountHoldFlag(final long arg0, final boolean arg1) throws RemoteException { 879ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank setTask(new ProxyTask() { 889ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank public void run() throws RemoteException { 899ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank mService.setAccountHoldFlag(arg0, arg1); 909ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank } 919ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank }, "setAccountHoldFlag"); 929ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank } 939ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank 949ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank // Static methods that encapsulate the proxy calls above 95aeee10e57ef4d931e7708fde218d590453a82aeaMarc Blank public static boolean isActive(Context context, Policy policies) { 969ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank try { 979ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank return new PolicyServiceProxy(context).isActive(policies); 989ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank } catch (RemoteException e) { 999ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank } 1009ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank return false; 1019ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank } 1029ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank 1039ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank public static void setAccountHoldFlag(Context context, Account account, boolean newState) { 1049ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank try { 1059ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank new PolicyServiceProxy(context).setAccountHoldFlag(account.mId, newState); 1069ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank } catch (RemoteException e) { 1079ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank throw new IllegalStateException("PolicyService transaction failed"); 1089ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank } 1099ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank } 1109ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank 1119ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank public static void remoteWipe(Context context) { 1129ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank try { 1139ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank new PolicyServiceProxy(context).remoteWipe(); 1149ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank } catch (RemoteException e) { 1159ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank throw new IllegalStateException("PolicyService transaction failed"); 1169ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank } 1179ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank } 1189ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank 119f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank public static void setAccountPolicy(Context context, long accountId, Policy policy, 120f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank String securityKey) { 1219ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank try { 122f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank new PolicyServiceProxy(context).setAccountPolicy(accountId, policy, securityKey); 123f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank return; 1249ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank } catch (RemoteException e) { 1259ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank } 1269ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank throw new IllegalStateException("PolicyService transaction failed"); 1279ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank } 1289ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank} 1299ba506c4dd498150555f6c59aa758f7467bf9236Marc Blank 130