1a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet/* 2a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet * Copyright (C) 2012 The Android Open Source Project 3a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet * 4a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet * Licensed under the Apache License, Version 2.0 (the "License"); 5a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet * you may not use this file except in compliance with the License. 6a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet * You may obtain a copy of the License at 7a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet * 8a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet * http://www.apache.org/licenses/LICENSE-2.0 9a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet * 10a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet * Unless required by applicable law or agreed to in writing, software 11a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet * distributed under the License is distributed on an "AS IS" BASIS, 12a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet * See the License for the specific language governing permissions and 14a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet * limitations under the License. 15a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet */ 16a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet 17a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohetpackage com.android.internal.policy; 18a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet 19a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohetimport com.android.ide.common.rendering.api.LayoutLog; 20a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohetimport com.android.layoutlib.bridge.Bridge; 21a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohetimport com.android.layoutlib.bridge.impl.RenderAction; 22a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet 23a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohetimport android.content.Context; 24a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohetimport android.view.BridgeInflater; 25a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohetimport android.view.FallbackEventHandler; 26a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohetimport android.view.KeyEvent; 27a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohetimport android.view.LayoutInflater; 28a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohetimport android.view.View; 29a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohetimport android.view.Window; 30a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohetimport android.view.WindowManagerPolicy; 31a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet 32a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet/** 33a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet * Custom implementation of PolicyManager that does nothing to run in LayoutLib. 34a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet * 35a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet */ 36a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohetpublic class PolicyManager { 37a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet 38a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet public static Window makeNewWindow(Context context) { 39a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet // this will likely crash somewhere beyond so we log it. 40a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet Bridge.getLog().error(LayoutLog.TAG_UNSUPPORTED, 41a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet "Call to PolicyManager.makeNewWindow is not supported", null); 42a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet return null; 43a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet } 44a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet 45a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet public static LayoutInflater makeNewLayoutInflater(Context context) { 46a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet return new BridgeInflater(context, RenderAction.getCurrentContext().getProjectCallback()); 47a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet } 48a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet 49a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet public static WindowManagerPolicy makeNewWindowManager() { 50a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet // this will likely crash somewhere beyond so we log it. 51a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet Bridge.getLog().error(LayoutLog.TAG_UNSUPPORTED, 52a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet "Call to PolicyManager.makeNewWindowManager is not supported", null); 53a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet return null; 54a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet } 55a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet 56a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet public static FallbackEventHandler makeNewFallbackEventHandler(Context context) { 57a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet return new FallbackEventHandler() { 58a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet @Override 59a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet public void setView(View v) { 60a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet } 61a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet 62a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet @Override 63a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet public void preDispatchKeyEvent(KeyEvent event) { 64a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet } 65a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet 66a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet @Override 67a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet public boolean dispatchKeyEvent(KeyEvent event) { 68a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet return false; 69a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet } 70a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet }; 71a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet } 72a421f6c0ba8c354e2a81830e6402654bbf732780Xavier Ducrohet} 73