# Copyright (c) 2012 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# This file records third-party licensing information for the purposes of the
# Android WebView build. See webview_licenses.py for details.
#
# New third-party code should be added under a directory named 'third_party',
# so additions to this file should be rare. See
# http://www.chromium.org/developers/adding-3rd-party-libraries.
#
# Please always use forward slashes '/' as path separators, even if you are
# on Windows.

# Copyright IBM; MIT license. This third-party code is taken from ICU, the
# license for which we already pick up from third_party/icu/.
base/i18n/icu_string_conversions.cc
# Contains '(c)' in comments
base/logging.h
# Copyright Ron Rivest, public domain.
base/md5.cc
# Copyright Apple Inc; BSD license. Moved from third_party/WebKit/.
cc/input/scroll_elasticity_helper.h
# Copyright Netscape Communications Corporation; MPL, GPL v2 or LGPL v2
# license. Not used on Android.
chrome/browser/importer/firefox_profile_lock.cc
# Copyright Netscape Communications Corporation; MPL, GPL v2 or LGPL v2
# license. Not used on Android.
chrome/browser/importer/firefox_profile_lock.h
# Copyright Netscape Communications Corporation; MPL, GPL v2 or LGPL v2
# license. Not used on Android.
chrome/browser/importer/firefox_profile_lock_posix.cc
# Copyright Netscape Communications Corporation; MPL, GPL v2 or LGPL v2
# license. Not used on Android.
chrome/browser/importer/firefox_profile_lock_win.cc
# String 'copyright' used in code.
chrome/common/importer/firefox_importer_utils.cc
# Copyright Netscape Communications Corporation; MPL, GPL v2 or LGPL v2
# license. Not used on Android.
chrome/utility/importer/nss_decryptor.cc
# Copyright Netscape Communications Corporation; MPL, GPL v2 or LGPL v2
# license. Not used on Android.
chrome/utility/importer/nss_decryptor_mac.h
# Copyright Netscape Communications Corporation; MPL, GPL v2 or LGPL v2
# license. Not used on Android.
chrome/utility/importer/nss_decryptor_system_nss.cc
# Copyright Netscape Communications Corporation; MPL, GPL v2 or LGPL v2
# license. Not used on Android.
chrome/utility/importer/nss_decryptor_win.h
# Copyright Google Inc; BSD license. Test code only.
chrome/tools/test/generate_mime_tests.pl
# String 'copyright' used in the text presented to the user as part of
# Google Chrome terms of service.
components/resources/terms/chromeos/terms_en.html
components/resources/terms/terms_am.html
components/resources/terms/terms_ca.html
components/resources/terms/terms_cs.html
components/resources/terms/terms_da.html
components/resources/terms/terms_de.html
components/resources/terms/terms_en-GB.html
components/resources/terms/terms_en.html
components/resources/terms/terms_es-419.html
components/resources/terms/terms_es.html
components/resources/terms/terms_et.html
components/resources/terms/terms_fi.html
components/resources/terms/terms_fil.html
components/resources/terms/terms_fr.html
components/resources/terms/terms_he.html
components/resources/terms/terms_hr.html
components/resources/terms/terms_hu.html
components/resources/terms/terms_id.html
components/resources/terms/terms_it.html
components/resources/terms/terms_ja.html
components/resources/terms/terms_kn.html
components/resources/terms/terms_ko.html
components/resources/terms/terms_lt.html
components/resources/terms/terms_lv.html
components/resources/terms/terms_ml.html
components/resources/terms/terms_nb.html
components/resources/terms/terms_nl.html
components/resources/terms/terms_pl.html
components/resources/terms/terms_pt-BR.html
components/resources/terms/terms_pt-PT.html
components/resources/terms/terms_ro.html
components/resources/terms/terms_sk.html
components/resources/terms/terms_sl.html
components/resources/terms/terms_sr.html
components/resources/terms/terms_sv.html
components/resources/terms/terms_sw.html
components/resources/terms/terms_ta.html
components/resources/terms/terms_te.html
components/resources/terms/terms_th.html
components/resources/terms/terms_tr.html
components/resources/terms/terms_vi.html
# Copyright Apple Inc, Nokia Corporation and Torch Mobile Inc; BSD license.
# Contains code moved from third_party/WebKit/.
content/browser/frame_host/navigation_controller_impl.cc
# Copyright Apple, Inc, Google Inc; BSD license. Not used on Android.
# Moved from third_party/WebKit/.
content/browser/renderer_host/input/web_input_event_builders_mac.mm
# Copyright Apple Inc and Torch Mobile Inc; BSD license. Moved from
# third_party/WebKit/.
content/renderer/history_controller.h
# Copyright Apple Inc, Nokia Corporation and Torch Mobile Inc; BSD license.
# Moved from third_party/WebKit/.
content/renderer/history_controller.cc
# Copyright Apple Inc and Torch Mobile Inc; BSD license. Moved from
# third_party/WebKit/.
content/renderer/history_entry.h
# Copyright Apple Inc, Nokia Corporation and Torch Mobile Inc; BSD license.
# Moved from third_party/WebKit/.
content/renderer/history_entry.cc
# Copyright Google Inc, no license. Not used on Android.
google_update/google_update_idl.idl
# Copyright 2016 The LUCI Authors. Apache 2.0 license.
infra/recipes.py
# Copyright WebM Project authors; BSD license. Copied and modified from
# third_party/libvpx. Not used on Android.
media/filters/vp8_bool_decoder.h
media/filters/vp8_bool_decoder.cc
# Native client not used in Android. Contains the word "Copyright"
native_client_sdk/doc_generated/rest-devsite-examples.html
# String '(c)' used in certificates organization names
net/cert/x509_certificate_known_roots_win.h
net/quic/core/crypto/common_cert_set_2a.inc
net/quic/core/crypto/common_cert_set_2b.inc
net/quic/core/crypto/common_cert_set_3a.inc
net/quic/core/crypto/common_cert_set_3b.inc
# String '(c)' used in certificates organization names
net/test/test_certificate_data.h
# Copyright The Chromium Authors and Netscape Communications Corporation; BSD
# and (MPL, GPL v2 or LGPL v2) licenses. This third-party code is taken from
# Mozilla, the license for which we already pick up from third_party/npapi/.
net/cookies/cookie_monster.cc
# Copyright The Chromium Authors and Netscape Communications Corporation; BSD
# and (MPL, GPL v2 or LGPL v2) licenses. This third-party code is taken from
# Mozilla, the license for which we already pick up from third_party/npapi/.
net/cookies/canonical_cookie.cc
# Copyright The Chromium Authors and Netscape Communications Corporation; BSD
# and (MPL, GPL v2 or LGPL v2) licenses. This third-party code is taken from
# Mozilla, the license for which we already pick up from third_party/npapi/.
net/cookies/parsed_cookie.cc
# Copyright The Chromium Authors and Google Inc; BSD and (MPL, GPL v2 or LGPL
# v2) licenses. This third-party code is taken from Mozilla, the license for
# which we already pick up from third_party/npapi/.
net/base/registry_controlled_domains/registry_controlled_domain.cc
# Copyright The Chromium Authors and Google Inc; BSD and (MPL, GPL v2 or LGPL
# v2) licenses. This third-party code is taken from Mozilla, the license for
# which we already pick up from third_party/npapi/.
net/base/registry_controlled_domains/registry_controlled_domain.h
# Copyright The Chromium Authors and IBM Corporation; BSD and (MPL, GPL v2 or
# LGPL v2) licenses. This third-party code is taken from Mozilla, the license
# for which we already pick up from third_party/npapi/.
net/http/des.cc
# Copyright The Chromium Authors and IBM Corporation; BSD and (MPL, GPL v2 or
# LGPL v2) licenses. This third-party code is taken from Mozilla, the license
# for which we already pick up from third_party/npapi/.
net/http/http_auth_handler_ntlm_portable.cc
# Copyright The Chromium Authors and Netscape Communications; BSD and (MPL, GPL
# v2 or LGPL v2) licenses. This third-party code is taken from Mozilla, the
# license for which we already pick up from third_party/npapi/.
net/http/http_chunked_decoder.cc
# Copyright The Chromium Authors and Netscape Communications; BSD and (MPL, GPL
# v2 or LGPL v2) licenses. This third-party code is taken from Mozilla, the
# license for which we already pick up from third_party/npapi/.
net/http/http_chunked_decoder.h
# Copyright IBM Corporation; MPL, GPL v2 or LGPL v2 license. This third-party
# code is taken from Mozilla, the license for which we already pick up from
# third_party/npapi/.
net/http/md4.cc
# Copyright IBM Corporation; MPL, GPL v2 or LGPL v2 license. This third-party
# code is taken from Mozilla, the license for which we already pick up from
# third_party/npapi/.
net/http/md4.h
# Netscape Communications Corporation; MPL, GPL v2 or LGPL v2 license. This
# third-party code is taken from Mozilla, the license for which we already pick
# up from third_party/npapi/.
net/proxy/proxy_resolver_script.h
# Contains the word 'Copyright' in comments
ppapi/generators/idl_c_proto.py
ppapi/generators/idl_outfile.py
# Copyright (c) 2007-2009 The Khronos Group Inc.  Not used on Android
ppapi/lib/gl/include/EGL/egl.h
ppapi/lib/gl/include/EGL/eglext.h
ppapi/lib/gl/include/EGL/eglplatform.h
ppapi/lib/gl/include/KHR/khrplatform.h
# Copyright The Android Open Source Project; ASL v2 license.
skia/config/SkUserConfig.h
# Generates copyright headers for Chromium.
tools/boilerplate.py
# Contains test strings that look like copyrights.
tools/copyright_scanner/copyright_scanner_unittest.py
# Contains word 'copyright' in comments.
tools/gen_keyboard_overlay_data/gen_keyboard_overlay_data.py
# This third-party code is taken from Mozilla, but is copyright Google and has
# been re-licensed under the Chromium license.
tools/imagediff/image_diff_png.cc
# Copyright Ero Carrera; BSD license. Tool only.
tools/symsrc/pefile.py
# Copyright The Chromium Authors, Sun Microsystems Inc, the V8 project authors;
# BSD license. Tool only.
tools/traceline/traceline/assembler.h
# Copyright Google Inc; BSD license. Tool only.
tools/traceline/traceline/sidestep/mini_disassembler.cc
# Copyright Marijn Haverbeke. MIT license. Tool only, not used on Android.
tools/win/sizeviewer/clike.js
# Copyright Marijn Haverbeke. MIT license. Tool only, not used on Android.
tools/win/sizeviewer/codemirror.js
# Copyright The Chromium Authors, Apple Inc; BSD license. Not used on Android.
ui/base/clipboard/clipboard_util_win.cc
# Copyright The Chromium Authors, Apple Inc and Graham Dennis; BSD license. Not
# used on Android.
ui/base/cocoa/tool_tip_base_view.mm
# Copyright The Chromium Authors, Apple Inc; BSD license. Not used on Android.
ui/base/dragdrop/os_exchange_data_provider_win.cc
# Copyright Apple Inc; BSD license. Moved from third_party/WebKit/.
ui/events/blink/input_scroll_elasticity_controller.cc
ui/events/blink/input_scroll_elasticity_controller.h
# Copyright The Chromium Authors, Michael Emmel, Google Inc; BSD license. This
# third-party code is taken from WebKit, the license for which we already pick
# up from webkit/.
ui/events/keycodes/keyboard_codes_posix.h
# String 'copyright' used in code.
ui/file_manager/file_manager/foreground/js/main_scripts.js
# String 'copyright' used in code.
ui/file_manager/gallery/js/gallery_scripts.js
# String 'copyright' used in code.
ui/file_manager/video_player/js/video_player_scripts.js
# This third-party code is taken from Mozilla, but is copyright Google and has
# been re-licensed under the Chromium license.
ui/gfx/codec/jpeg_codec.cc
# This third-party code is taken from Mozilla, but is copyright Google and has
# been re-licensed under the Chromium license.
ui/gfx/codec/png_codec.cc
# Copyright The Chromium Authors and Apple Inc; BSD license. This third-party
# code is taken from WebKit, the license for which we already pick up from
# webkit/.
content/browser/appcache/appcache_manifest_parser.cc
# Copyright The Chromium Authors and Apple Inc; BSD license. This third-party
# code is taken from WebKit, the license for which we already pick up from
# webkit/.
content/browser/appcache/appcache_manifest_parser.h
# String 'copyright' used in code.
ui/webui/resources/js/cr/ui/array_data_model.js
# Bundles of existing code.
chrome/browser/resources/md_downloads/vulcanized.html
chrome/browser/resources/md_history/app.vulcanized.html
# Generated config files, which are checked in outside of the third-party
# library they configure. Copyright The open-vcdiff Authors; Apache2 license.
sdch/ios/config.h
sdch/linux/config.h
sdch/mac/config.h
sdch/win/config.h
