19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License.
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.webkit;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Context;
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.ArrayList;
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.List;
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * A simple list of initialized plugins. This list gets
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * populated when the plugins are initialized (at
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * browser startup, at the moment).
27385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu *
28f0d973131389621609dfad5befb9afe8b767e08cKristian Monsen * @hide
294a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn * @deprecated This interface was intended to be used by Gears. Since Gears was
30385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu * deprecated, so is this class.
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
32385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu@Deprecated
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class PluginList {
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private ArrayList<Plugin> mPlugins;
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project   /**
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    * Public constructor. Initializes the list of plugins.
38385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    *
39f0d973131389621609dfad5befb9afe8b767e08cKristian Monsen    * @hide
404a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn    * @deprecated This interface was intended to be used by Gears. Since Gears was
414a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn    * deprecated, so is this class.
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    */
43385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    @Deprecated
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public PluginList() {
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mPlugins = new ArrayList<Plugin>();
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project   /**
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    * Returns the list of plugins as a java.util.List.
50385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    *
51f0d973131389621609dfad5befb9afe8b767e08cKristian Monsen    * @hide
524a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn    * @deprecated This interface was intended to be used by Gears. Since Gears was
534a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn    * deprecated, so is this class.
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    */
55385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    @Deprecated
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public synchronized List getList() {
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mPlugins;
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project   /**
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    * Adds a plugin to the list.
62385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    *
63f0d973131389621609dfad5befb9afe8b767e08cKristian Monsen    * @hide
644a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn    * @deprecated This interface was intended to be used by Gears. Since Gears was
654a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn    * deprecated, so is this class.
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    */
67385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    @Deprecated
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public synchronized void addPlugin(Plugin plugin) {
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (!mPlugins.contains(plugin)) {
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            mPlugins.add(plugin);
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project   /**
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    * Removes a plugin from the list.
76385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    *
77f0d973131389621609dfad5befb9afe8b767e08cKristian Monsen    * @hide
784a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn    * @deprecated This interface was intended to be used by Gears. Since Gears was
794a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn    * deprecated, so is this class.
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    */
81385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    @Deprecated
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public synchronized void removePlugin(Plugin plugin) {
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        int location = mPlugins.indexOf(plugin);
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (location != -1) {
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            mPlugins.remove(location);
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project   /**
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    * Clears the plugin list.
91385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    *
92f0d973131389621609dfad5befb9afe8b767e08cKristian Monsen    * @hide
934a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn    * @deprecated This interface was intended to be used by Gears. Since Gears was
944a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn    * deprecated, so is this class.
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    */
96385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    @Deprecated
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public synchronized void clear() {
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mPlugins.clear();
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project   /**
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    * Dispatches the click event to the appropriate plugin.
103385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    *
104f0d973131389621609dfad5befb9afe8b767e08cKristian Monsen    * @hide
1054a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn    * @deprecated This interface was intended to be used by Gears. Since Gears was
1064a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn    * deprecated, so is this class.
1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    */
108385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    @Deprecated
1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public synchronized void pluginClicked(Context context, int position) {
1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        try {
1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Plugin plugin = mPlugins.get(position);
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            plugin.dispatchClickEvent(context);
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } catch (IndexOutOfBoundsException e) {
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            // This can happen if the list of plugins
1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            // gets changed while the pref menu is up.
1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
119