Plugin.java revision 4a51c20ce607c74914f90fd897f04080121ac13b
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 com.android.internal.R;
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.app.AlertDialog;
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Context;
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.DialogInterface;
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.webkit.WebView;
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Represents a plugin (Java equivalent of the PluginPackageAndroid
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * C++ class in libs/WebKitLib/WebKit/WebCore/plugins/android/)
29385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu *
304a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn * @deprecated This interface was intended to be used by Gears. Since Gears was
31385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu * deprecated, so is this class.
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
33385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu@Deprecated
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class Plugin {
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public interface PreferencesClickHandler {
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public void handleClickEvent(Context context);
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private String mName;
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private String mPath;
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private String mFileName;
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private String mDescription;
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private PreferencesClickHandler mHandler;
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
45385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    /**
464a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn     * @deprecated This interface was intended to be used by Gears. Since Gears was
474a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn     * deprecated, so is this class.
48385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu     */
49385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    @Deprecated
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public Plugin(String name,
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                  String path,
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                  String fileName,
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                  String description) {
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mName = name;
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mPath = path;
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mFileName = fileName;
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mDescription = description;
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mHandler = new DefaultClickHandler();
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
61385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    /**
624a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn     * @deprecated This interface was intended to be used by Gears. Since Gears was
634a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn     * deprecated, so is this class.
64385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu     */
65385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    @Deprecated
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String toString() {
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mName;
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
70385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    /**
714a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn     * @deprecated This interface was intended to be used by Gears. Since Gears was
724a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn     * deprecated, so is this class.
73385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu     */
74385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    @Deprecated
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String getName() {
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mName;
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
79385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    /**
804a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn     * @deprecated This interface was intended to be used by Gears. Since Gears was
814a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn     * deprecated, so is this class.
82385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu     */
83385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    @Deprecated
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String getPath() {
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mPath;
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
88385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    /**
894a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn     * @deprecated This interface was intended to be used by Gears. Since Gears was
904a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn     * deprecated, so is this class.
91385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu     */
92385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    @Deprecated
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String getFileName() {
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mFileName;
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
97385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    /**
984a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn     * @deprecated This interface was intended to be used by Gears. Since Gears was
994a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn     * deprecated, so is this class.
100385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu     */
101385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    @Deprecated
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String getDescription() {
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mDescription;
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
106385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    /**
1074a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn     * @deprecated This interface was intended to be used by Gears. Since Gears was
1084a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn     * deprecated, so is this class.
109385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu     */
110385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    @Deprecated
1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void setName(String name) {
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mName = name;
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
115385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    /**
1164a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn     * @deprecated This interface was intended to be used by Gears. Since Gears was
1174a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn     * deprecated, so is this class.
118385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu     */
119385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    @Deprecated
1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void setPath(String path) {
1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mPath = path;
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
124385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    /**
1254a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn     * @deprecated This interface was intended to be used by Gears. Since Gears was
1264a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn     * deprecated, so is this class.
127385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu     */
128385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    @Deprecated
1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void setFileName(String fileName) {
1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mFileName = fileName;
1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
133385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    /**
1344a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn     * @deprecated This interface was intended to be used by Gears. Since Gears was
1354a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn     * deprecated, so is this class.
136385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu     */
137385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    @Deprecated
1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void setDescription(String description) {
1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mDescription = description;
1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
142385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    /**
1434a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn     * @deprecated This interface was intended to be used by Gears. Since Gears was
1444a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn     * deprecated, so is this class.
145385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu     */
146385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    @Deprecated
1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void setClickHandler(PreferencesClickHandler handler) {
1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mHandler = handler;
1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project   /**
1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    * Invokes the click handler for this plugin.
153385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    *
1544a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn    * @deprecated This interface was intended to be used by Gears. Since Gears was
1554a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn    * deprecated, so is this class.
1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    */
157385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    @Deprecated
1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void dispatchClickEvent(Context context) {
1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (mHandler != null) {
1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            mHandler.handleClickEvent(context);
1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project   /**
1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    * Default click handler. The plugins should implement their own.
166385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    *
1674a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn    * @deprecated This interface was intended to be used by Gears. Since Gears was
1684a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn    * deprecated, so is this class.
1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    */
170385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu    @Deprecated
1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private class DefaultClickHandler implements PreferencesClickHandler,
1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                                                 DialogInterface.OnClickListener {
1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        private AlertDialog mDialog;
174385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu        @Deprecated
1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public void handleClickEvent(Context context) {
1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            // Show a simple popup dialog containing the description
1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            // string of the plugin.
1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            if (mDialog == null) {
1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                mDialog = new AlertDialog.Builder(context)
1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        .setTitle(mName)
1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        .setMessage(mDescription)
1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        .setPositiveButton(R.string.ok, this)
1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        .setCancelable(false)
1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        .show();
1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            }
1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
187385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu        /**
1884a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn         * @deprecated This interface was intended to be used by Gears. Since Gears was
1894a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn         * deprecated, so is this class.
190385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu         */
191385df699a6d602cab501092821a79cc6ab3a390eAndrei Popescu        @Deprecated
1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public void onClick(DialogInterface dialog, int which) {
1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            mDialog.dismiss();
1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            mDialog = null;
1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
198