11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved.
21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be
31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file.
41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccipackage org.chromium.net;
61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciimport java.net.URL;
81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciimport java.util.List;
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciimport java.util.Map;
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/**
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * Contains basic information about a response. Sent to the embedder whenever
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * headers are received.
141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */
151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccipublic abstract interface ResponseInfo {
161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    /**
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     * Return the url the response is for (Not the original URL - after
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     * redirects, it's the new URL).
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     */
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    URL getUrl();
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    /**
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     *
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     * @return the url chain, including all redirects.  The originally
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     * requested URL is first.
261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     */
271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    URL[] getUrlChain();
281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    /**
301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     * Returns the HTTP status code.
311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     */
321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    int getHttpStatusCode();
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    /**
351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     * Returns an unmodifiable map of the response-header fields and values.
361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     * The null key is mapped to the HTTP status line for compatibility with
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     * HttpUrlConnection.
381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     */
391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    Map<String, List<String>> getAllHeaders();
401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    /** True if the response came from the cache.  Requests that were
421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     * revalidated over the network before being retrieved from the cache are
431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     * considered cached.
441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     */
451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    boolean wasCached();
461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    /**
481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     *
491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     * @return
501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     */
511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    boolean wasFetchedOverSPDY();
521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    /**
541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     *
551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     * @return
561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     */
571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    boolean wasFetchedOverQUIC();
581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
59