1282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski/*
2282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Copyright (C) 2009 The Android Open Source Project
3282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski *
4282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Licensed under the Apache License, Version 2.0 (the "License");
5282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * you may not use this file except in compliance with the License.
6282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * You may obtain a copy of the License at
7282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski *
8282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski *      http://www.apache.org/licenses/LICENSE-2.0
9282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski *
10282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Unless required by applicable law or agreed to in writing, software
11282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * distributed under the License is distributed on an "AS IS" BASIS,
12282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * See the License for the specific language governing permissions and
14282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * limitations under the License.
15282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */
16282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
17282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipackage com.android.layoutlib.bridge.android;
18282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
19282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiimport android.content.ContentResolver;
20282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiimport android.content.Context;
21282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiimport android.content.IContentProvider;
22282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiimport android.database.ContentObserver;
23282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiimport android.net.Uri;
24282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiimport android.os.Bundle;
25282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
26282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski/**
27282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * A mock content resolver for the LayoutLib Bridge.
28282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * <p/>
29282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * It won't serve any actual data but it's good enough for all
30282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * the widgets which expect to have a content resolver available via
31282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * {@link BridgeContext#getContentResolver()}.
32282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */
33282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipublic class BridgeContentResolver extends ContentResolver {
34282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
35282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    private BridgeContentProvider mProvider = null;
36282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
37282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    public BridgeContentResolver(Context context) {
38282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski        super(context);
39282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    }
40282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
41282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    @Override
42282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    public IContentProvider acquireProvider(Context c, String name) {
43282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski        if (mProvider == null) {
44282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski            mProvider = new BridgeContentProvider();
45282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski        }
46282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
47282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski        return mProvider;
48282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    }
49282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
50282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    @Override
51282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    public IContentProvider acquireExistingProvider(Context c, String name) {
52282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski        if (mProvider == null) {
53282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski            mProvider = new BridgeContentProvider();
54282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski        }
55282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
56282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski        return mProvider;
57282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    }
58282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
59282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    @Override
60282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    public boolean releaseProvider(IContentProvider icp) {
61282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski        // ignore
62282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski        return false;
63282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    }
64282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
65282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    @Override
66282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    protected IContentProvider acquireUnstableProvider(Context c, String name) {
67282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski        return acquireProvider(c, name);
68282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    }
69282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
70282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    @Override
71282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    public boolean releaseUnstableProvider(IContentProvider icp) {
72282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski        return releaseProvider(icp);
73282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    }
74282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
75282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    /** @hide */
76282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    @Override
77282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    public void unstableProviderDied(IContentProvider icp) {
78282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    }
79282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
80282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    /**
81282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski     * Stub for the layoutlib bridge content resolver.
82282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski     */
83282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    @Override
84282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    public void registerContentObserver(Uri uri, boolean notifyForDescendents,
85282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski            ContentObserver observer) {
86282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski        // pass
87282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    }
88282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
89282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    /**
90282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski     * Stub for the layoutlib bridge content resolver.
91282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski     */
92282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    @Override
93282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    public void unregisterContentObserver(ContentObserver observer) {
94282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski        // pass
95282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    }
96282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
97282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    /**
98282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski     * Stub for the layoutlib bridge content resolver.
99282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski     */
100282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    @Override
101282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    public void notifyChange(Uri uri, ContentObserver observer, boolean syncToNetwork) {
102282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski        // pass
103282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    }
104282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
105282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    /**
106282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski     * Stub for the layoutlib bridge content resolver.
107282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski     */
108282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    @Override
109282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    public void startSync(Uri uri, Bundle extras) {
110282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski        // pass
111282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    }
112282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
113282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    /**
114282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski     * Stub for the layoutlib bridge content resolver.
115282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski     */
116282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    @Override
117282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    public void cancelSync(Uri uri) {
118282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski        // pass
119282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    }
120282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski}
121