17f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet/*
27f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet * Copyright (C) 2011 The Android Open Source Project
37f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet *
47f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet * Licensed under the Apache License, Version 2.0 (the "License");
57f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet * you may not use this file except in compliance with the License.
67f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet * You may obtain a copy of the License at
77f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet *
87f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet *      http://www.apache.org/licenses/LICENSE-2.0
97f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet *
107f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet * Unless required by applicable law or agreed to in writing, software
117f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet * distributed under the License is distributed on an "AS IS" BASIS,
127f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet * See the License for the specific language governing permissions and
147f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet * limitations under the License.
157f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet */
167f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet
177f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohetpackage android.view;
187f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet
197f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohetimport com.android.layoutlib.bridge.android.BridgeWindow;
207f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohetimport com.android.layoutlib.bridge.android.BridgeWindowSession;
217f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet
2298365d7663cbd82979a5700faf0050220b01084dJeff Brownimport android.content.Context;
237f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohetimport android.os.Handler;
247f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohetimport android.view.View.AttachInfo;
257f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet
26f1dee199a009fec5e3a5d1469f654098261f8b06Xavier Ducrohet/**
27f1dee199a009fec5e3a5d1469f654098261f8b06Xavier Ducrohet * Class allowing access to package-protected methods/fields.
28f1dee199a009fec5e3a5d1469f654098261f8b06Xavier Ducrohet */
297f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohetpublic class AttachInfo_Accessor {
307f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet
317f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet    public static void setAttachInfo(View view) {
3298365d7663cbd82979a5700faf0050220b01084dJeff Brown        Context context = view.getContext();
3398365d7663cbd82979a5700faf0050220b01084dJeff Brown        WindowManager wm = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
3498365d7663cbd82979a5700faf0050220b01084dJeff Brown        Display display = wm.getDefaultDisplay();
3598365d7663cbd82979a5700faf0050220b01084dJeff Brown        ViewRootImpl root = new ViewRootImpl(context, display);
367f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet        AttachInfo info = new AttachInfo(new BridgeWindowSession(), new BridgeWindow(),
3798365d7663cbd82979a5700faf0050220b01084dJeff Brown                display, root, new Handler(), null);
387f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet        info.mHasWindowFocus = true;
397f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet        info.mWindowVisibility = View.VISIBLE;
407f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet        info.mInTouchMode = false; // this is so that we can display selections.
417f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet        info.mHardwareAccelerated = false;
427f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet        view.dispatchAttachedToWindow(info, 0);
437f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet    }
447f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet
457f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet    public static void dispatchOnPreDraw(View view) {
467f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet        view.mAttachInfo.mTreeObserver.dispatchOnPreDraw();
477f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet    }
487f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet}
49