1a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Copyright 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccipackage org.chromium.content_public.browser;
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import org.chromium.base.CalledByNative;
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import org.chromium.base.JNINamespace;
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciimport org.chromium.content_public.common.Referrer;
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciimport org.chromium.ui.base.PageTransitionTypes;
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)import java.util.Locale;
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import java.util.Map;
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * Holds parameters for NavigationController.LoadUrl. Parameters should match
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * counterparts in NavigationController::LoadURLParams, including default
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * values.
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@JNINamespace("content")
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)public class LoadUrlParams {
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // Should match NavigationController::LoadUrlType exactly. See comments
23010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    // there for proper usage. initializeConstants() checks that the values
24010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    // are correct.
25010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    public static final int LOAD_TYPE_DEFAULT = 0;
26010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    public static final int LOAD_TYPE_BROWSER_INITIATED_HTTP_POST = 1;
27010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    public static final int LOAD_TYPE_DATA = 2;
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // Should match NavigationController::UserAgentOverrideOption exactly.
30010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    // See comments there for proper usage. initializeConstants() checks that
31010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    // the values are correct.
32010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    public static final int UA_OVERRIDE_INHERIT = 0;
33010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    public static final int UA_OVERRIDE_FALSE = 1;
34010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    public static final int UA_OVERRIDE_TRUE = 2;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // Fields with counterparts in NavigationController::LoadURLParams.
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // Package private so that ContentViewCore.loadUrl can pass them down to
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // native code. Should not be accessed directly anywhere else outside of
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // this class.
40a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    String mUrl;
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int mLoadUrlType;
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int mTransitionType;
43a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    Referrer mReferrer;
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    private Map<String, String> mExtraHeaders;
45a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    private String mVerbatimHeaders;
46a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    int mUaOverrideOption;
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    byte[] mPostData;
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    String mBaseUrlForDataUrl;
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    String mVirtualUrlForDataUrl;
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    boolean mCanLoadLocalResources;
51cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    boolean mIsRendererInitiated;
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
53a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    /**
54a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)     * Creates an instance with default page transition type.
55a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)     * @param url the url to be loaded
56a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)     */
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public LoadUrlParams(String url) {
58a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        this(url, PageTransitionTypes.PAGE_TRANSITION_LINK);
59a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    }
60a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
61a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    /**
62a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)     * Creates an instance with the given page transition type.
63a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)     * @param url the url to be loaded
64a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)     * @param transitionType the PageTransitionType constant corresponding to the load
65a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)     */
66a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    public LoadUrlParams(String url, int transitionType) {
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mUrl = url;
68a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        mTransitionType = transitionType;
69a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
70a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        // Initialize other fields to defaults matching defaults of the native
71a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        // NavigationController::LoadUrlParams.
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mLoadUrlType = LOAD_TYPE_DEFAULT;
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mUaOverrideOption = UA_OVERRIDE_INHERIT;
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mPostData = null;
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mBaseUrlForDataUrl = null;
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mVirtualUrlForDataUrl = null;
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Helper method to create a LoadUrlParams object for data url.
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @param data Data to be loaded.
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @param mimeType Mime type of the data.
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @param isBase64Encoded True if the data is encoded in Base 64 format.
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public static LoadUrlParams createLoadDataParams(
862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        String data, String mimeType, boolean isBase64Encoded) {
872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return createLoadDataParams(data, mimeType, isBase64Encoded, null);
882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    /**
912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * Helper method to create a LoadUrlParams object for data url.
922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * @param data Data to be loaded.
932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * @param mimeType Mime type of the data.
942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * @param isBase64Encoded True if the data is encoded in Base 64 format.
952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * @param charset The character set for the data. Pass null if the mime type
962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     *                does not require a special charset.
972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     */
982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    public static LoadUrlParams createLoadDataParams(
992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            String data, String mimeType, boolean isBase64Encoded, String charset) {
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        StringBuilder dataUrl = new StringBuilder("data:");
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        dataUrl.append(mimeType);
1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (charset != null && !charset.isEmpty()) {
1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            dataUrl.append(";charset=" + charset);
1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        if (isBase64Encoded) {
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            dataUrl.append(";base64");
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        dataUrl.append(",");
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        dataUrl.append(data);
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        LoadUrlParams params = new LoadUrlParams(dataUrl.toString());
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        params.setLoadType(LoadUrlParams.LOAD_TYPE_DATA);
1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        params.setTransitionType(PageTransitionTypes.PAGE_TRANSITION_TYPED);
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return params;
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Helper method to create a LoadUrlParams object for data url with base
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * and virtual url.
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @param data Data to be loaded.
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @param mimeType Mime type of the data.
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @param isBase64Encoded True if the data is encoded in Base 64 format.
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @param baseUrl Base url of this data load. Note that for WebView compatibility,
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     *                baseUrl and historyUrl are ignored if this is a data: url.
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     *                Defaults to about:blank if null.
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @param historyUrl History url for this data load. Note that for WebView compatibility,
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     *                   this is ignored if baseUrl is a data: url. Defaults to about:blank
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     *                   if null.
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public static LoadUrlParams createLoadDataParamsWithBaseUrl(
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            String data, String mimeType, boolean isBase64Encoded,
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            String baseUrl, String historyUrl) {
1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return createLoadDataParamsWithBaseUrl(data, mimeType, isBase64Encoded,
1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                baseUrl, historyUrl, null);
1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    /**
1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * Helper method to create a LoadUrlParams object for data url with base
1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * and virtual url.
1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * @param data Data to be loaded.
1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * @param mimeType Mime type of the data.
1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * @param isBase64Encoded True if the data is encoded in Base 64 format.
1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * @param baseUrl Base url of this data load. Note that for WebView compatibility,
1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     *                baseUrl and historyUrl are ignored if this is a data: url.
1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     *                Defaults to about:blank if null.
1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * @param historyUrl History url for this data load. Note that for WebView compatibility,
1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     *                   this is ignored if baseUrl is a data: url. Defaults to about:blank
1482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     *                   if null.
1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * @param charset The character set for the data. Pass null if the mime type
1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     *                does not require a special charset.
1512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     */
1522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    public static LoadUrlParams createLoadDataParamsWithBaseUrl(
1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            String data, String mimeType, boolean isBase64Encoded,
1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            String baseUrl, String historyUrl, String charset) {
1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        LoadUrlParams params = createLoadDataParams(data, mimeType, isBase64Encoded, charset);
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        // For WebView compatibility, when the base URL has the 'data:'
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        // scheme, we treat it as a regular data URL load and skip setting
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        // baseUrl and historyUrl.
1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        // TODO(joth): we should just append baseURL and historyURL here, and move the
1602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        // WebView specific transform up to a wrapper factory function in android_webview/.
161a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        if (baseUrl == null || !baseUrl.toLowerCase(Locale.US).startsWith("data:")) {
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            params.setBaseUrlForDataUrl(baseUrl != null ? baseUrl : "about:blank");
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            params.setVirtualUrlForDataUrl(historyUrl != null ? historyUrl : "about:blank");
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return params;
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Helper method to create a LoadUrlParams object for an HTTP POST load.
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @param url URL of the load.
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @param postData Post data of the load. Can be null.
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public static LoadUrlParams createLoadHttpPostParams(
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            String url, byte[] postData) {
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        LoadUrlParams params = new LoadUrlParams(url);
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        params.setLoadType(LOAD_TYPE_BROWSER_INITIATED_HTTP_POST);
1772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        params.setTransitionType(PageTransitionTypes.PAGE_TRANSITION_TYPED);
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        params.setPostData(postData);
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return params;
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
183a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)     * Sets the url.
184a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)     */
185a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    public void setUrl(String url) {
186a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        mUrl = url;
187a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    }
188a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
189a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    /**
1902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * Return the url.
1912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     */
1922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    public String getUrl() {
1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return mUrl;
1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
1952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    /**
197d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)     * Return the base url for a data url, otherwise null.
198d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)     */
199d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)    public String getBaseUrl() {
200d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)        return mBaseUrlForDataUrl;
201d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)    }
202d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
203d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)    /**
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Set load type of this load. Defaults to LOAD_TYPE_DEFAULT.
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @param loadType One of LOAD_TYPE static constants above.
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public void setLoadType(int loadType) {
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mLoadUrlType = loadType;
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Set transition type of this load. Defaults to PAGE_TRANSITION_LINK.
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @param transitionType One of PAGE_TRANSITION static constants in ContentView.
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public void setTransitionType(int transitionType) {
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mTransitionType = transitionType;
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
2202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * Return the transition type.
2212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     */
2222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    public int getTransitionType() {
2232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return mTransitionType;
2242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
2252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    /**
227a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)     * @return the referrer of this load
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
229a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    public void setReferrer(Referrer referrer) {
230a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        mReferrer = referrer;
231a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    }
232a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
233a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    /**
234a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)     * Sets the referrer of this load.
235a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)     */
236a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    public Referrer getReferrer() {
237a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        return mReferrer;
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Set extra headers for this load.
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @param extraHeaders Extra HTTP headers for this load. Note that these
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     *                     headers will never overwrite existing ones set by Chromium.
2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public void setExtraHeaders(Map<String, String> extraHeaders) {
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mExtraHeaders = extraHeaders;
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
2505c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu     * Return the extra headers as a map.
2515c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu     */
2525c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    public Map<String, String> getExtraHeaders() {
2535c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu        return mExtraHeaders;
2545c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    }
2555c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
2565c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    /**
257a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)     * Return the extra headers as a single String separated by "\n", or null if no extra header is
258a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)     * set. This form is suitable for passing to native
259a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)     * NavigationController::LoadUrlParams::extra_headers. This will return the headers set in an
260a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)     * exploded form through setExtraHeaders(). Embedders that work with extra headers in opaque
261a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)     * collapsed form can use the setVerbatimHeaders() / getVerbatimHeaders() instead.
2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
2631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    public String getExtraHeadersString() {
264a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        return getExtraHeadersString("\n", false);
265a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    }
266a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
267a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    /**
268a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)     * Return the extra headers as a single String separated by "\r\n", or null if no extra header
269a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)     * is set. This form is suitable for passing to native
270a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)     * net::HttpRequestHeaders::AddHeadersFromString.
271a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)     */
272a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    public String getExtraHttpRequestHeadersString() {
273a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        return getExtraHeadersString("\r\n", true);
274a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    }
275a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
276a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    private String getExtraHeadersString(String delimiter, boolean addTerminator) {
2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        if (mExtraHeaders == null) return null;
2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        StringBuilder headerBuilder = new StringBuilder();
2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (Map.Entry<String, String> header : mExtraHeaders.entrySet()) {
281a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)            if (headerBuilder.length() > 0) headerBuilder.append(delimiter);
2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            // Header name should be lower case.
284a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)            headerBuilder.append(header.getKey().toLowerCase(Locale.US));
2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            headerBuilder.append(":");
2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            headerBuilder.append(header.getValue());
2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
288a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        if (addTerminator)
289a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)            headerBuilder.append(delimiter);
2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return headerBuilder.toString();
2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
295a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)     * Sets the verbatim extra headers string. This is an alternative to storing the headers in
296a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)     * a map (setExtraHeaders()) for the embedders that use collapsed headers strings.
297a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)     */
298a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    public void setVerbatimHeaders(String headers) {
299a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        mVerbatimHeaders = headers;
300a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    }
301a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
302a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    /**
303a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)     * @return the verbatim extra headers string
304a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)     */
305a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    public String getVerbatimHeaders() {
306a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        return mVerbatimHeaders;
307a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    }
308a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
309a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    /**
310a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)     * Set user agent override option of this load. Defaults to UA_OVERRIDE_INHERIT.
311a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)     * @param uaOption One of UA_OVERRIDE static constants above.
312a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)     */
313a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    public void setOverrideUserAgent(int uaOption) {
314a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        mUaOverrideOption = uaOption;
315a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    }
316a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
317a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    /**
3181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     * Get user agent override option of this load. Defaults to UA_OVERRIDE_INHERIT.
3191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     * @param uaOption One of UA_OVERRIDE static constants above.
3201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     */
3211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    public int getUserAgentOverrideOption() {
3221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        return mUaOverrideOption;
3231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    }
3241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
3251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    /**
3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Set the post data of this load. This field is ignored unless load type is
3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * LOAD_TYPE_BROWSER_INITIATED_HTTP_POST.
3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @param postData Post data for this http post load.
3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public void setPostData(byte[] postData) {
3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mPostData = postData;
3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
335a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)     * @return the data to be sent through POST
336a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)     */
337a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    public byte[] getPostData() {
338a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        return mPostData;
339a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    }
340a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
341a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    /**
3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Set the base url for data load. It is used both to resolve relative URLs
3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * and when applying JavaScript's same origin policy. It is ignored unless
3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * load type is LOAD_TYPE_DATA.
3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @param baseUrl The base url for this data load.
3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public void setBaseUrlForDataUrl(String baseUrl) {
3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mBaseUrlForDataUrl = baseUrl;
3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
3521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     * Get the virtual url for data load. It is the url displayed to the user.
3531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     * It is ignored unless load type is LOAD_TYPE_DATA.
3541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     * @return The virtual url for this data load.
3551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     */
3561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    public String getVirtualUrlForDataUrl() {
3571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        return mVirtualUrlForDataUrl;
3581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    }
3591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
3601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    /**
3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Set the virtual url for data load. It is the url displayed to the user.
3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * It is ignored unless load type is LOAD_TYPE_DATA.
3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @param virtualUrl The virtual url for this data load.
3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public void setVirtualUrlForDataUrl(String virtualUrl) {
3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mVirtualUrlForDataUrl = virtualUrl;
3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Set whether the load should be able to access local resources. This
3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * defaults to false.
3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public void setCanLoadLocalResources(boolean canLoad) {
3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mCanLoadLocalResources = canLoad;
3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    /**
3781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     * Get whether the load should be able to access local resources. This
3791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     * defaults to false.
3801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     */
3811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    public boolean getCanLoadLocalResources() {
3821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        return mCanLoadLocalResources;
3831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    }
3841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public int getLoadUrlType() {
3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return mLoadUrlType;
3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
389cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    /**
390cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)     * @param rendererInitiated Whether or not this load was initiated from a renderer.
391cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)     */
392cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    public void setIsRendererInitiated(boolean rendererInitiated) {
393cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)        mIsRendererInitiated = rendererInitiated;
394cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    }
395cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
396cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    /**
397cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)     * @return Whether or not this load was initiated from a renderer or not.
398cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)     */
399cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    public boolean getIsRendererInitiated() {
400cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)        return mIsRendererInitiated;
401cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    }
402cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public boolean isBaseUrlDataScheme() {
4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        // If there's no base url set, but this is a data load then
4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        // treat the scheme as data:.
4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        if (mBaseUrlForDataUrl == null && mLoadUrlType == LOAD_TYPE_DATA) {
4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            return true;
4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return nativeIsDataScheme(mBaseUrlForDataUrl);
4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    @SuppressWarnings("unused")
4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    @CalledByNative
4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    private static void initializeConstants(
4151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci            int loadTypeDefault,
4161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci            int loadTypeBrowserInitiatedHttpPost,
4171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci            int loadTypeData,
4181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci            int uaOverrideInherit,
4191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci            int uaOverrideFalse,
4201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci            int uaOverrideTrue) {
4211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        assert LOAD_TYPE_DEFAULT == loadTypeDefault;
4221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        assert LOAD_TYPE_BROWSER_INITIATED_HTTP_POST == loadTypeBrowserInitiatedHttpPost;
4231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        assert LOAD_TYPE_DATA == loadTypeData;
4241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        assert UA_OVERRIDE_INHERIT == uaOverrideInherit;
4251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        assert UA_OVERRIDE_FALSE == uaOverrideFalse;
4261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        assert UA_OVERRIDE_TRUE == uaOverrideTrue;
4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Parses |url| as a GURL on the native side, and
4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * returns true if it's scheme is data:.
4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
4335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    private static native boolean nativeIsDataScheme(String url);
4345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
435