1328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon/*
2328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon * Copyright (C) 2009 The Android Open Source Project
3328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon *
4328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon * Licensed under the Apache License, Version 2.0 (the "License");
5328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon * you may not use this file except in compliance with the License.
6328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon * You may obtain a copy of the License at
7328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon *
8328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon *      http://www.apache.org/licenses/LICENSE-2.0
9328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon *
10328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon * Unless required by applicable law or agreed to in writing, software
11328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon * distributed under the License is distributed on an "AS IS" BASIS,
12328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon * See the License for the specific language governing permissions and
14328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon * limitations under the License.
15328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon */
16328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon
17328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixonpackage android.webkit;
18328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon
19328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixonimport java.io.InputStream;
20328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixonimport java.util.Map;
21328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon
22328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon/**
23328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon * This class encapsulates the content generated by a plugin.  The
24328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon * data itself is meant to be loaded into webkit via the
25328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon * PluginContentLoader class, which needs to be able to construct an
26328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon * HTTP response. For this, it needs a stream with the response body,
27328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon * the length of the body, the response headers, and the response
28328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon * status code. The PluginData class is the container for all these
29328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon * parts.
30328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon *
31328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon * @hide
32328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon * @deprecated This class was intended to be used by Gears. Since Gears was
33328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon * deprecated, so is this class.
34328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon */
35328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon@Deprecated
36328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixonpublic final class PluginData {
37328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon    /**
38328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * The content stream.
39328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     */
40328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon    private InputStream mStream;
41328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon    /**
42328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * The content length.
43328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     */
44328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon    private long mContentLength;
45328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon    /**
46328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * The associated HTTP response headers stored as a map of
47328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * lowercase header name to [ unmodified header name, header value].
48328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * TODO: This design was always a hack. Remove (involves updating
49328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * the Gears C++ side).
50328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     */
51328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon    private Map<String, String[]> mHeaders;
52328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon
53328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon    /**
54328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * The associated HTTP response code.
55328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     */
56328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon    private int mStatusCode;
57328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon
58328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon    /**
59328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * Creates a PluginData instance.
60328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     *
61328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * @param stream The stream that supplies content for the plugin.
62328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * @param length The length of the plugin content.
63328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * @param headers The response headers. Map of
64328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * lowercase header name to [ unmodified header name, header value]
65328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * @param length The HTTP response status code.
66328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     *
67328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * @hide
68328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * @deprecated This class was intended to be used by Gears. Since Gears was
69328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * deprecated, so is this class.
70328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     */
71328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon    @Deprecated
72328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon    public PluginData(
73328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon            InputStream stream,
74328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon            long length,
75328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon            Map<String, String[]> headers,
76328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon            int code) {
77328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon        mStream = stream;
78328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon        mContentLength = length;
79328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon        mHeaders = headers;
80328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon        mStatusCode = code;
81328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon    }
82328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon
83328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon    /**
84328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * Returns the input stream that contains the plugin content.
85328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     *
86328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * @return An InputStream instance with the plugin content.
87328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     *
88328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * @hide
89328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * @deprecated This class was intended to be used by Gears. Since Gears was
90328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * deprecated, so is this class.
91328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     */
92328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon    @Deprecated
93328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon    public InputStream getInputStream() {
94328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon        return mStream;
95328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon    }
96328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon
97328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon    /**
98328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * Returns the length of the plugin content.
99328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     *
100328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * @return the length of the plugin content.
101328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     *
102328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * @hide
103328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * @deprecated This class was intended to be used by Gears. Since Gears was
104328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * deprecated, so is this class.
105328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     */
106328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon    @Deprecated
107328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon    public long getContentLength() {
108328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon        return mContentLength;
109328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon    }
110328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon
111328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon    /**
112328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * Returns the HTTP response headers associated with the plugin
113328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * content.
114328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     *
115328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * @return A Map<String, String[]> containing all headers. The
116328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * mapping is 'lowercase header name' to ['unmodified header
117328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * name', header value].
118328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     *
119328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * @hide
120328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * @deprecated This class was intended to be used by Gears. Since Gears was
121328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * deprecated, so is this class.
122328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     */
123328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon    @Deprecated
124328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon    public Map<String, String[]> getHeaders() {
125328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon        return mHeaders;
126328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon    }
127328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon
128328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon    /**
129328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * Returns the HTTP status code for the response.
130328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     *
131328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * @return The HTTP statue code, e.g 200.
132328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     *
133328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * @hide
134328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * @deprecated This class was intended to be used by Gears. Since Gears was
135328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     * deprecated, so is this class.
136328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon     */
137328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon    @Deprecated
138328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon    public int getStatusCode() {
139328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon        return mStatusCode;
140328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon    }
141328dd7d7059c70b6776c6e29f9ea315f2f8aed3fJonathan Dixon}
142