174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon/*
274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * Copyright (C) 2009 The Android Open Source Project
374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon *
474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * Licensed under the Apache License, Version 2.0 (the "License");
574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * you may not use this file except in compliance with the License.
674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * You may obtain a copy of the License at
774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon *
874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon *      http://www.apache.org/licenses/LICENSE-2.0
974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon *
1074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * Unless required by applicable law or agreed to in writing, software
1174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * distributed under the License is distributed on an "AS IS" BASIS,
1274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * See the License for the specific language governing permissions and
1474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * limitations under the License.
1574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon */
1674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon
1774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixonpackage android.webkit;
1874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon
1974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixonimport java.io.InputStream;
2074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixonimport java.util.Map;
2174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon
2274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon/**
2374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * This class encapsulates the content generated by a plugin.  The
2474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * data itself is meant to be loaded into webkit via the
2574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * PluginContentLoader class, which needs to be able to construct an
2674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * HTTP response. For this, it needs a stream with the response body,
2774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * the length of the body, the response headers, and the response
2874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * status code. The PluginData class is the container for all these
2974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * parts.
3074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon *
3174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * @hide
3274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * @deprecated This class was intended to be used by Gears. Since Gears was
3374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * deprecated, so is this class.
3474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon */
3574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon@Deprecated
3674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixonpublic final class PluginData {
3774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon    /**
3874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * The content stream.
3974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     */
4074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon    private InputStream mStream;
4174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon    /**
4274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * The content length.
4374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     */
4474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon    private long mContentLength;
4574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon    /**
4674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * The associated HTTP response headers stored as a map of
4774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * lowercase header name to [ unmodified header name, header value].
4874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * TODO: This design was always a hack. Remove (involves updating
4974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * the Gears C++ side).
5074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     */
5174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon    private Map<String, String[]> mHeaders;
5274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon
5374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon    /**
5474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * The associated HTTP response code.
5574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     */
5674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon    private int mStatusCode;
5774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon
5874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon    /**
5974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * Creates a PluginData instance.
6074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     *
6174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * @param stream The stream that supplies content for the plugin.
6274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * @param length The length of the plugin content.
6374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * @param headers The response headers. Map of
6474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * lowercase header name to [ unmodified header name, header value]
6574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * @param length The HTTP response status code.
6674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     *
6774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * @hide
6874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * @deprecated This class was intended to be used by Gears. Since Gears was
6974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * deprecated, so is this class.
7074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     */
7174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon    @Deprecated
7274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon    public PluginData(
7374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon            InputStream stream,
7474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon            long length,
7574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon            Map<String, String[]> headers,
7674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon            int code) {
7774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon        mStream = stream;
7874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon        mContentLength = length;
7974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon        mHeaders = headers;
8074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon        mStatusCode = code;
8174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon    }
8274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon
8374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon    /**
8474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * Returns the input stream that contains the plugin content.
8574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     *
8674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * @return An InputStream instance with the plugin content.
8774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     *
8874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * @hide
8974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * @deprecated This class was intended to be used by Gears. Since Gears was
9074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * deprecated, so is this class.
9174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     */
9274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon    @Deprecated
9374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon    public InputStream getInputStream() {
9474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon        return mStream;
9574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon    }
9674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon
9774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon    /**
9874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * Returns the length of the plugin content.
9974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     *
10074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * @return the length of the plugin content.
10174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     *
10274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * @hide
10374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * @deprecated This class was intended to be used by Gears. Since Gears was
10474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * deprecated, so is this class.
10574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     */
10674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon    @Deprecated
10774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon    public long getContentLength() {
10874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon        return mContentLength;
10974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon    }
11074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon
11174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon    /**
11274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * Returns the HTTP response headers associated with the plugin
11374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * content.
11474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     *
11574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * @return A Map<String, String[]> containing all headers. The
11674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * mapping is 'lowercase header name' to ['unmodified header
11774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * name', header value].
11874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     *
11974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * @hide
12074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * @deprecated This class was intended to be used by Gears. Since Gears was
12174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * deprecated, so is this class.
12274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     */
12374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon    @Deprecated
12474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon    public Map<String, String[]> getHeaders() {
12574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon        return mHeaders;
12674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon    }
12774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon
12874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon    /**
12974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * Returns the HTTP status code for the response.
13074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     *
13174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * @return The HTTP statue code, e.g 200.
13274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     *
13374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * @hide
13474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * @deprecated This class was intended to be used by Gears. Since Gears was
13574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     * deprecated, so is this class.
13674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon     */
13774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon    @Deprecated
13874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon    public int getStatusCode() {
13974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon        return mStatusCode;
14074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon    }
14174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon}
142