chromium/components/minidump_uploader/android/java/src/org/chromium/components/minidump_uploader/util/HttpURLConnectionFactoryImpl.java

// Copyright 2016 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

package org.chromium.components.minidump_uploader.util;

import org.chromium.net.ChromiumNetworkAdapter;
import org.chromium.net.NetworkTrafficAnnotationTag;

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;

/** Default implementation of HttpURLConnectionFactory. */
public class HttpURLConnectionFactoryImpl implements HttpURLConnectionFactory {
    private static final NetworkTrafficAnnotationTag TRAFFIC_ANNOTATION =
            NetworkTrafficAnnotationTag.createComplete(
                    "minidump_uploader_android",
                    """
                    semantics {
                      sender: "Minidump Uploader (Android)"
                      description:
                        "Uploads crash reports to Google servers. This data is used by the Chrome "
                        "team to track down and fix critical bugs."
                      trigger: "During startup, if a crash occurred recently."
                      data: "Crash report, including a trace and device info."
                      destination: GOOGLE_OWNED_SERVICE
                    }
                    policy {
                      cookies_allowed: NO
                      setting:
                        "Settings > Google Services > Help improve Chrome's features and "
                        "performance."
                      policy_exception_justification:
                        "MetricsReportingEnabled is only implemented on desktop and ChromeOS."
                    }""");

    @Override
    public HttpURLConnection createHttpURLConnection(String url) {
        try {
            return (HttpURLConnection)
                    ChromiumNetworkAdapter.openConnection(new URL(url), TRAFFIC_ANNOTATION);
        } catch (IOException e) {
            return null;
        }
    }
}