1e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson/*
2e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson * Copyright (C) 2012 The Android Open Source Project
3e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson *
4e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson * Licensed under the Apache License, Version 2.0 (the "License");
5e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson * you may not use this file except in compliance with the License.
6e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson * You may obtain a copy of the License at
7e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson *
8e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson *      http://www.apache.org/licenses/LICENSE-2.0
9e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson *
10e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson * Unless required by applicable law or agreed to in writing, software
11e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson * distributed under the License is distributed on an "AS IS" BASIS,
12e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson * See the License for the specific language governing permissions and
14e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson * limitations under the License.
15e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson */
16e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson
17e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilsonpackage java.net;
18e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson
19e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson/**
20e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson * A response cache that supports statistics tracking and updating stored
21e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson * responses. Implementations of {@link ResponseCache} should implement this
22e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson * interface to receive additional support from the HTTP engine.
23e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson *
24e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson * @hide
25e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson */
26e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilsonpublic interface ExtendedResponseCache {
27e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson
28e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson    /*
29e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson     * This hidden interface is defined in a non-hidden package (java.net) so
30e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson     * its @hide tag will be parsed by Doclava. This hides this interface from
31e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson     * implementing classes' documentation.
32e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson     */
33e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson
34e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson    /**
35e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson     * Track an HTTP response being satisfied by {@code source}.
36e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson     * @hide
37e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson     */
38e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson    void trackResponse(ResponseSource source);
39e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson
40e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson    /**
41e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson     * Track an conditional GET that was satisfied by this cache.
42e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson     * @hide
43e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson     */
44e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson    void trackConditionalCacheHit();
45e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson
46e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson    /**
47e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson     * Updates stored HTTP headers using a hit on a conditional GET.
48e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson     * @hide
49e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson     */
50e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson    void update(CacheResponse conditionalCacheHit, HttpURLConnection httpConnection);
51e636ca4d6bd101324bd95fbc817401e6e0b80a2cJesse Wilson}
52