1/*
2 * Copyright (C) 2008 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package android.webkit;
18
19import android.webkit.CacheManager.CacheResult;
20import android.webkit.PluginData;
21import android.webkit.UrlInterceptHandler;
22
23import java.util.Iterator;
24import java.util.LinkedList;
25import java.util.Map;
26
27/**
28 * @hide
29 * @deprecated This class was intended to be used by Gears. Since Gears was
30 * deprecated, so is this class.
31 */
32@Deprecated
33public final class UrlInterceptRegistry {
34
35    private final static String LOGTAG = "intercept";
36
37    private static boolean mDisabled = false;
38
39    private static LinkedList mHandlerList;
40
41    private static synchronized LinkedList getHandlers() {
42        if(mHandlerList == null)
43            mHandlerList = new LinkedList<UrlInterceptHandler>();
44        return mHandlerList;
45    }
46
47    /**
48     * set the flag to control whether url intercept is enabled or disabled
49     *
50     * @param disabled true to disable the cache
51     *
52     * @hide
53     * @deprecated This class was intended to be used by Gears. Since Gears was
54     * deprecated, so is this class.
55     */
56    @Deprecated
57    public static synchronized void setUrlInterceptDisabled(boolean disabled) {
58        mDisabled = disabled;
59    }
60
61    /**
62     * get the state of the url intercept, enabled or disabled
63     *
64     * @return return if it is disabled
65     *
66     * @hide
67     * @deprecated This class was intended to be used by Gears. Since Gears was
68     * deprecated, so is this class.
69     */
70    @Deprecated
71    public static synchronized boolean urlInterceptDisabled() {
72        return mDisabled;
73    }
74
75    /**
76     * Register a new UrlInterceptHandler. This handler will be called
77     * before any that were previously registered.
78     *
79     * @param handler The new UrlInterceptHandler object
80     * @return true if the handler was not previously registered.
81     *
82     * @hide
83     * @deprecated This class was intended to be used by Gears. Since Gears was
84     * deprecated, so is this class.
85     */
86    @Deprecated
87    public static synchronized boolean registerHandler(
88            UrlInterceptHandler handler) {
89        if (!getHandlers().contains(handler)) {
90            getHandlers().addFirst(handler);
91            return true;
92        } else {
93            return false;
94        }
95    }
96
97    /**
98     * Unregister a previously registered UrlInterceptHandler.
99     *
100     * @param handler A previously registered UrlInterceptHandler.
101     * @return true if the handler was found and removed from the list.
102     *
103     * @hide
104     * @deprecated This class was intended to be used by Gears. Since Gears was
105     * deprecated, so is this class.
106     */
107    @Deprecated
108    public static synchronized boolean unregisterHandler(
109            UrlInterceptHandler handler) {
110        return getHandlers().remove(handler);
111    }
112
113    /**
114     * Given an url, returns the CacheResult of the first
115     * UrlInterceptHandler interested, or null if none are.
116     *
117     * @return A CacheResult containing surrogate content.
118     *
119     * @hide
120     * @deprecated This class was intended to be used by Gears. Since Gears was
121     * deprecated, so is this class.
122     */
123    @Deprecated
124    public static synchronized CacheResult getSurrogate(
125            String url, Map<String, String> headers) {
126        if (urlInterceptDisabled()) {
127            return null;
128        }
129        Iterator iter = getHandlers().listIterator();
130        while (iter.hasNext()) {
131            UrlInterceptHandler handler = (UrlInterceptHandler) iter.next();
132            CacheResult result = handler.service(url, headers);
133            if (result != null) {
134                return result;
135            }
136        }
137        return null;
138    }
139
140    /**
141     * Given an url, returns the PluginData of the first
142     * UrlInterceptHandler interested, or null if none are or if
143     * intercepts are disabled.
144     *
145     * @return A PluginData instance containing surrogate content.
146     *
147     * @hide
148     * @deprecated This class was intended to be used by Gears. Since Gears was
149     * deprecated, so is this class.
150     */
151    @Deprecated
152    public static synchronized PluginData getPluginData(
153            String url, Map<String, String> headers) {
154        if (urlInterceptDisabled()) {
155            return null;
156        }
157        Iterator iter = getHandlers().listIterator();
158        while (iter.hasNext()) {
159            UrlInterceptHandler handler = (UrlInterceptHandler) iter.next();
160            PluginData data = handler.getPluginData(url, headers);
161            if (data != null) {
162                return data;
163            }
164        }
165        return null;
166    }
167}
168