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