Compare commits
78
Commits
ci
..
64.0.3282.182
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e664528479 | ||
|
|
83a16596e6 | ||
|
|
7c6a4374f5 | ||
|
|
5b2034ff45 | ||
|
|
6807e7b388 | ||
|
|
71b5dc1b0b | ||
|
|
2bda9e45f6 | ||
|
|
530626fd21 | ||
|
|
4e8b70cb64 | ||
|
|
f4b6592dbc | ||
|
|
0d6534d9eb | ||
|
|
b869bb5b7b | ||
|
|
a6603ca827 | ||
|
|
881b4199f4 | ||
|
|
8f418f10d5 | ||
|
|
7a436cad38 | ||
|
|
ba521c5412 | ||
|
|
23623ffc1f | ||
|
|
ca0a121f19 | ||
|
|
65554f30c6 | ||
|
|
4f1fa500e3 | ||
|
|
00ad417ff8 | ||
|
|
af04dfea67 | ||
|
|
b26461b55f | ||
|
|
39f5761729 | ||
|
|
10cc8c8310 | ||
|
|
4c844ba92d | ||
|
|
d855bc2f8f | ||
|
|
bffc981dca | ||
|
|
fc970af553 | ||
|
|
fb79f25139 | ||
|
|
3f68ef470d | ||
|
|
ce004bc49a | ||
|
|
a99533f633 | ||
|
|
a300522aed | ||
|
|
1da96f0fca | ||
|
|
11994a352c | ||
|
|
4e39f7c900 | ||
|
|
eca32f09e9 | ||
|
|
a452a9356e | ||
|
|
0645ccf03a | ||
|
|
b81a196c71 | ||
|
|
8589334b98 | ||
|
|
df91ed0407 | ||
|
|
250ae9ffad | ||
|
|
cd354c6786 | ||
|
|
6d337a4945 | ||
|
|
2f1e3c26e1 | ||
|
|
be7e413b7a | ||
|
|
83e140c4f6 | ||
|
|
f8d7135ac8 | ||
|
|
4676d9b2ec | ||
|
|
256fe0ec37 | ||
|
|
415a0ea9e5 | ||
|
|
f5e5472dd4 | ||
|
|
b1b989dac9 | ||
|
|
1d039eb656 | ||
|
|
905432882c | ||
|
|
61ee5cb055 | ||
|
|
33f6df6958 | ||
|
|
82e9d2d28e | ||
|
|
2c679f5ff7 | ||
|
|
36827a2b1e | ||
|
|
d1ca11e008 | ||
|
|
18377261b0 | ||
|
|
a772e67318 | ||
|
|
02dfbb43dc | ||
|
|
e9a7ef7933 | ||
|
|
b8d531f546 | ||
|
|
5268ec2716 | ||
|
|
2a7bde2570 | ||
|
|
c94b463e4f | ||
|
|
a5367f7345 | ||
|
|
90c88fdce4 | ||
|
|
169509d3a9 | ||
|
|
1345e65a98 | ||
|
|
1a56155bee | ||
|
|
d425b41589 |
@@ -1,141 +0,0 @@
|
|||||||
name: Check git apply
|
|
||||||
#permissions:
|
|
||||||
# actions: none
|
|
||||||
# checks: none
|
|
||||||
# contents: none
|
|
||||||
# deployments: none
|
|
||||||
# issues: none
|
|
||||||
# packages: none
|
|
||||||
# pull-requests: write
|
|
||||||
# repository-projects: none
|
|
||||||
# security-events: none
|
|
||||||
# statuses: none
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches-ignore:
|
|
||||||
- 'ci'
|
|
||||||
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
rtag:
|
|
||||||
description: 'uazo/bromite TAG or COMMIT'
|
|
||||||
required: true
|
|
||||||
default: ''
|
|
||||||
|
|
||||||
env:
|
|
||||||
RTAG: ${{ github.event.inputs.rtag }}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
|
|
||||||
- name: "Get value from dispatch"
|
|
||||||
run: |
|
|
||||||
if [ -z "${RTAG}" ]; then
|
|
||||||
echo "RTAG=$GITHUB_SHA" >> $GITHUB_ENV
|
|
||||||
echo "RTAG=$RTAG"
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Prepare container
|
|
||||||
run: |
|
|
||||||
sudo apt update
|
|
||||||
sudo apt install -y wget unzip tar sed dos2unix patchutils wiggle curl
|
|
||||||
|
|
||||||
wget https://github.com/uazo/superpatch/releases/latest/download/SuperPatchUtils.tar.gz
|
|
||||||
tar xfz SuperPatchUtils.tar.gz
|
|
||||||
rm SuperPatchUtils.tar.gz
|
|
||||||
|
|
||||||
git clone https://github.com/uazo/bromite-buildtools
|
|
||||||
|
|
||||||
wget https://github.com/ericchiang/pup/releases/download/v0.4.0/pup_v0.4.0_linux_amd64.zip
|
|
||||||
unzip pup_v0.4.0_linux_amd64.zip
|
|
||||||
rm pup_v0.4.0_linux_amd64.zip
|
|
||||||
|
|
||||||
BRANCH=$(curl https://github.com/uazo/bromite/branch_commits/$RTAG | ./pup -p li.branch:last-child a text{})
|
|
||||||
if [ -z "${BRANCH}" ]; then
|
|
||||||
BRANCH=$(curl https://github.com/uazo/bromite/branch_commits/$RTAG a | ./pup -p li.branch:first-child a text{})
|
|
||||||
fi
|
|
||||||
if [ -z "${BRANCH}" ]; then
|
|
||||||
echo "Impossible to recover the base commit"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
echo "BRANCH=$BRANCH" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: Checkout 'uazo/bromite' ${{ env.BRANCH }}
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
repository: 'uazo/bromite'
|
|
||||||
ref: ${{ github.event.inputs.rtag }}
|
|
||||||
path: 'bromite'
|
|
||||||
fetch-depth: 1
|
|
||||||
|
|
||||||
- name: Check chromium version
|
|
||||||
run: |
|
|
||||||
VERSION=$(cat bromite/build/RELEASE)
|
|
||||||
echo "VERSION=$VERSION" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: Download chromium ${{ env.VERSION }} sources
|
|
||||||
run: |
|
|
||||||
./bin/SuperPatchUtils bromite $RTAG chromium/src
|
|
||||||
cd chromium/src
|
|
||||||
git init
|
|
||||||
git config user.email "you@example.com"
|
|
||||||
git config user.name "Your Name"
|
|
||||||
git add .
|
|
||||||
git commit -m $VERSION
|
|
||||||
git tag -a $VERSION -m $VERSION
|
|
||||||
cd ../..
|
|
||||||
|
|
||||||
- name: Apply patches ${{ github.event.inputs.rtag }}
|
|
||||||
run: |
|
|
||||||
export HOME=$(pwd)
|
|
||||||
cd ~/chromium/src
|
|
||||||
|
|
||||||
export SILENT=true
|
|
||||||
export SKIPAUTOGENERATED=true
|
|
||||||
bash ~/bromite-buildtools/apply-all-patch.sh || exit 1
|
|
||||||
|
|
||||||
rm -rf ~/bromite/build/patches-new/
|
|
||||||
rm ~/bromite/build/bromite_patches_list_new.txt
|
|
||||||
|
|
||||||
- name: Export patches
|
|
||||||
run: |
|
|
||||||
export HOME=$(pwd)
|
|
||||||
|
|
||||||
cd ~/chromium/src
|
|
||||||
bash ~/bromite-buildtools/export-all-patch.sh
|
|
||||||
|
|
||||||
cd ~/bromite
|
|
||||||
rm -rf build/patches/*
|
|
||||||
mv build/patches-new/* build/patches
|
|
||||||
rm -rf build/patches-new/
|
|
||||||
|
|
||||||
- name: Check differences CHANGES=${{ env.CHANGES }}
|
|
||||||
run: |
|
|
||||||
cd bromite
|
|
||||||
CHANGES=0 && git diff --quiet || CHANGES=1
|
|
||||||
echo "CHANGES=$CHANGES" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
if [[ CHANGES -eq 1 ]]; then
|
|
||||||
git add build/patches/*.patch
|
|
||||||
git diff --name-only --staged
|
|
||||||
# MESSAGE=$(git diff --name-only --staged)
|
|
||||||
# echo "MESSAGE='$MESSAGE'" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Create Pull Request
|
|
||||||
uses: peter-evans/create-pull-request@dcd5fd746d53dd8de555c0f10bca6c35628be47a #v3.12.0
|
|
||||||
if: env.CHANGES == '1'
|
|
||||||
with:
|
|
||||||
path: bromite
|
|
||||||
base: ${{ env.BRANCH }}
|
|
||||||
#push-to-fork: uazo/bromite
|
|
||||||
add-paths: |
|
|
||||||
build/patches/*.patch
|
|
||||||
commit-message: 'AUTOMATED - git apply results'
|
|
||||||
title: Git apply result for ${{ env.BRANCH }} branch
|
|
||||||
body: ${{ env.MESSAGE }}
|
|
||||||
delete-branch: true
|
|
||||||
branch-suffix: short-commit-hash
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
################################################################################
|
|
||||||
# This .gitignore file was automatically created by Microsoft(R) Visual Studio.
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
*.sqlite
|
|
||||||
/.vs/ProjectSettings.json
|
|
||||||
/.vs
|
|
||||||
+109
@@ -0,0 +1,109 @@
|
|||||||
|
# 64.0.3282.182
|
||||||
|
* add support for domain-based adblock filters
|
||||||
|
* optimized memory allocation for filters
|
||||||
|
* updated AdBlock filters
|
||||||
|
|
||||||
|
# 64.0.3282.168
|
||||||
|
* extension: allow playing youtube/vimeo videos in background (https://github.com/bromite/bromite/issues/16)
|
||||||
|
* never fetch most popular sites for new tab initialization, disable logo on new tab page
|
||||||
|
* some improvements to adblock filters
|
||||||
|
* disabled signin (ungoogled-chromium) (https://github.com/bromite/bromite/issues/31 and https://github.com/bromite/bromite/issues/11)
|
||||||
|
* disabled webRTC and crash uploaders (ungoogled-chromium)
|
||||||
|
* disabled translate (ungoogled-chromium)
|
||||||
|
* disabled Gaia & GCM (ungoogled-chromium)
|
||||||
|
* added clear HTTP cache menu item (ungoogled-chromium)
|
||||||
|
* disabled Google host detection (ungoogled-chromium)
|
||||||
|
* disabled profile avatar downloading (ungoogled-chromium)
|
||||||
|
* disabled intranet redirect detector (ungoogled-chromium)
|
||||||
|
* disabled plugin untraceable URLs (ungoogled-chromium)
|
||||||
|
|
||||||
|
# 64.0.3282.149
|
||||||
|
* updated AdBlock filters
|
||||||
|
|
||||||
|
# 63.0.3239.150
|
||||||
|
* fixed crash when clicking on address bar lock (page info) or opening site settings (https://github.com/bromite/bromite/issues/28)
|
||||||
|
* build H264 with NEON optimizations for ARMv7
|
||||||
|
* updated AdBlock filters
|
||||||
|
* more builds for arm64 architecture
|
||||||
|
|
||||||
|
# 63.0.3239.144
|
||||||
|
* fixed invalid AdBlock filter rule blocking all connections (https://github.com/bromite/bromite/issues/26)
|
||||||
|
* updated AdBlock filters
|
||||||
|
|
||||||
|
# 63.0.3239.129
|
||||||
|
* updated AdBlock filters
|
||||||
|
|
||||||
|
# 63.0.3239.122
|
||||||
|
* disable webRTC completely (https://github.com/bromite/bromite/issues/9)
|
||||||
|
* hyperlinks sanitization fixed and now accessible from Google logo click
|
||||||
|
* now building and publishing SystemWebView apks
|
||||||
|
|
||||||
|
# 63.0.3239.118
|
||||||
|
* limit impact of AMP-removal to not break tabs (https://github.com/bromite/bromite/issues/20)
|
||||||
|
* fix DuckDuckGo and StartPage suggestions (https://github.com/bromite/bromite/issues/19)
|
||||||
|
* revert /deep/ and ::shadow feature drop to attempt fixing DevTools support (https://github.com/bromite/bromite/issues/23)
|
||||||
|
* remove also ads from search results
|
||||||
|
* add Google search engine with English-only results, no RLZ and field trials
|
||||||
|
* updated adBlock filters
|
||||||
|
* fix build of x86 version (was broken in previous version)
|
||||||
|
|
||||||
|
# 63.0.3239.85
|
||||||
|
* no suggest URL for DuckDuckGo (https://github.com/bromite/bromite/issues/19)
|
||||||
|
* fixed 4chan blocking rule
|
||||||
|
* limit AMP links cleanup to search results only (fixes broken images/news result tabs)
|
||||||
|
* updated adBlock filters
|
||||||
|
|
||||||
|
# 63.0.3239.78
|
||||||
|
* correctly set version and build numbers
|
||||||
|
* updated adBlock filters
|
||||||
|
|
||||||
|
# 63.0.3239.73
|
||||||
|
|
||||||
|
# 63.0.3239.64
|
||||||
|
* updated adblock filters
|
||||||
|
* fixed an issue with incognito new tab
|
||||||
|
* permanent disable for ToS/metrics and unused auto-updates check
|
||||||
|
|
||||||
|
# 63.0.3239.46
|
||||||
|
* removed search engine geolocation default patch
|
||||||
|
|
||||||
|
# 63.0.3239.38
|
||||||
|
|
||||||
|
# 63.0.3239.27
|
||||||
|
|
||||||
|
# 63.0.3239.24
|
||||||
|
* convert AMP search results to regular search results
|
||||||
|
|
||||||
|
# 63.0.3239.15
|
||||||
|
* remove URL tracking from Google search results
|
||||||
|
* disable webRTC by default (https://github.com/bromite/bromite/issues/9, still not working proper)
|
||||||
|
* do not enable search engine geolocation by default
|
||||||
|
* use own package name (closes https://github.com/bromite/bromite/issues/1)
|
||||||
|
* use 64bit WebView process
|
||||||
|
|
||||||
|
# 63.0.3239.10
|
||||||
|
* attempt enabling API keys (didn't work)
|
||||||
|
* added StartPage search engine (closes https://github.com/bromite/bromite/issues/3)
|
||||||
|
|
||||||
|
# 63.0.3239.6
|
||||||
|
* added Bromite patch for Google search results click-tracking removal
|
||||||
|
* added x86 target CPU
|
||||||
|
* fixed red blink frame
|
||||||
|
|
||||||
|
# 63.0.3235.2
|
||||||
|
* first release with NoChromo adblocking patch
|
||||||
|
* Bromite patch: disable NTP remote suggestions
|
||||||
|
* added some Inox/Iridium/Ungoogled-Chromium patches, namely:
|
||||||
|
* DuckDuckGo search engine
|
||||||
|
* disable battery status service
|
||||||
|
* disable formatting in OmniBox
|
||||||
|
* disable GCM status checks
|
||||||
|
* use local fonts instead of fonts from Google servers
|
||||||
|
* disable updater pings
|
||||||
|
* do not enable Google integrations by default (translation, lookup, etc)
|
||||||
|
* disable the ad promo system
|
||||||
|
* do not store passwords by default
|
||||||
|
* do not fetch Google promotions
|
||||||
|
* restore classic NTP
|
||||||
|
* only keep cookies until exit
|
||||||
|
* block third-party cookies
|
||||||
@@ -0,0 +1,674 @@
|
|||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 3, 29 June 2007
|
||||||
|
|
||||||
|
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The GNU General Public License is a free, copyleft license for
|
||||||
|
software and other kinds of works.
|
||||||
|
|
||||||
|
The licenses for most software and other practical works are designed
|
||||||
|
to take away your freedom to share and change the works. By contrast,
|
||||||
|
the GNU General Public License is intended to guarantee your freedom to
|
||||||
|
share and change all versions of a program--to make sure it remains free
|
||||||
|
software for all its users. We, the Free Software Foundation, use the
|
||||||
|
GNU General Public License for most of our software; it applies also to
|
||||||
|
any other work released this way by its authors. You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
them if you wish), that you receive source code or can get it if you
|
||||||
|
want it, that you can change the software or use pieces of it in new
|
||||||
|
free programs, and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to prevent others from denying you
|
||||||
|
these rights or asking you to surrender the rights. Therefore, you have
|
||||||
|
certain responsibilities if you distribute copies of the software, or if
|
||||||
|
you modify it: responsibilities to respect the freedom of others.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must pass on to the recipients the same
|
||||||
|
freedoms that you received. You must make sure that they, too, receive
|
||||||
|
or can get the source code. And you must show them these terms so they
|
||||||
|
know their rights.
|
||||||
|
|
||||||
|
Developers that use the GNU GPL protect your rights with two steps:
|
||||||
|
(1) assert copyright on the software, and (2) offer you this License
|
||||||
|
giving you legal permission to copy, distribute and/or modify it.
|
||||||
|
|
||||||
|
For the developers' and authors' protection, the GPL clearly explains
|
||||||
|
that there is no warranty for this free software. For both users' and
|
||||||
|
authors' sake, the GPL requires that modified versions be marked as
|
||||||
|
changed, so that their problems will not be attributed erroneously to
|
||||||
|
authors of previous versions.
|
||||||
|
|
||||||
|
Some devices are designed to deny users access to install or run
|
||||||
|
modified versions of the software inside them, although the manufacturer
|
||||||
|
can do so. This is fundamentally incompatible with the aim of
|
||||||
|
protecting users' freedom to change the software. The systematic
|
||||||
|
pattern of such abuse occurs in the area of products for individuals to
|
||||||
|
use, which is precisely where it is most unacceptable. Therefore, we
|
||||||
|
have designed this version of the GPL to prohibit the practice for those
|
||||||
|
products. If such problems arise substantially in other domains, we
|
||||||
|
stand ready to extend this provision to those domains in future versions
|
||||||
|
of the GPL, as needed to protect the freedom of users.
|
||||||
|
|
||||||
|
Finally, every program is threatened constantly by software patents.
|
||||||
|
States should not allow patents to restrict development and use of
|
||||||
|
software on general-purpose computers, but in those that do, we wish to
|
||||||
|
avoid the special danger that patents applied to a free program could
|
||||||
|
make it effectively proprietary. To prevent this, the GPL assures that
|
||||||
|
patents cannot be used to render the program non-free.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
0. Definitions.
|
||||||
|
|
||||||
|
"This License" refers to version 3 of the GNU General Public License.
|
||||||
|
|
||||||
|
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||||
|
works, such as semiconductor masks.
|
||||||
|
|
||||||
|
"The Program" refers to any copyrightable work licensed under this
|
||||||
|
License. Each licensee is addressed as "you". "Licensees" and
|
||||||
|
"recipients" may be individuals or organizations.
|
||||||
|
|
||||||
|
To "modify" a work means to copy from or adapt all or part of the work
|
||||||
|
in a fashion requiring copyright permission, other than the making of an
|
||||||
|
exact copy. The resulting work is called a "modified version" of the
|
||||||
|
earlier work or a work "based on" the earlier work.
|
||||||
|
|
||||||
|
A "covered work" means either the unmodified Program or a work based
|
||||||
|
on the Program.
|
||||||
|
|
||||||
|
To "propagate" a work means to do anything with it that, without
|
||||||
|
permission, would make you directly or secondarily liable for
|
||||||
|
infringement under applicable copyright law, except executing it on a
|
||||||
|
computer or modifying a private copy. Propagation includes copying,
|
||||||
|
distribution (with or without modification), making available to the
|
||||||
|
public, and in some countries other activities as well.
|
||||||
|
|
||||||
|
To "convey" a work means any kind of propagation that enables other
|
||||||
|
parties to make or receive copies. Mere interaction with a user through
|
||||||
|
a computer network, with no transfer of a copy, is not conveying.
|
||||||
|
|
||||||
|
An interactive user interface displays "Appropriate Legal Notices"
|
||||||
|
to the extent that it includes a convenient and prominently visible
|
||||||
|
feature that (1) displays an appropriate copyright notice, and (2)
|
||||||
|
tells the user that there is no warranty for the work (except to the
|
||||||
|
extent that warranties are provided), that licensees may convey the
|
||||||
|
work under this License, and how to view a copy of this License. If
|
||||||
|
the interface presents a list of user commands or options, such as a
|
||||||
|
menu, a prominent item in the list meets this criterion.
|
||||||
|
|
||||||
|
1. Source Code.
|
||||||
|
|
||||||
|
The "source code" for a work means the preferred form of the work
|
||||||
|
for making modifications to it. "Object code" means any non-source
|
||||||
|
form of a work.
|
||||||
|
|
||||||
|
A "Standard Interface" means an interface that either is an official
|
||||||
|
standard defined by a recognized standards body, or, in the case of
|
||||||
|
interfaces specified for a particular programming language, one that
|
||||||
|
is widely used among developers working in that language.
|
||||||
|
|
||||||
|
The "System Libraries" of an executable work include anything, other
|
||||||
|
than the work as a whole, that (a) is included in the normal form of
|
||||||
|
packaging a Major Component, but which is not part of that Major
|
||||||
|
Component, and (b) serves only to enable use of the work with that
|
||||||
|
Major Component, or to implement a Standard Interface for which an
|
||||||
|
implementation is available to the public in source code form. A
|
||||||
|
"Major Component", in this context, means a major essential component
|
||||||
|
(kernel, window system, and so on) of the specific operating system
|
||||||
|
(if any) on which the executable work runs, or a compiler used to
|
||||||
|
produce the work, or an object code interpreter used to run it.
|
||||||
|
|
||||||
|
The "Corresponding Source" for a work in object code form means all
|
||||||
|
the source code needed to generate, install, and (for an executable
|
||||||
|
work) run the object code and to modify the work, including scripts to
|
||||||
|
control those activities. However, it does not include the work's
|
||||||
|
System Libraries, or general-purpose tools or generally available free
|
||||||
|
programs which are used unmodified in performing those activities but
|
||||||
|
which are not part of the work. For example, Corresponding Source
|
||||||
|
includes interface definition files associated with source files for
|
||||||
|
the work, and the source code for shared libraries and dynamically
|
||||||
|
linked subprograms that the work is specifically designed to require,
|
||||||
|
such as by intimate data communication or control flow between those
|
||||||
|
subprograms and other parts of the work.
|
||||||
|
|
||||||
|
The Corresponding Source need not include anything that users
|
||||||
|
can regenerate automatically from other parts of the Corresponding
|
||||||
|
Source.
|
||||||
|
|
||||||
|
The Corresponding Source for a work in source code form is that
|
||||||
|
same work.
|
||||||
|
|
||||||
|
2. Basic Permissions.
|
||||||
|
|
||||||
|
All rights granted under this License are granted for the term of
|
||||||
|
copyright on the Program, and are irrevocable provided the stated
|
||||||
|
conditions are met. This License explicitly affirms your unlimited
|
||||||
|
permission to run the unmodified Program. The output from running a
|
||||||
|
covered work is covered by this License only if the output, given its
|
||||||
|
content, constitutes a covered work. This License acknowledges your
|
||||||
|
rights of fair use or other equivalent, as provided by copyright law.
|
||||||
|
|
||||||
|
You may make, run and propagate covered works that you do not
|
||||||
|
convey, without conditions so long as your license otherwise remains
|
||||||
|
in force. You may convey covered works to others for the sole purpose
|
||||||
|
of having them make modifications exclusively for you, or provide you
|
||||||
|
with facilities for running those works, provided that you comply with
|
||||||
|
the terms of this License in conveying all material for which you do
|
||||||
|
not control copyright. Those thus making or running the covered works
|
||||||
|
for you must do so exclusively on your behalf, under your direction
|
||||||
|
and control, on terms that prohibit them from making any copies of
|
||||||
|
your copyrighted material outside their relationship with you.
|
||||||
|
|
||||||
|
Conveying under any other circumstances is permitted solely under
|
||||||
|
the conditions stated below. Sublicensing is not allowed; section 10
|
||||||
|
makes it unnecessary.
|
||||||
|
|
||||||
|
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||||
|
|
||||||
|
No covered work shall be deemed part of an effective technological
|
||||||
|
measure under any applicable law fulfilling obligations under article
|
||||||
|
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||||
|
similar laws prohibiting or restricting circumvention of such
|
||||||
|
measures.
|
||||||
|
|
||||||
|
When you convey a covered work, you waive any legal power to forbid
|
||||||
|
circumvention of technological measures to the extent such circumvention
|
||||||
|
is effected by exercising rights under this License with respect to
|
||||||
|
the covered work, and you disclaim any intention to limit operation or
|
||||||
|
modification of the work as a means of enforcing, against the work's
|
||||||
|
users, your or third parties' legal rights to forbid circumvention of
|
||||||
|
technological measures.
|
||||||
|
|
||||||
|
4. Conveying Verbatim Copies.
|
||||||
|
|
||||||
|
You may convey verbatim copies of the Program's source code as you
|
||||||
|
receive it, in any medium, provided that you conspicuously and
|
||||||
|
appropriately publish on each copy an appropriate copyright notice;
|
||||||
|
keep intact all notices stating that this License and any
|
||||||
|
non-permissive terms added in accord with section 7 apply to the code;
|
||||||
|
keep intact all notices of the absence of any warranty; and give all
|
||||||
|
recipients a copy of this License along with the Program.
|
||||||
|
|
||||||
|
You may charge any price or no price for each copy that you convey,
|
||||||
|
and you may offer support or warranty protection for a fee.
|
||||||
|
|
||||||
|
5. Conveying Modified Source Versions.
|
||||||
|
|
||||||
|
You may convey a work based on the Program, or the modifications to
|
||||||
|
produce it from the Program, in the form of source code under the
|
||||||
|
terms of section 4, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) The work must carry prominent notices stating that you modified
|
||||||
|
it, and giving a relevant date.
|
||||||
|
|
||||||
|
b) The work must carry prominent notices stating that it is
|
||||||
|
released under this License and any conditions added under section
|
||||||
|
7. This requirement modifies the requirement in section 4 to
|
||||||
|
"keep intact all notices".
|
||||||
|
|
||||||
|
c) You must license the entire work, as a whole, under this
|
||||||
|
License to anyone who comes into possession of a copy. This
|
||||||
|
License will therefore apply, along with any applicable section 7
|
||||||
|
additional terms, to the whole of the work, and all its parts,
|
||||||
|
regardless of how they are packaged. This License gives no
|
||||||
|
permission to license the work in any other way, but it does not
|
||||||
|
invalidate such permission if you have separately received it.
|
||||||
|
|
||||||
|
d) If the work has interactive user interfaces, each must display
|
||||||
|
Appropriate Legal Notices; however, if the Program has interactive
|
||||||
|
interfaces that do not display Appropriate Legal Notices, your
|
||||||
|
work need not make them do so.
|
||||||
|
|
||||||
|
A compilation of a covered work with other separate and independent
|
||||||
|
works, which are not by their nature extensions of the covered work,
|
||||||
|
and which are not combined with it such as to form a larger program,
|
||||||
|
in or on a volume of a storage or distribution medium, is called an
|
||||||
|
"aggregate" if the compilation and its resulting copyright are not
|
||||||
|
used to limit the access or legal rights of the compilation's users
|
||||||
|
beyond what the individual works permit. Inclusion of a covered work
|
||||||
|
in an aggregate does not cause this License to apply to the other
|
||||||
|
parts of the aggregate.
|
||||||
|
|
||||||
|
6. Conveying Non-Source Forms.
|
||||||
|
|
||||||
|
You may convey a covered work in object code form under the terms
|
||||||
|
of sections 4 and 5, provided that you also convey the
|
||||||
|
machine-readable Corresponding Source under the terms of this License,
|
||||||
|
in one of these ways:
|
||||||
|
|
||||||
|
a) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by the
|
||||||
|
Corresponding Source fixed on a durable physical medium
|
||||||
|
customarily used for software interchange.
|
||||||
|
|
||||||
|
b) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by a
|
||||||
|
written offer, valid for at least three years and valid for as
|
||||||
|
long as you offer spare parts or customer support for that product
|
||||||
|
model, to give anyone who possesses the object code either (1) a
|
||||||
|
copy of the Corresponding Source for all the software in the
|
||||||
|
product that is covered by this License, on a durable physical
|
||||||
|
medium customarily used for software interchange, for a price no
|
||||||
|
more than your reasonable cost of physically performing this
|
||||||
|
conveying of source, or (2) access to copy the
|
||||||
|
Corresponding Source from a network server at no charge.
|
||||||
|
|
||||||
|
c) Convey individual copies of the object code with a copy of the
|
||||||
|
written offer to provide the Corresponding Source. This
|
||||||
|
alternative is allowed only occasionally and noncommercially, and
|
||||||
|
only if you received the object code with such an offer, in accord
|
||||||
|
with subsection 6b.
|
||||||
|
|
||||||
|
d) Convey the object code by offering access from a designated
|
||||||
|
place (gratis or for a charge), and offer equivalent access to the
|
||||||
|
Corresponding Source in the same way through the same place at no
|
||||||
|
further charge. You need not require recipients to copy the
|
||||||
|
Corresponding Source along with the object code. If the place to
|
||||||
|
copy the object code is a network server, the Corresponding Source
|
||||||
|
may be on a different server (operated by you or a third party)
|
||||||
|
that supports equivalent copying facilities, provided you maintain
|
||||||
|
clear directions next to the object code saying where to find the
|
||||||
|
Corresponding Source. Regardless of what server hosts the
|
||||||
|
Corresponding Source, you remain obligated to ensure that it is
|
||||||
|
available for as long as needed to satisfy these requirements.
|
||||||
|
|
||||||
|
e) Convey the object code using peer-to-peer transmission, provided
|
||||||
|
you inform other peers where the object code and Corresponding
|
||||||
|
Source of the work are being offered to the general public at no
|
||||||
|
charge under subsection 6d.
|
||||||
|
|
||||||
|
A separable portion of the object code, whose source code is excluded
|
||||||
|
from the Corresponding Source as a System Library, need not be
|
||||||
|
included in conveying the object code work.
|
||||||
|
|
||||||
|
A "User Product" is either (1) a "consumer product", which means any
|
||||||
|
tangible personal property which is normally used for personal, family,
|
||||||
|
or household purposes, or (2) anything designed or sold for incorporation
|
||||||
|
into a dwelling. In determining whether a product is a consumer product,
|
||||||
|
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||||
|
product received by a particular user, "normally used" refers to a
|
||||||
|
typical or common use of that class of product, regardless of the status
|
||||||
|
of the particular user or of the way in which the particular user
|
||||||
|
actually uses, or expects or is expected to use, the product. A product
|
||||||
|
is a consumer product regardless of whether the product has substantial
|
||||||
|
commercial, industrial or non-consumer uses, unless such uses represent
|
||||||
|
the only significant mode of use of the product.
|
||||||
|
|
||||||
|
"Installation Information" for a User Product means any methods,
|
||||||
|
procedures, authorization keys, or other information required to install
|
||||||
|
and execute modified versions of a covered work in that User Product from
|
||||||
|
a modified version of its Corresponding Source. The information must
|
||||||
|
suffice to ensure that the continued functioning of the modified object
|
||||||
|
code is in no case prevented or interfered with solely because
|
||||||
|
modification has been made.
|
||||||
|
|
||||||
|
If you convey an object code work under this section in, or with, or
|
||||||
|
specifically for use in, a User Product, and the conveying occurs as
|
||||||
|
part of a transaction in which the right of possession and use of the
|
||||||
|
User Product is transferred to the recipient in perpetuity or for a
|
||||||
|
fixed term (regardless of how the transaction is characterized), the
|
||||||
|
Corresponding Source conveyed under this section must be accompanied
|
||||||
|
by the Installation Information. But this requirement does not apply
|
||||||
|
if neither you nor any third party retains the ability to install
|
||||||
|
modified object code on the User Product (for example, the work has
|
||||||
|
been installed in ROM).
|
||||||
|
|
||||||
|
The requirement to provide Installation Information does not include a
|
||||||
|
requirement to continue to provide support service, warranty, or updates
|
||||||
|
for a work that has been modified or installed by the recipient, or for
|
||||||
|
the User Product in which it has been modified or installed. Access to a
|
||||||
|
network may be denied when the modification itself materially and
|
||||||
|
adversely affects the operation of the network or violates the rules and
|
||||||
|
protocols for communication across the network.
|
||||||
|
|
||||||
|
Corresponding Source conveyed, and Installation Information provided,
|
||||||
|
in accord with this section must be in a format that is publicly
|
||||||
|
documented (and with an implementation available to the public in
|
||||||
|
source code form), and must require no special password or key for
|
||||||
|
unpacking, reading or copying.
|
||||||
|
|
||||||
|
7. Additional Terms.
|
||||||
|
|
||||||
|
"Additional permissions" are terms that supplement the terms of this
|
||||||
|
License by making exceptions from one or more of its conditions.
|
||||||
|
Additional permissions that are applicable to the entire Program shall
|
||||||
|
be treated as though they were included in this License, to the extent
|
||||||
|
that they are valid under applicable law. If additional permissions
|
||||||
|
apply only to part of the Program, that part may be used separately
|
||||||
|
under those permissions, but the entire Program remains governed by
|
||||||
|
this License without regard to the additional permissions.
|
||||||
|
|
||||||
|
When you convey a copy of a covered work, you may at your option
|
||||||
|
remove any additional permissions from that copy, or from any part of
|
||||||
|
it. (Additional permissions may be written to require their own
|
||||||
|
removal in certain cases when you modify the work.) You may place
|
||||||
|
additional permissions on material, added by you to a covered work,
|
||||||
|
for which you have or can give appropriate copyright permission.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, for material you
|
||||||
|
add to a covered work, you may (if authorized by the copyright holders of
|
||||||
|
that material) supplement the terms of this License with terms:
|
||||||
|
|
||||||
|
a) Disclaiming warranty or limiting liability differently from the
|
||||||
|
terms of sections 15 and 16 of this License; or
|
||||||
|
|
||||||
|
b) Requiring preservation of specified reasonable legal notices or
|
||||||
|
author attributions in that material or in the Appropriate Legal
|
||||||
|
Notices displayed by works containing it; or
|
||||||
|
|
||||||
|
c) Prohibiting misrepresentation of the origin of that material, or
|
||||||
|
requiring that modified versions of such material be marked in
|
||||||
|
reasonable ways as different from the original version; or
|
||||||
|
|
||||||
|
d) Limiting the use for publicity purposes of names of licensors or
|
||||||
|
authors of the material; or
|
||||||
|
|
||||||
|
e) Declining to grant rights under trademark law for use of some
|
||||||
|
trade names, trademarks, or service marks; or
|
||||||
|
|
||||||
|
f) Requiring indemnification of licensors and authors of that
|
||||||
|
material by anyone who conveys the material (or modified versions of
|
||||||
|
it) with contractual assumptions of liability to the recipient, for
|
||||||
|
any liability that these contractual assumptions directly impose on
|
||||||
|
those licensors and authors.
|
||||||
|
|
||||||
|
All other non-permissive additional terms are considered "further
|
||||||
|
restrictions" within the meaning of section 10. If the Program as you
|
||||||
|
received it, or any part of it, contains a notice stating that it is
|
||||||
|
governed by this License along with a term that is a further
|
||||||
|
restriction, you may remove that term. If a license document contains
|
||||||
|
a further restriction but permits relicensing or conveying under this
|
||||||
|
License, you may add to a covered work material governed by the terms
|
||||||
|
of that license document, provided that the further restriction does
|
||||||
|
not survive such relicensing or conveying.
|
||||||
|
|
||||||
|
If you add terms to a covered work in accord with this section, you
|
||||||
|
must place, in the relevant source files, a statement of the
|
||||||
|
additional terms that apply to those files, or a notice indicating
|
||||||
|
where to find the applicable terms.
|
||||||
|
|
||||||
|
Additional terms, permissive or non-permissive, may be stated in the
|
||||||
|
form of a separately written license, or stated as exceptions;
|
||||||
|
the above requirements apply either way.
|
||||||
|
|
||||||
|
8. Termination.
|
||||||
|
|
||||||
|
You may not propagate or modify a covered work except as expressly
|
||||||
|
provided under this License. Any attempt otherwise to propagate or
|
||||||
|
modify it is void, and will automatically terminate your rights under
|
||||||
|
this License (including any patent licenses granted under the third
|
||||||
|
paragraph of section 11).
|
||||||
|
|
||||||
|
However, if you cease all violation of this License, then your
|
||||||
|
license from a particular copyright holder is reinstated (a)
|
||||||
|
provisionally, unless and until the copyright holder explicitly and
|
||||||
|
finally terminates your license, and (b) permanently, if the copyright
|
||||||
|
holder fails to notify you of the violation by some reasonable means
|
||||||
|
prior to 60 days after the cessation.
|
||||||
|
|
||||||
|
Moreover, your license from a particular copyright holder is
|
||||||
|
reinstated permanently if the copyright holder notifies you of the
|
||||||
|
violation by some reasonable means, this is the first time you have
|
||||||
|
received notice of violation of this License (for any work) from that
|
||||||
|
copyright holder, and you cure the violation prior to 30 days after
|
||||||
|
your receipt of the notice.
|
||||||
|
|
||||||
|
Termination of your rights under this section does not terminate the
|
||||||
|
licenses of parties who have received copies or rights from you under
|
||||||
|
this License. If your rights have been terminated and not permanently
|
||||||
|
reinstated, you do not qualify to receive new licenses for the same
|
||||||
|
material under section 10.
|
||||||
|
|
||||||
|
9. Acceptance Not Required for Having Copies.
|
||||||
|
|
||||||
|
You are not required to accept this License in order to receive or
|
||||||
|
run a copy of the Program. Ancillary propagation of a covered work
|
||||||
|
occurring solely as a consequence of using peer-to-peer transmission
|
||||||
|
to receive a copy likewise does not require acceptance. However,
|
||||||
|
nothing other than this License grants you permission to propagate or
|
||||||
|
modify any covered work. These actions infringe copyright if you do
|
||||||
|
not accept this License. Therefore, by modifying or propagating a
|
||||||
|
covered work, you indicate your acceptance of this License to do so.
|
||||||
|
|
||||||
|
10. Automatic Licensing of Downstream Recipients.
|
||||||
|
|
||||||
|
Each time you convey a covered work, the recipient automatically
|
||||||
|
receives a license from the original licensors, to run, modify and
|
||||||
|
propagate that work, subject to this License. You are not responsible
|
||||||
|
for enforcing compliance by third parties with this License.
|
||||||
|
|
||||||
|
An "entity transaction" is a transaction transferring control of an
|
||||||
|
organization, or substantially all assets of one, or subdividing an
|
||||||
|
organization, or merging organizations. If propagation of a covered
|
||||||
|
work results from an entity transaction, each party to that
|
||||||
|
transaction who receives a copy of the work also receives whatever
|
||||||
|
licenses to the work the party's predecessor in interest had or could
|
||||||
|
give under the previous paragraph, plus a right to possession of the
|
||||||
|
Corresponding Source of the work from the predecessor in interest, if
|
||||||
|
the predecessor has it or can get it with reasonable efforts.
|
||||||
|
|
||||||
|
You may not impose any further restrictions on the exercise of the
|
||||||
|
rights granted or affirmed under this License. For example, you may
|
||||||
|
not impose a license fee, royalty, or other charge for exercise of
|
||||||
|
rights granted under this License, and you may not initiate litigation
|
||||||
|
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||||
|
any patent claim is infringed by making, using, selling, offering for
|
||||||
|
sale, or importing the Program or any portion of it.
|
||||||
|
|
||||||
|
11. Patents.
|
||||||
|
|
||||||
|
A "contributor" is a copyright holder who authorizes use under this
|
||||||
|
License of the Program or a work on which the Program is based. The
|
||||||
|
work thus licensed is called the contributor's "contributor version".
|
||||||
|
|
||||||
|
A contributor's "essential patent claims" are all patent claims
|
||||||
|
owned or controlled by the contributor, whether already acquired or
|
||||||
|
hereafter acquired, that would be infringed by some manner, permitted
|
||||||
|
by this License, of making, using, or selling its contributor version,
|
||||||
|
but do not include claims that would be infringed only as a
|
||||||
|
consequence of further modification of the contributor version. For
|
||||||
|
purposes of this definition, "control" includes the right to grant
|
||||||
|
patent sublicenses in a manner consistent with the requirements of
|
||||||
|
this License.
|
||||||
|
|
||||||
|
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||||
|
patent license under the contributor's essential patent claims, to
|
||||||
|
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||||
|
propagate the contents of its contributor version.
|
||||||
|
|
||||||
|
In the following three paragraphs, a "patent license" is any express
|
||||||
|
agreement or commitment, however denominated, not to enforce a patent
|
||||||
|
(such as an express permission to practice a patent or covenant not to
|
||||||
|
sue for patent infringement). To "grant" such a patent license to a
|
||||||
|
party means to make such an agreement or commitment not to enforce a
|
||||||
|
patent against the party.
|
||||||
|
|
||||||
|
If you convey a covered work, knowingly relying on a patent license,
|
||||||
|
and the Corresponding Source of the work is not available for anyone
|
||||||
|
to copy, free of charge and under the terms of this License, through a
|
||||||
|
publicly available network server or other readily accessible means,
|
||||||
|
then you must either (1) cause the Corresponding Source to be so
|
||||||
|
available, or (2) arrange to deprive yourself of the benefit of the
|
||||||
|
patent license for this particular work, or (3) arrange, in a manner
|
||||||
|
consistent with the requirements of this License, to extend the patent
|
||||||
|
license to downstream recipients. "Knowingly relying" means you have
|
||||||
|
actual knowledge that, but for the patent license, your conveying the
|
||||||
|
covered work in a country, or your recipient's use of the covered work
|
||||||
|
in a country, would infringe one or more identifiable patents in that
|
||||||
|
country that you have reason to believe are valid.
|
||||||
|
|
||||||
|
If, pursuant to or in connection with a single transaction or
|
||||||
|
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||||
|
covered work, and grant a patent license to some of the parties
|
||||||
|
receiving the covered work authorizing them to use, propagate, modify
|
||||||
|
or convey a specific copy of the covered work, then the patent license
|
||||||
|
you grant is automatically extended to all recipients of the covered
|
||||||
|
work and works based on it.
|
||||||
|
|
||||||
|
A patent license is "discriminatory" if it does not include within
|
||||||
|
the scope of its coverage, prohibits the exercise of, or is
|
||||||
|
conditioned on the non-exercise of one or more of the rights that are
|
||||||
|
specifically granted under this License. You may not convey a covered
|
||||||
|
work if you are a party to an arrangement with a third party that is
|
||||||
|
in the business of distributing software, under which you make payment
|
||||||
|
to the third party based on the extent of your activity of conveying
|
||||||
|
the work, and under which the third party grants, to any of the
|
||||||
|
parties who would receive the covered work from you, a discriminatory
|
||||||
|
patent license (a) in connection with copies of the covered work
|
||||||
|
conveyed by you (or copies made from those copies), or (b) primarily
|
||||||
|
for and in connection with specific products or compilations that
|
||||||
|
contain the covered work, unless you entered into that arrangement,
|
||||||
|
or that patent license was granted, prior to 28 March 2007.
|
||||||
|
|
||||||
|
Nothing in this License shall be construed as excluding or limiting
|
||||||
|
any implied license or other defenses to infringement that may
|
||||||
|
otherwise be available to you under applicable patent law.
|
||||||
|
|
||||||
|
12. No Surrender of Others' Freedom.
|
||||||
|
|
||||||
|
If conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot convey a
|
||||||
|
covered work so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you may
|
||||||
|
not convey it at all. For example, if you agree to terms that obligate you
|
||||||
|
to collect a royalty for further conveying from those to whom you convey
|
||||||
|
the Program, the only way you could satisfy both those terms and this
|
||||||
|
License would be to refrain entirely from conveying the Program.
|
||||||
|
|
||||||
|
13. Use with the GNU Affero General Public License.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, you have
|
||||||
|
permission to link or combine any covered work with a work licensed
|
||||||
|
under version 3 of the GNU Affero General Public License into a single
|
||||||
|
combined work, and to convey the resulting work. The terms of this
|
||||||
|
License will continue to apply to the part which is the covered work,
|
||||||
|
but the special requirements of the GNU Affero General Public License,
|
||||||
|
section 13, concerning interaction through a network will apply to the
|
||||||
|
combination as such.
|
||||||
|
|
||||||
|
14. Revised Versions of this License.
|
||||||
|
|
||||||
|
The Free Software Foundation may publish revised and/or new versions of
|
||||||
|
the GNU General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the
|
||||||
|
Program specifies that a certain numbered version of the GNU General
|
||||||
|
Public License "or any later version" applies to it, you have the
|
||||||
|
option of following the terms and conditions either of that numbered
|
||||||
|
version or of any later version published by the Free Software
|
||||||
|
Foundation. If the Program does not specify a version number of the
|
||||||
|
GNU General Public License, you may choose any version ever published
|
||||||
|
by the Free Software Foundation.
|
||||||
|
|
||||||
|
If the Program specifies that a proxy can decide which future
|
||||||
|
versions of the GNU General Public License can be used, that proxy's
|
||||||
|
public statement of acceptance of a version permanently authorizes you
|
||||||
|
to choose that version for the Program.
|
||||||
|
|
||||||
|
Later license versions may give you additional or different
|
||||||
|
permissions. However, no additional obligations are imposed on any
|
||||||
|
author or copyright holder as a result of your choosing to follow a
|
||||||
|
later version.
|
||||||
|
|
||||||
|
15. Disclaimer of Warranty.
|
||||||
|
|
||||||
|
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||||
|
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||||
|
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||||
|
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||||
|
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||||
|
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
16. Limitation of Liability.
|
||||||
|
|
||||||
|
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||||
|
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||||
|
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||||
|
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||||
|
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||||
|
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||||
|
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||||
|
SUCH DAMAGES.
|
||||||
|
|
||||||
|
17. Interpretation of Sections 15 and 16.
|
||||||
|
|
||||||
|
If the disclaimer of warranty and limitation of liability provided
|
||||||
|
above cannot be given local legal effect according to their terms,
|
||||||
|
reviewing courts shall apply local law that most closely approximates
|
||||||
|
an absolute waiver of all civil liability in connection with the
|
||||||
|
Program, unless a warranty or assumption of liability accompanies a
|
||||||
|
copy of the Program in return for a fee.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively
|
||||||
|
state the exclusion of warranty; and each file should have at least
|
||||||
|
the "copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If the program does terminal interaction, make it output a short
|
||||||
|
notice like this when it starts in an interactive mode:
|
||||||
|
|
||||||
|
<program> Copyright (C) <year> <name of author>
|
||||||
|
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
|
This is free software, and you are welcome to redistribute it
|
||||||
|
under certain conditions; type `show c' for details.
|
||||||
|
|
||||||
|
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||||
|
parts of the General Public License. Of course, your program's commands
|
||||||
|
might be different; for a GUI interface, you would use an "about box".
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or school,
|
||||||
|
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||||
|
For more information on this, and how to apply and follow the GNU GPL, see
|
||||||
|
<https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
The GNU General Public License does not permit incorporating your program
|
||||||
|
into proprietary programs. If your program is a subroutine library, you
|
||||||
|
may consider it more useful to permit linking proprietary applications with
|
||||||
|
the library. If this is what you want to do, use the GNU Lesser General
|
||||||
|
Public License instead of this License. But first, please read
|
||||||
|
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
||||||
@@ -0,0 +1,71 @@
|
|||||||
|
# Bromite - Take back your browser
|
||||||
|
|
||||||
|
[![GitHub release][version-image]][version-url] [![license][license-image]][license-url]
|
||||||
|
|
||||||
|
<img title="Bromite - take back your browser!" src="https://www.bromite.org/android-icon-192x192.png" width="96" alt="Bromite" />
|
||||||
|
|
||||||
|
Bromite is [Chromium](https://www.chromium.org/Home) plus some patches for ad blocking and enhanced privacy.
|
||||||
|
|
||||||
|
Bromite is only available for Android v4.1 and above.
|
||||||
|
|
||||||
|
See [open issues](https://github.com/bromite/bromite/issues) for the development in progress.
|
||||||
|
|
||||||
|
# Donate
|
||||||
|
|
||||||
|
Please donate to support development of Bromite and the costs for the build system.
|
||||||
|
|
||||||
|
Support development with a donation of 3 EUR: [](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=JP3XTQPVRNET2)
|
||||||
|
|
||||||
|
Support development with a free amount donation: [](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=LC7Q6A3UAQPY8)
|
||||||
|
|
||||||
|
BTC donations address: `3MkC3idL61npQSCxL1gceksmRTkNkiCPcG`
|
||||||
|
|
||||||
|
ETH donations address: `0xf47ff39223d828f99fec5ab53bd068c5c0522042`
|
||||||
|
|
||||||
|
# Features
|
||||||
|
|
||||||
|
* adblocking (currently baked-in, no configuration options available)
|
||||||
|
* remove click-tracking and AMP from Google search results
|
||||||
|
* allow youtube/vimeo videos to play in background
|
||||||
|
* [StartPage](https://startpage.com/) search engine (select it from search engines under settings)
|
||||||
|
* [DuckDuckGo](https://duckduckgo.com/) search engine (select it from search engines under settings)
|
||||||
|
* Google search engines English-only with reduced tracking (select it from search engines under settings)
|
||||||
|
* privacy enhancement patches from Inox patchset, ungoogled-chromium and Iridium projects
|
||||||
|
* all codecs included (proprietary, open H.264 etc.)
|
||||||
|
* built with official optimizations
|
||||||
|
|
||||||
|
# F.A.Q.
|
||||||
|
|
||||||
|
## Does Google Sync/Translate/Data saver work?
|
||||||
|
No.
|
||||||
|
This is not a limitation of Bromite but of all Chromium-based projects in general, as general public is not allowed to use Google's APIs for free unless when using Chrome.
|
||||||
|
|
||||||
|
# Releases
|
||||||
|
|
||||||
|
A build server goes through the very lengthy build operation and then new versions are available in this project as [releases](https://github.com/bromite/bromite/releases).
|
||||||
|
|
||||||
|
Each tag corresponds to a Chromium release tag.
|
||||||
|
|
||||||
|
# How to build
|
||||||
|
|
||||||
|
The [bromite main repository](https://github.com/bromite/bromite) contains tags for each corresponding Chromium release (see https://chromium.googlesource.com/chromium/src.git).
|
||||||
|
|
||||||
|
Please refer to [official Chromium build documentation](https://www.chromium.org/developers/how-tos/get-the-code) to get started on how to build Chromium; if you can build Chromium for Android, you can build Bromite.
|
||||||
|
|
||||||
|
# Credits
|
||||||
|
|
||||||
|
* [Chromium project](https://www.chromium.org/Home) and developers
|
||||||
|
* [ungoogled-chromium](https://github.com/Eloston/ungoogled-chromium) for some patches
|
||||||
|
* [Iridium project](https://github.com/iridium-browser) for some patches (taken from above ungoogled-chromium)
|
||||||
|
* [Inox patchset](https://github.com/gcarq/inox-patchset) for some patches (taken from above ungoogled-chromium)
|
||||||
|
* nochromo for the original adblock patch
|
||||||
|
* AdBlock Plus, uBlock, EasyList and EasyPrivacy for the compilation of original adblock patch
|
||||||
|
|
||||||
|
# License
|
||||||
|
|
||||||
|
The patches published as part of the Bromite project are released under [GNU GPL v3](./LICENSE).
|
||||||
|
|
||||||
|
[version-image]: https://img.shields.io/github/release/bromite/bromite.svg?style=flat-square
|
||||||
|
[version-url]: https://github.com/bromite/bromite/releases/latest
|
||||||
|
[license-image]: https://img.shields.io/github/license/bromite/bromite.svg
|
||||||
|
[license-url]: https://github.com/bromite/bromite/blob/master/LICENSE
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Wed Oct 11 22:47:49 2017 +0200
|
||||||
|
|
||||||
|
Disable the ad promo system by default
|
||||||
|
author: Michael Gilbert <mgilbert@debian.org>
|
||||||
|
bug-debian: http://bugs.debian.org/634101
|
||||||
|
|
||||||
|
diff --git a/chrome/browser/ui/app_list/app_list_service.cc b/chrome/browser/ui/app_list/app_list_service.cc
|
||||||
|
--- a/chrome/browser/ui/app_list/app_list_service.cc
|
||||||
|
+++ b/chrome/browser/ui/app_list/app_list_service.cc
|
||||||
|
@@ -142,6 +142,10 @@ void AppListService::RegisterPrefs(PrefRegistrySimple* registry) {
|
||||||
|
registry->RegisterIntegerPref(prefs::kAppListEnableMethod,
|
||||||
|
ENABLE_NOT_RECORDED);
|
||||||
|
registry->RegisterInt64Pref(prefs::kAppListEnableTime, 0);
|
||||||
|
+
|
||||||
|
+ // Identifies whether we should show the app launcher promo or not. This
|
||||||
|
+ // becomes false when the user dismisses the promo.
|
||||||
|
+ registry->RegisterBooleanPref(prefs::kShowAppLauncherPromo, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
// static
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Wed Oct 11 22:50:10 2017 +0200
|
||||||
|
|
||||||
|
Disable third-party cookies by default
|
||||||
|
author: Chad Miller <chad.miller@canonical.com>
|
||||||
|
|
||||||
|
diff --git a/components/content_settings/core/browser/cookie_settings.cc b/components/content_settings/core/browser/cookie_settings.cc
|
||||||
|
--- a/components/content_settings/core/browser/cookie_settings.cc
|
||||||
|
+++ b/components/content_settings/core/browser/cookie_settings.cc
|
||||||
|
@@ -88,7 +88,7 @@ void CookieSettings::GetCookieSettings(
|
||||||
|
void CookieSettings::RegisterProfilePrefs(
|
||||||
|
user_prefs::PrefRegistrySyncable* registry) {
|
||||||
|
registry->RegisterBooleanPref(
|
||||||
|
- prefs::kBlockThirdPartyCookies, false,
|
||||||
|
+ prefs::kBlockThirdPartyCookies, true,
|
||||||
|
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Sun Nov 26 11:40:05 2017 +0100
|
||||||
|
|
||||||
|
Restore classic new tab page
|
||||||
|
|
||||||
|
diff --git a/chrome/browser/search/search.cc b/chrome/browser/search/search.cc
|
||||||
|
--- a/chrome/browser/search/search.cc
|
||||||
|
+++ b/chrome/browser/search/search.cc
|
||||||
|
@@ -155,10 +155,7 @@ bool IsURLAllowedForSupervisedUser(const GURL& url, Profile* profile) {
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ShouldShowLocalNewTab(Profile* profile) {
|
||||||
|
- base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
|
||||||
|
- return command_line->HasSwitch(switches::kForceLocalNtp) ||
|
||||||
|
- (base::FeatureList::IsEnabled(features::kUseGoogleLocalNtp) &&
|
||||||
|
- profile && DefaultSearchProviderIsGoogle(profile));
|
||||||
|
+ return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ShouldDelayRemoteNTP(const GURL& search_provider_url, Profile* profile) {
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Wed Oct 11 22:57:29 2017 +0200
|
||||||
|
|
||||||
|
Disable battery status service
|
||||||
|
|
||||||
|
diff --git a/services/device/battery/battery_status_service.cc b/services/device/battery/battery_status_service.cc
|
||||||
|
--- a/services/device/battery/battery_status_service.cc
|
||||||
|
+++ b/services/device/battery/battery_status_service.cc
|
||||||
|
@@ -41,6 +41,7 @@ BatteryStatusService::AddCallback(const BatteryUpdateCallback& callback) {
|
||||||
|
if (!battery_fetcher_)
|
||||||
|
battery_fetcher_ = BatteryStatusManager::Create(update_callback_);
|
||||||
|
|
||||||
|
+#if 0
|
||||||
|
if (callback_list_.empty()) {
|
||||||
|
bool success = battery_fetcher_->StartListeningBatteryChange();
|
||||||
|
// On failure pass the default values back.
|
||||||
|
@@ -52,6 +53,10 @@ BatteryStatusService::AddCallback(const BatteryUpdateCallback& callback) {
|
||||||
|
// Send recent status to the new callback if already available.
|
||||||
|
callback.Run(status_);
|
||||||
|
}
|
||||||
|
+#else
|
||||||
|
+ // Always pass the default values.
|
||||||
|
+ callback.Run(BatteryStatus());
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
return callback_list_.Add(callback);
|
||||||
|
}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Wed Oct 11 22:58:52 2017 +0200
|
||||||
|
|
||||||
|
Disable GCM status check
|
||||||
|
|
||||||
|
diff --git a/components/gcm_driver/gcm_channel_status_request.cc b/components/gcm_driver/gcm_channel_status_request.cc
|
||||||
|
--- a/components/gcm_driver/gcm_channel_status_request.cc
|
||||||
|
+++ b/components/gcm_driver/gcm_channel_status_request.cc
|
||||||
|
@@ -23,8 +23,10 @@ namespace gcm {
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
+#if 0
|
||||||
|
const char kRequestContentType[] = "application/octet-stream";
|
||||||
|
const char kGCMChannelTag[] = "gcm_channel";
|
||||||
|
+#endif
|
||||||
|
const int kDefaultPollIntervalSeconds = 60 * 60; // 60 minutes.
|
||||||
|
const int kMinPollIntervalSeconds = 30 * 60; // 30 minutes.
|
||||||
|
|
||||||
|
@@ -57,6 +59,7 @@ int GCMChannelStatusRequest::min_poll_interval_seconds() {
|
||||||
|
}
|
||||||
|
|
||||||
|
void GCMChannelStatusRequest::Start() {
|
||||||
|
+#if 0
|
||||||
|
DCHECK(!url_fetcher_.get());
|
||||||
|
|
||||||
|
GURL request_url(channel_status_request_url_);
|
||||||
|
@@ -112,6 +115,9 @@ void GCMChannelStatusRequest::Start() {
|
||||||
|
url_fetcher_->SetLoadFlags(net::LOAD_DO_NOT_SEND_COOKIES |
|
||||||
|
net::LOAD_DO_NOT_SAVE_COOKIES);
|
||||||
|
url_fetcher_->Start();
|
||||||
|
+#endif
|
||||||
|
+ // Simulate an empty response and disable GCM.
|
||||||
|
+ callback_.Run(false, false, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void GCMChannelStatusRequest::OnURLFetchComplete(
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Thu Oct 12 01:35:53 2017 +0200
|
||||||
|
|
||||||
|
Disable updater pings
|
||||||
|
|
||||||
|
diff --git a/components/component_updater/configurator_impl.cc b/components/component_updater/configurator_impl.cc
|
||||||
|
--- a/components/component_updater/configurator_impl.cc
|
||||||
|
+++ b/components/component_updater/configurator_impl.cc
|
||||||
|
@@ -56,8 +56,10 @@ const char kSwitchDisableDeltaUpdates[] = "disable-delta-updates";
|
||||||
|
const char kSwitchDisableBackgroundDownloads[] = "disable-background-downloads";
|
||||||
|
#endif // defined(OS_WIN)
|
||||||
|
|
||||||
|
+#if 0
|
||||||
|
const base::Feature kAlternateComponentUrls{"AlternateComponentUrls",
|
||||||
|
base::FEATURE_ENABLED_BY_DEFAULT};
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
// If there is an element of |vec| of the form |test|=.*, returns the right-
|
||||||
|
// hand side of that assignment. Otherwise, returns an empty string.
|
||||||
|
@@ -86,8 +88,7 @@ ConfiguratorImpl::ConfiguratorImpl(const base::CommandLine* cmdline,
|
||||||
|
: fast_update_(false),
|
||||||
|
pings_enabled_(false),
|
||||||
|
deltas_enabled_(false),
|
||||||
|
- background_downloads_enabled_(false),
|
||||||
|
- require_encryption_(require_encryption) {
|
||||||
|
+ background_downloads_enabled_(false) {
|
||||||
|
// Parse comma-delimited debug flags.
|
||||||
|
std::vector<std::string> switch_values = base::SplitString(
|
||||||
|
cmdline->GetSwitchValueASCII(switches::kComponentUpdater), ",",
|
||||||
|
@@ -135,22 +136,6 @@ int ConfiguratorImpl::UpdateDelay() const {
|
||||||
|
|
||||||
|
std::vector<GURL> ConfiguratorImpl::UpdateUrl() const {
|
||||||
|
std::vector<GURL> urls;
|
||||||
|
- if (url_source_override_.is_valid()) {
|
||||||
|
- urls.push_back(GURL(url_source_override_));
|
||||||
|
- return urls;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- if (base::FeatureList::IsEnabled(kAlternateComponentUrls)) {
|
||||||
|
- urls.push_back(GURL(kUpdaterDefaultUrlAlt));
|
||||||
|
- urls.push_back(GURL(kUpdaterFallbackUrlAlt));
|
||||||
|
- } else {
|
||||||
|
- urls.push_back(GURL(kUpdaterDefaultUrl));
|
||||||
|
- urls.push_back(GURL(kUpdaterFallbackUrl));
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- if (require_encryption_)
|
||||||
|
- update_client::RemoveUnsecureUrls(&urls);
|
||||||
|
-
|
||||||
|
return urls;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/components/component_updater/configurator_impl.h b/components/component_updater/configurator_impl.h
|
||||||
|
--- a/components/component_updater/configurator_impl.h
|
||||||
|
+++ b/components/component_updater/configurator_impl.h
|
||||||
|
@@ -89,7 +89,6 @@ class ConfiguratorImpl {
|
||||||
|
bool pings_enabled_;
|
||||||
|
bool deltas_enabled_;
|
||||||
|
bool background_downloads_enabled_;
|
||||||
|
- bool require_encryption_;
|
||||||
|
|
||||||
|
DISALLOW_COPY_AND_ASSIGN(ConfiguratorImpl);
|
||||||
|
};
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Wed Oct 11 23:12:18 2017 +0200
|
||||||
|
|
||||||
|
[PATCH 35/60] Remove EV certificates
|
||||||
|
From: Jan Engelhardt <jengelh@inai.de>
|
||||||
|
Date: Thu, 2 Apr 2015 12:44:23 +0200
|
||||||
|
|
||||||
|
The team chose to let EV certificates appear just like normal
|
||||||
|
certificates. The web of trust is considered a failure in itself, so
|
||||||
|
do not give users a false sense of extra security with EV certs.
|
||||||
|
Instead, let them appear just like regular ones.
|
||||||
|
|
||||||
|
diff --git a/net/cert/ev_root_ca_metadata.cc b/net/cert/ev_root_ca_metadata.cc
|
||||||
|
--- a/net/cert/ev_root_ca_metadata.cc
|
||||||
|
+++ b/net/cert/ev_root_ca_metadata.cc
|
||||||
|
@@ -46,6 +46,16 @@ struct EVMetadata {
|
||||||
|
|
||||||
|
// These certificates may be found in net/data/ssl/ev_roots.
|
||||||
|
static const EVMetadata ev_root_ca_metadata[] = {
|
||||||
|
+ // need some dummy thing to make compiler happy, because
|
||||||
|
+ // arraysize() is implemented as a convoluted template rather than
|
||||||
|
+ // the traditional sizeof(x)/sizeof(*x)
|
||||||
|
+ { { { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
|
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } },
|
||||||
|
+ {
|
||||||
|
+ "0",
|
||||||
|
+ }
|
||||||
|
+ },
|
||||||
|
+#if 0
|
||||||
|
// AC Camerfirma S.A. Chambers of Commerce Root - 2008
|
||||||
|
// https://www.camerfirma.com
|
||||||
|
{
|
||||||
|
@@ -708,7 +718,9 @@ static const EVMetadata ev_root_ca_metadata[] = {
|
||||||
|
0xd2, 0x09, 0xb7, 0x37, 0xcb, 0xe2, 0xc1, 0x8c, 0xfb, 0x2c, 0x10,
|
||||||
|
0xc0, 0xff, 0x0b, 0xcf, 0x0d, 0x32, 0x86, 0xfc, 0x1a, 0xa2}},
|
||||||
|
{"2.16.840.1.114404.1.1.2.4.1", ""},
|
||||||
|
- }};
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
+};
|
||||||
|
|
||||||
|
#endif // defined(PLATFORM_USES_CHROMIUM_EV_METADATA)
|
||||||
|
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Wed Oct 11 23:19:25 2017 +0200
|
||||||
|
|
||||||
|
Subject: [PATCH 21/60] prefs: only keep cookies until exit
|
||||||
|
From: Jan Engelhardt <jengelh@inai.de>
|
||||||
|
Date: Sat, 13 Sep 2014 17:25:47 +0200
|
||||||
|
|
||||||
|
Out with all those tracking cookies!
|
||||||
|
|
||||||
|
diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc
|
||||||
|
--- a/components/content_settings/core/browser/content_settings_registry.cc
|
||||||
|
+++ b/components/content_settings/core/browser/content_settings_registry.cc
|
||||||
|
@@ -117,7 +117,7 @@ void ContentSettingsRegistry::Init() {
|
||||||
|
// WARNING: The string names of the permissions passed in below are used to
|
||||||
|
// generate preference names and should never be changed!
|
||||||
|
|
||||||
|
- Register(CONTENT_SETTINGS_TYPE_COOKIES, "cookies", CONTENT_SETTING_ALLOW,
|
||||||
|
+ Register(CONTENT_SETTINGS_TYPE_COOKIES, "cookies", CONTENT_SETTING_SESSION_ONLY,
|
||||||
|
WebsiteSettingsInfo::SYNCABLE,
|
||||||
|
WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme),
|
||||||
|
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK,
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Wed Oct 11 23:22:05 2017 +0200
|
||||||
|
|
||||||
|
[PATCH 45/60] promo: disable Google promotion fetching
|
||||||
|
From: Jan Engelhardt <jengelh@inai.de>
|
||||||
|
Date: Sun, 9 Nov 2014 01:54:27 +0100
|
||||||
|
|
||||||
|
Documentation is scarce, and sprinkled with misleading acronyms.
|
||||||
|
NTP is not NTP, for example. FWIW:
|
||||||
|
|
||||||
|
// A PromoResourceService fetches data from a web resource server to
|
||||||
|
// be used to dynamically change the appearance of the New Tab Page.
|
||||||
|
// For example, it has been used to fetch "tips" to be displayed on
|
||||||
|
// the NTP, or to display promotional messages to certain groups of
|
||||||
|
// Chrome users.
|
||||||
|
|
||||||
|
Whatever it is that it downloads, deactivate the one that leads to
|
||||||
|
Google.
|
||||||
|
|
||||||
|
References: https://github.com/iridium-browser/iridium-browser/issues/33
|
||||||
|
|
||||||
|
diff --git a/chrome/browser/signin/signin_promo.cc b/chrome/browser/signin/signin_promo.cc
|
||||||
|
--- a/chrome/browser/signin/signin_promo.cc
|
||||||
|
+++ b/chrome/browser/signin/signin_promo.cc
|
||||||
|
@@ -130,6 +130,7 @@ namespace signin {
|
||||||
|
|
||||||
|
bool ShouldShowPromoAtStartup(Profile* profile, bool is_new_profile) {
|
||||||
|
DCHECK(profile);
|
||||||
|
+ return false;
|
||||||
|
|
||||||
|
// Don't show if the profile is an incognito.
|
||||||
|
if (profile->IsOffTheRecord())
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Wed Oct 11 23:24:58 2017 +0200
|
||||||
|
|
||||||
|
Disables omission of URL elements in Omnibox
|
||||||
|
|
||||||
|
Disable all omissions (already shadowed by first flag)
|
||||||
|
|
||||||
|
diff --git a/components/url_formatter/url_formatter.cc b/components/url_formatter/url_formatter.cc
|
||||||
|
--- a/components/url_formatter/url_formatter.cc
|
||||||
|
+++ b/components/url_formatter/url_formatter.cc
|
||||||
|
@@ -401,13 +401,13 @@ bool IDNToUnicodeOneComponent(const base::char16* comp,
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
|
||||||
|
-const FormatUrlType kFormatUrlOmitNothing = 0;
|
||||||
|
-const FormatUrlType kFormatUrlOmitUsernamePassword = 1 << 0;
|
||||||
|
-const FormatUrlType kFormatUrlOmitHTTP = 1 << 1;
|
||||||
|
-const FormatUrlType kFormatUrlOmitTrailingSlashOnBareHostname = 1 << 2;
|
||||||
|
-const FormatUrlType kFormatUrlOmitHTTPS = 1 << 3;
|
||||||
|
-const FormatUrlType kFormatUrlExperimentalElideAfterHost = 1 << 4;
|
||||||
|
-const FormatUrlType kFormatUrlOmitTrivialSubdomains = 1 << 5;
|
||||||
|
+const FormatUrlType kFormatUrlOmitNothing = 1;
|
||||||
|
+const FormatUrlType kFormatUrlOmitUsernamePassword = 0 << 0;
|
||||||
|
+const FormatUrlType kFormatUrlOmitHTTP = 0 << 1;
|
||||||
|
+const FormatUrlType kFormatUrlOmitTrailingSlashOnBareHostname = 0 << 2;
|
||||||
|
+const FormatUrlType kFormatUrlOmitHTTPS = 0 << 3;
|
||||||
|
+const FormatUrlType kFormatUrlExperimentalElideAfterHost = 0 << 4;
|
||||||
|
+const FormatUrlType kFormatUrlOmitTrivialSubdomains = 0 << 5;
|
||||||
|
|
||||||
|
const FormatUrlType kFormatUrlOmitDefaults =
|
||||||
|
kFormatUrlOmitUsernamePassword | kFormatUrlOmitHTTP |
|
||||||
@@ -0,0 +1,221 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Thu Oct 12 08:09:24 2017 +0200
|
||||||
|
|
||||||
|
Modify default preferences
|
||||||
|
|
||||||
|
diff --git a/chrome/browser/background/background_mode_manager.cc b/chrome/browser/background/background_mode_manager.cc
|
||||||
|
--- a/chrome/browser/background/background_mode_manager.cc
|
||||||
|
+++ b/chrome/browser/background/background_mode_manager.cc
|
||||||
|
@@ -363,7 +363,7 @@ void BackgroundModeManager::RegisterPrefs(PrefRegistrySimple* registry) {
|
||||||
|
registry->RegisterBooleanPref(prefs::kChromeCreatedLoginItem, false);
|
||||||
|
registry->RegisterBooleanPref(prefs::kMigratedLoginItemPref, false);
|
||||||
|
#endif
|
||||||
|
- registry->RegisterBooleanPref(prefs::kBackgroundModeEnabled, true);
|
||||||
|
+ registry->RegisterBooleanPref(prefs::kBackgroundModeEnabled, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BackgroundModeManager::RegisterProfile(Profile* profile) {
|
||||||
|
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
|
||||||
|
--- a/chrome/browser/chrome_content_browser_client.cc
|
||||||
|
+++ b/chrome/browser/chrome_content_browser_client.cc
|
||||||
|
@@ -879,7 +879,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
|
||||||
|
void ChromeContentBrowserClient::RegisterProfilePrefs(
|
||||||
|
user_prefs::PrefRegistrySyncable* registry) {
|
||||||
|
registry->RegisterBooleanPref(prefs::kDisable3DAPIs, false);
|
||||||
|
- registry->RegisterBooleanPref(prefs::kEnableHyperlinkAuditing, true);
|
||||||
|
+ registry->RegisterBooleanPref(prefs::kEnableHyperlinkAuditing, false);
|
||||||
|
registry->RegisterListPref(prefs::kEnableDeprecatedWebPlatformFeatures);
|
||||||
|
// Register user prefs for mapping SitePerProcess and IsolateOrigins in
|
||||||
|
// user policy in addition to the same named ones in Local State (which are
|
||||||
|
diff --git a/chrome/browser/io_thread.cc b/chrome/browser/io_thread.cc
|
||||||
|
--- a/chrome/browser/io_thread.cc
|
||||||
|
+++ b/chrome/browser/io_thread.cc
|
||||||
|
@@ -625,7 +625,7 @@ void IOThread::RegisterPrefs(PrefRegistrySimple* registry) {
|
||||||
|
std::string());
|
||||||
|
registry->RegisterBooleanPref(prefs::kEnableReferrers, true);
|
||||||
|
data_reduction_proxy::RegisterPrefs(registry);
|
||||||
|
- registry->RegisterBooleanPref(prefs::kBuiltInDnsClientEnabled, true);
|
||||||
|
+ registry->RegisterBooleanPref(prefs::kBuiltInDnsClientEnabled, false);
|
||||||
|
registry->RegisterBooleanPref(prefs::kQuickCheckEnabled, true);
|
||||||
|
registry->RegisterBooleanPref(prefs::kPacHttpsUrlStrippingEnabled, true);
|
||||||
|
#if defined(OS_POSIX)
|
||||||
|
diff --git a/chrome/browser/net/prediction_options.cc b/chrome/browser/net/prediction_options.cc
|
||||||
|
--- a/chrome/browser/net/prediction_options.cc
|
||||||
|
+++ b/chrome/browser/net/prediction_options.cc
|
||||||
|
@@ -30,7 +30,7 @@ NetworkPredictionStatus CanPrefetchAndPrerender(
|
||||||
|
return NetworkPredictionStatus::ENABLED;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
- DCHECK_EQ(NETWORK_PREDICTION_NEVER, network_prediction_options);
|
||||||
|
+ //DCHECK_EQ(NETWORK_PREDICTION_NEVER, network_prediction_options);
|
||||||
|
return NetworkPredictionStatus::DISABLED_ALWAYS;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
diff --git a/chrome/browser/net/prediction_options.h b/chrome/browser/net/prediction_options.h
|
||||||
|
--- a/chrome/browser/net/prediction_options.h
|
||||||
|
+++ b/chrome/browser/net/prediction_options.h
|
||||||
|
@@ -23,7 +23,7 @@ enum NetworkPredictionOptions {
|
||||||
|
NETWORK_PREDICTION_ALWAYS,
|
||||||
|
NETWORK_PREDICTION_WIFI_ONLY,
|
||||||
|
NETWORK_PREDICTION_NEVER,
|
||||||
|
- NETWORK_PREDICTION_DEFAULT = NETWORK_PREDICTION_WIFI_ONLY,
|
||||||
|
+ NETWORK_PREDICTION_DEFAULT = NETWORK_PREDICTION_NEVER,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum class NetworkPredictionStatus {
|
||||||
|
diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profile.cc
|
||||||
|
--- a/chrome/browser/profiles/profile.cc
|
||||||
|
+++ b/chrome/browser/profiles/profile.cc
|
||||||
|
@@ -138,7 +138,7 @@ const char Profile::kNoHostedDomainFound[] = "NO_HOSTED_DOMAIN";
|
||||||
|
void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
|
||||||
|
registry->RegisterBooleanPref(
|
||||||
|
prefs::kSearchSuggestEnabled,
|
||||||
|
- true,
|
||||||
|
+ false,
|
||||||
|
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
||||||
|
#if defined(OS_ANDROID)
|
||||||
|
registry->RegisterStringPref(
|
||||||
|
diff --git a/chrome/browser/resources/settings/reset_page/reset_profile_dialog.html b/chrome/browser/resources/settings/reset_page/reset_profile_dialog.html
|
||||||
|
--- a/chrome/browser/resources/settings/reset_page/reset_profile_dialog.html
|
||||||
|
+++ b/chrome/browser/resources/settings/reset_page/reset_profile_dialog.html
|
||||||
|
@@ -45,7 +45,7 @@
|
||||||
|
</paper-button>
|
||||||
|
</div>
|
||||||
|
<div slot="footer">
|
||||||
|
- <paper-checkbox id="sendSettings" checked>
|
||||||
|
+ <paper-checkbox id="sendSettings">
|
||||||
|
$i18nRaw{resetPageFeedback}</paper-checkbox>
|
||||||
|
</div>
|
||||||
|
</dialog>
|
||||||
|
diff --git a/chrome/browser/signin/signin_promo.cc b/chrome/browser/signin/signin_promo.cc
|
||||||
|
--- a/chrome/browser/signin/signin_promo.cc
|
||||||
|
+++ b/chrome/browser/signin/signin_promo.cc
|
||||||
|
@@ -384,8 +384,8 @@ void ForceWebBasedSigninFlowForTesting(bool force) {
|
||||||
|
void RegisterProfilePrefs(
|
||||||
|
user_prefs::PrefRegistrySyncable* registry) {
|
||||||
|
registry->RegisterIntegerPref(prefs::kSignInPromoStartupCount, 0);
|
||||||
|
- registry->RegisterBooleanPref(prefs::kSignInPromoUserSkipped, false);
|
||||||
|
- registry->RegisterBooleanPref(prefs::kSignInPromoShowOnFirstRunAllowed, true);
|
||||||
|
+ registry->RegisterBooleanPref(prefs::kSignInPromoUserSkipped, true);
|
||||||
|
+ registry->RegisterBooleanPref(prefs::kSignInPromoShowOnFirstRunAllowed, false);
|
||||||
|
registry->RegisterBooleanPref(prefs::kSignInPromoShowNTPBubble, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_ui_prefs.cc
|
||||||
|
--- a/chrome/browser/ui/browser_ui_prefs.cc
|
||||||
|
+++ b/chrome/browser/ui/browser_ui_prefs.cc
|
||||||
|
@@ -65,11 +65,11 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
|
||||||
|
registry->RegisterBooleanPref(prefs::kWebAppCreateInAppsMenu, true);
|
||||||
|
registry->RegisterBooleanPref(prefs::kWebAppCreateInQuickLaunchBar, true);
|
||||||
|
registry->RegisterBooleanPref(
|
||||||
|
- prefs::kOfferTranslateEnabled, true,
|
||||||
|
+ prefs::kOfferTranslateEnabled, false,
|
||||||
|
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
||||||
|
registry->RegisterStringPref(prefs::kCloudPrintEmail, std::string());
|
||||||
|
registry->RegisterBooleanPref(prefs::kCloudPrintProxyEnabled, true);
|
||||||
|
- registry->RegisterBooleanPref(prefs::kCloudPrintSubmitEnabled, true);
|
||||||
|
+ registry->RegisterBooleanPref(prefs::kCloudPrintSubmitEnabled, false);
|
||||||
|
registry->RegisterBooleanPref(prefs::kDevToolsDisabled, false);
|
||||||
|
registry->RegisterDictionaryPref(prefs::kBrowserWindowPlacement);
|
||||||
|
registry->RegisterDictionaryPref(prefs::kBrowserWindowPlacementPopup);
|
||||||
|
diff --git a/chrome/browser/ui/navigation_correction_tab_observer.cc b/chrome/browser/ui/navigation_correction_tab_observer.cc
|
||||||
|
--- a/chrome/browser/ui/navigation_correction_tab_observer.cc
|
||||||
|
+++ b/chrome/browser/ui/navigation_correction_tab_observer.cc
|
||||||
|
@@ -58,7 +58,7 @@ NavigationCorrectionTabObserver::~NavigationCorrectionTabObserver() {
|
||||||
|
void NavigationCorrectionTabObserver::RegisterProfilePrefs(
|
||||||
|
user_prefs::PrefRegistrySyncable* prefs) {
|
||||||
|
prefs->RegisterBooleanPref(prefs::kAlternateErrorPagesEnabled,
|
||||||
|
- true,
|
||||||
|
+ false,
|
||||||
|
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/chrome/browser/ui/webui/local_discovery/local_discovery_ui.cc b/chrome/browser/ui/webui/local_discovery/local_discovery_ui.cc
|
||||||
|
--- a/chrome/browser/ui/webui/local_discovery/local_discovery_ui.cc
|
||||||
|
+++ b/chrome/browser/ui/webui/local_discovery/local_discovery_ui.cc
|
||||||
|
@@ -144,10 +144,6 @@ void LocalDiscoveryUI::RegisterProfilePrefs(
|
||||||
|
user_prefs::PrefRegistrySyncable* registry) {
|
||||||
|
registry->RegisterBooleanPref(
|
||||||
|
prefs::kLocalDiscoveryNotificationsEnabled,
|
||||||
|
-#if defined(OS_WIN)
|
||||||
|
false,
|
||||||
|
-#else
|
||||||
|
- true,
|
||||||
|
-#endif
|
||||||
|
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
||||||
|
}
|
||||||
|
diff --git a/chrome/service/cloud_print/connector_settings.cc b/chrome/service/cloud_print/connector_settings.cc
|
||||||
|
--- a/chrome/service/cloud_print/connector_settings.cc
|
||||||
|
+++ b/chrome/service/cloud_print/connector_settings.cc
|
||||||
|
@@ -60,7 +60,7 @@ void ConnectorSettings::InitFrom(ServiceProcessPrefs* prefs) {
|
||||||
|
DCHECK(server_url_.is_valid());
|
||||||
|
|
||||||
|
connect_new_printers_ = prefs->GetBoolean(
|
||||||
|
- prefs::kCloudPrintConnectNewPrinters, true);
|
||||||
|
+ prefs::kCloudPrintConnectNewPrinters, false);
|
||||||
|
|
||||||
|
xmpp_ping_enabled_ = prefs->GetBoolean(
|
||||||
|
prefs::kCloudPrintXmppPingEnabled, false);
|
||||||
|
diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/autofill/core/browser/autofill_manager.cc
|
||||||
|
--- a/components/autofill/core/browser/autofill_manager.cc
|
||||||
|
+++ b/components/autofill/core/browser/autofill_manager.cc
|
||||||
|
@@ -216,7 +216,7 @@ void AutofillManager::RegisterProfilePrefs(
|
||||||
|
registry->RegisterIntegerPref(
|
||||||
|
prefs::kAutofillCreditCardSigninPromoImpressionCount, 0);
|
||||||
|
registry->RegisterBooleanPref(
|
||||||
|
- prefs::kAutofillEnabled, true,
|
||||||
|
+ prefs::kAutofillEnabled, false,
|
||||||
|
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
||||||
|
registry->RegisterBooleanPref(
|
||||||
|
prefs::kAutofillProfileUseDatesFixed, false,
|
||||||
|
diff --git a/components/bookmarks/browser/bookmark_utils.cc b/components/bookmarks/browser/bookmark_utils.cc
|
||||||
|
--- a/components/bookmarks/browser/bookmark_utils.cc
|
||||||
|
+++ b/components/bookmarks/browser/bookmark_utils.cc
|
||||||
|
@@ -442,12 +442,12 @@ void GetBookmarksMatchingProperties(BookmarkModel* model,
|
||||||
|
void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
|
||||||
|
registry->RegisterBooleanPref(
|
||||||
|
prefs::kShowBookmarkBar,
|
||||||
|
- false,
|
||||||
|
+ true,
|
||||||
|
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
||||||
|
registry->RegisterBooleanPref(prefs::kEditBookmarksEnabled, true);
|
||||||
|
registry->RegisterBooleanPref(
|
||||||
|
prefs::kShowAppsShortcutInBookmarkBar,
|
||||||
|
- true,
|
||||||
|
+ false,
|
||||||
|
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
||||||
|
registry->RegisterBooleanPref(
|
||||||
|
prefs::kShowManagedBookmarksInBookmarkBar,
|
||||||
|
diff --git a/components/safe_browsing/common/safe_browsing_prefs.cc b/components/safe_browsing/common/safe_browsing_prefs.cc
|
||||||
|
--- a/components/safe_browsing/common/safe_browsing_prefs.cc
|
||||||
|
+++ b/components/safe_browsing/common/safe_browsing_prefs.cc
|
||||||
|
@@ -346,9 +346,9 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
|
||||||
|
registry->RegisterBooleanPref(
|
||||||
|
prefs::kSafeBrowsingSawInterstitialScoutReporting, false);
|
||||||
|
registry->RegisterBooleanPref(
|
||||||
|
- prefs::kSafeBrowsingExtendedReportingOptInAllowed, true);
|
||||||
|
+ prefs::kSafeBrowsingExtendedReportingOptInAllowed, false);
|
||||||
|
registry->RegisterBooleanPref(
|
||||||
|
- prefs::kSafeBrowsingEnabled, true,
|
||||||
|
+ prefs::kSafeBrowsingEnabled, false,
|
||||||
|
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
||||||
|
registry->RegisterBooleanPref(prefs::kSafeBrowsingProceedAnywayDisabled,
|
||||||
|
false);
|
||||||
|
diff --git a/extensions/common/extension.cc b/extensions/common/extension.cc
|
||||||
|
--- a/extensions/common/extension.cc
|
||||||
|
+++ b/extensions/common/extension.cc
|
||||||
|
@@ -330,14 +330,6 @@ bool Extension::ShouldDisplayInExtensionSettings() const {
|
||||||
|
if (is_theme())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
- // Hide component extensions because they are only extensions as an
|
||||||
|
- // implementation detail of Chrome.
|
||||||
|
- if (extensions::Manifest::IsComponentLocation(location()) &&
|
||||||
|
- !base::CommandLine::ForCurrentProcess()->HasSwitch(
|
||||||
|
- switches::kShowComponentExtensionOptions)) {
|
||||||
|
- return false;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
// Unless they are unpacked, never show hosted apps. Note: We intentionally
|
||||||
|
// show packaged apps and platform apps because there are some pieces of
|
||||||
|
// functionality that are only available in chrome://extensions/ but which
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Wed Oct 11 23:17:17 2017 +0200
|
||||||
|
|
||||||
|
Do not store passwords by default
|
||||||
|
|
||||||
|
diff --git a/components/password_manager/core/browser/password_manager.cc b/components/password_manager/core/browser/password_manager.cc
|
||||||
|
--- a/components/password_manager/core/browser/password_manager.cc
|
||||||
|
+++ b/components/password_manager/core/browser/password_manager.cc
|
||||||
|
@@ -244,10 +244,10 @@ PasswordFormManager* FindMatchedManager(
|
||||||
|
void PasswordManager::RegisterProfilePrefs(
|
||||||
|
user_prefs::PrefRegistrySyncable* registry) {
|
||||||
|
registry->RegisterBooleanPref(
|
||||||
|
- prefs::kCredentialsEnableService, true,
|
||||||
|
+ prefs::kCredentialsEnableService, false,
|
||||||
|
user_prefs::PrefRegistrySyncable::SYNCABLE_PRIORITY_PREF);
|
||||||
|
registry->RegisterBooleanPref(
|
||||||
|
- prefs::kCredentialsEnableAutosignin, true,
|
||||||
|
+ prefs::kCredentialsEnableAutosignin, false,
|
||||||
|
user_prefs::PrefRegistrySyncable::SYNCABLE_PRIORITY_PREF);
|
||||||
|
registry->RegisterBooleanPref(prefs::kWasObsoleteHttpDataCleaned, false);
|
||||||
|
registry->RegisterStringPref(prefs::kSyncPasswordHash, std::string(),
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Thu Oct 12 08:15:17 2017 +0200
|
||||||
|
|
||||||
|
Disable NTP remote suggestions by default
|
||||||
|
|
||||||
|
diff --git a/components/ntp_snippets/features.cc b/components/ntp_snippets/features.cc
|
||||||
|
--- a/components/ntp_snippets/features.cc
|
||||||
|
+++ b/components/ntp_snippets/features.cc
|
||||||
|
@@ -41,16 +41,16 @@ const base::Feature kArticleSuggestionsExpandableHeader{
|
||||||
|
"NTPArticleSuggestionsExpandableHeader", base::FEATURE_DISABLED_BY_DEFAULT};
|
||||||
|
|
||||||
|
const base::Feature kArticleSuggestionsFeature{
|
||||||
|
- "NTPArticleSuggestions", base::FEATURE_ENABLED_BY_DEFAULT};
|
||||||
|
+ "NTPArticleSuggestions", base::FEATURE_DISABLED_BY_DEFAULT};
|
||||||
|
|
||||||
|
const base::Feature kBookmarkSuggestionsFeature{
|
||||||
|
- "NTPBookmarkSuggestions", base::FEATURE_ENABLED_BY_DEFAULT};
|
||||||
|
+ "NTPBookmarkSuggestions", base::FEATURE_DISABLED_BY_DEFAULT};
|
||||||
|
|
||||||
|
const base::Feature kRecentOfflineTabSuggestionsFeature{
|
||||||
|
"NTPOfflinePageSuggestions", base::FEATURE_DISABLED_BY_DEFAULT};
|
||||||
|
|
||||||
|
const base::Feature kIncreasedVisibility{"NTPSnippetsIncreasedVisibility",
|
||||||
|
- base::FEATURE_ENABLED_BY_DEFAULT};
|
||||||
|
+ base::FEATURE_DISABLED_BY_DEFAULT};
|
||||||
|
|
||||||
|
const base::Feature kPhysicalWebPageSuggestionsFeature{
|
||||||
|
"NTPPhysicalWebPageSuggestions", base::FEATURE_DISABLED_BY_DEFAULT};
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Sun Oct 15 21:45:46 2017 +0200
|
||||||
|
|
||||||
|
Disables references to fonts.googleapis.com
|
||||||
|
|
||||||
|
diff --git a/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc b/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc
|
||||||
|
--- a/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc
|
||||||
|
+++ b/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc
|
||||||
|
@@ -310,7 +310,7 @@ bool DomDistillerViewerSource::ShouldServiceRequest(
|
||||||
|
|
||||||
|
std::string DomDistillerViewerSource::GetContentSecurityPolicyStyleSrc()
|
||||||
|
const {
|
||||||
|
- return "style-src 'self' https://fonts.googleapis.com;";
|
||||||
|
+ return "style-src 'self';";
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string DomDistillerViewerSource::GetContentSecurityPolicyChildSrc() const {
|
||||||
|
diff --git a/components/dom_distiller/core/html/preview.html b/components/dom_distiller/core/html/preview.html
|
||||||
|
--- a/components/dom_distiller/core/html/preview.html
|
||||||
|
+++ b/components/dom_distiller/core/html/preview.html
|
||||||
|
@@ -11,7 +11,7 @@ found in the LICENSE file.
|
||||||
|
<meta name="theme-color" id="theme-color">
|
||||||
|
<title>Title goes here and it could be kind of lengthy - Publisher name</title>
|
||||||
|
<link href="../css/distilledpage.css" rel="stylesheet" type="text/css">
|
||||||
|
- <link href='https://fonts.googleapis.com/css?family=Roboto' rel='stylesheet' type='text/css'>
|
||||||
|
+ <link href='chrome://resources/css/roboto.css' rel='stylesheet' type='text/css'>
|
||||||
|
<style>
|
||||||
|
.english :lang(th) {display: none}
|
||||||
|
.english :lang(zh) {display: none}
|
||||||
|
diff --git a/components/dom_distiller/core/javascript/dom_distiller_viewer.js b/components/dom_distiller/core/javascript/dom_distiller_viewer.js
|
||||||
|
--- a/components/dom_distiller/core/javascript/dom_distiller_viewer.js
|
||||||
|
+++ b/components/dom_distiller/core/javascript/dom_distiller_viewer.js
|
||||||
|
@@ -120,7 +120,7 @@ function maybeSetWebFont() {
|
||||||
|
if (distiller_on_ios) return;
|
||||||
|
|
||||||
|
var e = document.createElement('link');
|
||||||
|
- e.href = 'https://fonts.googleapis.com/css?family=Roboto';
|
||||||
|
+ e.href = 'chrome://resources/css/roboto.css';
|
||||||
|
e.rel = 'stylesheet';
|
||||||
|
e.type = 'text/css';
|
||||||
|
document.head.appendChild(e);
|
||||||
|
diff --git a/third_party/crashpad/crashpad/doc/support/crashpad_doxygen.css b/third_party/crashpad/crashpad/doc/support/crashpad_doxygen.css
|
||||||
|
--- a/third_party/crashpad/crashpad/doc/support/crashpad_doxygen.css
|
||||||
|
+++ b/third_party/crashpad/crashpad/doc/support/crashpad_doxygen.css
|
||||||
|
@@ -12,8 +12,7 @@
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License. */
|
||||||
|
|
||||||
|
-@import "https://fonts.googleapis.com/css?family=Open+Sans:300,400,700&subset=latin,cyrillic-ext,greek-ext,cyrillic,greek,vietnamese,latin-ext";
|
||||||
|
-@import "https://fonts.googleapis.com/css?family=Source+Code+Pro";
|
||||||
|
+@import "chrome://resources/css/roboto.css";
|
||||||
|
|
||||||
|
body,
|
||||||
|
table,
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Thu Oct 26 16:59:03 2017 +0200
|
||||||
|
|
||||||
|
Disable WebRTC by default
|
||||||
|
|
||||||
|
diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_ui_prefs.cc
|
||||||
|
--- a/chrome/browser/ui/browser_ui_prefs.cc
|
||||||
|
+++ b/chrome/browser/ui/browser_ui_prefs.cc
|
||||||
|
@@ -84,10 +84,10 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
|
||||||
|
#endif
|
||||||
|
#if BUILDFLAG(ENABLE_WEBRTC)
|
||||||
|
// TODO(guoweis): Remove next 2 options at M50.
|
||||||
|
- registry->RegisterBooleanPref(prefs::kWebRTCMultipleRoutesEnabled, true);
|
||||||
|
- registry->RegisterBooleanPref(prefs::kWebRTCNonProxiedUdpEnabled, true);
|
||||||
|
+ registry->RegisterBooleanPref(prefs::kWebRTCMultipleRoutesEnabled, false);
|
||||||
|
+ registry->RegisterBooleanPref(prefs::kWebRTCNonProxiedUdpEnabled, false);
|
||||||
|
registry->RegisterStringPref(prefs::kWebRTCIPHandlingPolicy,
|
||||||
|
- content::kWebRTCIPHandlingDefault);
|
||||||
|
+ content::kWebRTCIPHandlingDisableNonProxiedUdp);
|
||||||
|
registry->RegisterStringPref(prefs::kWebRTCUDPPortRange, std::string());
|
||||||
|
#endif
|
||||||
|
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Fri Oct 27 15:53:37 2017 +0200
|
||||||
|
|
||||||
|
Ported data reduction disable patch
|
||||||
|
|
||||||
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java
|
||||||
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java
|
||||||
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java
|
||||||
|
@@ -140,7 +140,7 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa
|
||||||
|
boolean notifyAdapter = false;
|
||||||
|
// An optional Data Saver page.
|
||||||
|
if (mFreProperties.getBoolean(SHOW_DATA_REDUCTION_PAGE)) {
|
||||||
|
- mPages.add(new DataReductionProxyFirstRunFragment.Page());
|
||||||
|
+ //mPages.add(new DataReductionProxyFirstRunFragment.Page());
|
||||||
|
mFreProgressStates.add(FRE_PROGRESS_DATA_SAVER_SHOWN);
|
||||||
|
notifyAdapter = true;
|
||||||
|
}
|
||||||
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/net/spdyproxy/DataReductionProxySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/net/spdyproxy/DataReductionProxySettings.java
|
||||||
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/net/spdyproxy/DataReductionProxySettings.java
|
||||||
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/net/spdyproxy/DataReductionProxySettings.java
|
||||||
|
@@ -149,6 +149,7 @@ public class DataReductionProxySettings {
|
||||||
|
// DataReductionProxySettings is a singleton that lives forever and there's no clean
|
||||||
|
// shutdown of Chrome on Android
|
||||||
|
mNativeDataReductionProxySettings = nativeInit();
|
||||||
|
+ nativeSetDataReductionProxyEnabled(mNativeDataReductionProxySettings, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Returns true if the SPDY proxy promo is allowed to be shown. */
|
||||||
|
@@ -171,6 +172,7 @@ public class DataReductionProxySettings {
|
||||||
|
* data reduction statistics if this is the first time the SPDY proxy has been enabled.
|
||||||
|
*/
|
||||||
|
public void setDataReductionProxyEnabled(Context context, boolean enabled) {
|
||||||
|
+ enabled = false;
|
||||||
|
if (enabled
|
||||||
|
&& ContextUtils.getAppSharedPreferences().getLong(
|
||||||
|
DATA_REDUCTION_FIRST_ENABLED_TIME, 0)
|
||||||
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionPromoUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionPromoUtils.java
|
||||||
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionPromoUtils.java
|
||||||
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionPromoUtils.java
|
||||||
|
@@ -68,7 +68,7 @@ public class DataReductionPromoUtils {
|
||||||
|
}
|
||||||
|
if (DataReductionProxySettings.getInstance().isDataReductionProxyManaged()) return false;
|
||||||
|
if (DataReductionProxySettings.getInstance().isDataReductionProxyEnabled()) return false;
|
||||||
|
- return true;
|
||||||
|
+ return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
@@ -0,0 +1,80 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Sun Nov 26 22:51:43 2017 +0100
|
||||||
|
|
||||||
|
Skip the first run and metrics
|
||||||
|
|
||||||
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunStatus.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunStatus.java
|
||||||
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunStatus.java
|
||||||
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunStatus.java
|
||||||
|
@@ -36,11 +36,11 @@ public class FirstRunStatus {
|
||||||
|
* includes ToS and Sign In pages if necessary.
|
||||||
|
*/
|
||||||
|
public static boolean getFirstRunFlowComplete() {
|
||||||
|
- if (ContextUtils.getAppSharedPreferences().getBoolean(FIRST_RUN_FLOW_COMPLETE, false)) {
|
||||||
|
- return true;
|
||||||
|
+ boolean complete = ContextUtils.getAppSharedPreferences().getBoolean(FIRST_RUN_FLOW_COMPLETE, false);
|
||||||
|
+ if (!complete) {
|
||||||
|
+ setFirstRunFlowComplete(true);
|
||||||
|
}
|
||||||
|
- return CommandLine.getInstance().hasSwitch(
|
||||||
|
- ChromeSwitches.FORCE_FIRST_RUN_FLOW_COMPLETE_FOR_TESTING);
|
||||||
|
+ return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunUtils.java
|
||||||
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunUtils.java
|
||||||
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunUtils.java
|
||||||
|
@@ -30,16 +30,12 @@ public class FirstRunUtils {
|
||||||
|
// - checkAnyUserHasSeenToS() may be true which needs to sync its state to the prefs.
|
||||||
|
boolean javaPrefValue = javaPrefs.getBoolean(CACHED_TOS_ACCEPTED_PREF, false);
|
||||||
|
boolean nativePrefValue = prefsBridge.isFirstRunEulaAccepted();
|
||||||
|
- boolean userHasSeenTos =
|
||||||
|
- ToSAckedReceiver.checkAnyUserHasSeenToS();
|
||||||
|
- boolean isFirstRunComplete = FirstRunStatus.getFirstRunFlowComplete();
|
||||||
|
- if (javaPrefValue || nativePrefValue || userHasSeenTos || isFirstRunComplete) {
|
||||||
|
- if (!javaPrefValue) {
|
||||||
|
- javaPrefs.edit().putBoolean(CACHED_TOS_ACCEPTED_PREF, true).apply();
|
||||||
|
- }
|
||||||
|
- if (!nativePrefValue) {
|
||||||
|
- prefsBridge.setEulaAccepted();
|
||||||
|
- }
|
||||||
|
+
|
||||||
|
+ if (!javaPrefValue) {
|
||||||
|
+ javaPrefs.edit().putBoolean(CACHED_TOS_ACCEPTED_PREF, true).apply();
|
||||||
|
+ }
|
||||||
|
+ if (!nativePrefValue) {
|
||||||
|
+ prefsBridge.setEulaAccepted();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java
|
||||||
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java
|
||||||
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java
|
||||||
|
@@ -73,20 +73,14 @@ public class ToSAndUMAFirstRunFragment extends Fragment implements FirstRunFragm
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
- if (ChromeVersionInfo.isOfficialBuild()) {
|
||||||
|
- int paddingStart = getResources().getDimensionPixelSize(
|
||||||
|
- R.dimen.fre_tos_checkbox_padding);
|
||||||
|
- ApiCompatibilityUtils.setPaddingRelative(mSendReportCheckBox,
|
||||||
|
- ApiCompatibilityUtils.getPaddingStart(mSendReportCheckBox) + paddingStart,
|
||||||
|
- mSendReportCheckBox.getPaddingTop(),
|
||||||
|
- ApiCompatibilityUtils.getPaddingEnd(mSendReportCheckBox),
|
||||||
|
- mSendReportCheckBox.getPaddingBottom());
|
||||||
|
-
|
||||||
|
- mSendReportCheckBox.setChecked(FirstRunActivity.DEFAULT_METRICS_AND_CRASH_REPORTING);
|
||||||
|
- } else {
|
||||||
|
- mSendReportCheckBox.setVisibility(View.GONE);
|
||||||
|
+ int paddingStart = getResources().getDimensionPixelSize(R.dimen.fre_tos_checkbox_padding);
|
||||||
|
+ if (paddingStart != 0) {
|
||||||
|
+ mSendReportCheckBox.setChecked(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ mSendReportCheckBox.setChecked(false);
|
||||||
|
+ mSendReportCheckBox.setVisibility(View.GONE);
|
||||||
|
+
|
||||||
|
mTosAndPrivacy.setMovementMethod(LinkMovementMethod.getInstance());
|
||||||
|
|
||||||
|
NoUnderlineClickableSpan clickableTermsSpan = new NoUnderlineClickableSpan() {
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Sun Nov 26 23:11:56 2017 +0100
|
||||||
|
|
||||||
|
Always disable Omaha update checks
|
||||||
|
|
||||||
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java
|
||||||
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java
|
||||||
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java
|
||||||
|
@@ -122,7 +122,7 @@ public class OmahaBase {
|
||||||
|
|
||||||
|
/** See {@link #sIsDisabled}. */
|
||||||
|
static boolean isDisabled() {
|
||||||
|
- return sIsDisabled;
|
||||||
|
+ return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
@@ -0,0 +1,714 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Thu Oct 12 11:06:18 2017 +0200
|
||||||
|
|
||||||
|
Add DuckDuckGo search engine, not enabled by default
|
||||||
|
|
||||||
|
diff --git a/components/search_engines/prepopulated_engines.json b/components/search_engines/prepopulated_engines.json
|
||||||
|
--- a/components/search_engines/prepopulated_engines.json
|
||||||
|
+++ b/components/search_engines/prepopulated_engines.json
|
||||||
|
@@ -32,12 +32,31 @@
|
||||||
|
|
||||||
|
// Increment this if you change the data in ways that mean users with
|
||||||
|
// existing data should get a new version.
|
||||||
|
- "kCurrentDataVersion": 100
|
||||||
|
+ "kCurrentDataVersion": 101
|
||||||
|
},
|
||||||
|
|
||||||
|
// The following engines are included in country lists and are added to the
|
||||||
|
// list of search engines on the first run depending on user's country.
|
||||||
|
"elements": {
|
||||||
|
+ "duckduckgo": {
|
||||||
|
+ "name": "DuckDuckGo",
|
||||||
|
+ "keyword": "duckduckgo.com",
|
||||||
|
+ "favicon_url": "https://duckduckgo.com/favicon.ico",
|
||||||
|
+ "search_url": "https://duckduckgo.com/?q={searchTerms}",
|
||||||
|
+ "suggest_url": "https://ac.duckduckgo.com/ac/?q={searchTerms}&type=list",
|
||||||
|
+ "type": "SEARCH_ENGINE_DUCKDUCKGO",
|
||||||
|
+ "id": 11
|
||||||
|
+ },
|
||||||
|
+
|
||||||
|
+ "duckduckgo_light": {
|
||||||
|
+ "name": "DuckDuckGo Light",
|
||||||
|
+ "keyword": "duckduckgo.com/lite",
|
||||||
|
+ "favicon_url": "https://duckduckgo.com/favicon.ico",
|
||||||
|
+ "search_url": "https://duckduckgo.com/lite/?q={searchTerms}",
|
||||||
|
+ "type": "SEARCH_ENGINE_DUCKDUCKGOLIGHT",
|
||||||
|
+ "id": 12
|
||||||
|
+ },
|
||||||
|
+
|
||||||
|
"aol": {
|
||||||
|
"name": "AOL",
|
||||||
|
"keyword": "aol.com",
|
||||||
|
diff --git a/components/search_engines/search_engine_type.h b/components/search_engines/search_engine_type.h
|
||||||
|
--- a/components/search_engines/search_engine_type.h
|
||||||
|
+++ b/components/search_engines/search_engine_type.h
|
||||||
|
@@ -63,6 +63,8 @@ enum SearchEngineType {
|
||||||
|
SEARCH_ENGINE_YANDEX,
|
||||||
|
SEARCH_ENGINE_ZOZNAM,
|
||||||
|
SEARCH_ENGINE_360,
|
||||||
|
+ SEARCH_ENGINE_DUCKDUCKGO,
|
||||||
|
+ SEARCH_ENGINE_DUCKDUCKGOLIGHT,
|
||||||
|
SEARCH_ENGINE_MAX // Bounding value needed for UMA histogram macro.
|
||||||
|
};
|
||||||
|
|
||||||
|
diff --git a/components/search_engines/template_url_prepopulate_data.cc b/components/search_engines/template_url_prepopulate_data.cc
|
||||||
|
--- a/components/search_engines/template_url_prepopulate_data.cc
|
||||||
|
+++ b/components/search_engines/template_url_prepopulate_data.cc
|
||||||
|
@@ -51,548 +51,548 @@ namespace {
|
||||||
|
|
||||||
|
// Default (for countries with no better engine set)
|
||||||
|
const PrepopulatedEngine* const engines_default[] = {
|
||||||
|
- &google, &bing, &yahoo,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// United Arab Emirates
|
||||||
|
const PrepopulatedEngine* const engines_AE[] = {
|
||||||
|
- &google, &yahoo_maktoob, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Albania
|
||||||
|
const PrepopulatedEngine* const engines_AL[] = {
|
||||||
|
- &google, &yahoo, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Argentina
|
||||||
|
const PrepopulatedEngine* const engines_AR[] = {
|
||||||
|
- &google, &bing, &yahoo_ar,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_ar,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Austria
|
||||||
|
const PrepopulatedEngine* const engines_AT[] = {
|
||||||
|
- &google, &bing, &yahoo_at,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_at,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Australia
|
||||||
|
const PrepopulatedEngine* const engines_AU[] = {
|
||||||
|
- &google, &bing, &yahoo_au,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_au,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Bosnia and Herzegovina
|
||||||
|
const PrepopulatedEngine* const engines_BA[] = {
|
||||||
|
- &google, &yahoo, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Belgium
|
||||||
|
const PrepopulatedEngine* const engines_BE[] = {
|
||||||
|
- &google, &bing, &yahoo, &yahoo_fr,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo, &yahoo_fr,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Bulgaria
|
||||||
|
const PrepopulatedEngine* const engines_BG[] = {
|
||||||
|
- &google, &bing, &ask,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &ask,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Bahrain
|
||||||
|
const PrepopulatedEngine* const engines_BH[] = {
|
||||||
|
- &google, &yahoo_maktoob, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Burundi
|
||||||
|
const PrepopulatedEngine* const engines_BI[] = {
|
||||||
|
- &google, &yahoo, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Brunei
|
||||||
|
const PrepopulatedEngine* const engines_BN[] = {
|
||||||
|
- &google, &yahoo_my, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_my, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Bolivia
|
||||||
|
const PrepopulatedEngine* const engines_BO[] = {
|
||||||
|
- &google, &bing, &yahoo,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Brazil
|
||||||
|
const PrepopulatedEngine* const engines_BR[] = {
|
||||||
|
- &google, &ask_br, &bing, &yahoo_br,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &ask_br, &bing, &yahoo_br,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Belarus
|
||||||
|
const PrepopulatedEngine* const engines_BY[] = {
|
||||||
|
- &google, &yandex_by, &mail_ru,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yandex_by, &mail_ru,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Belize
|
||||||
|
const PrepopulatedEngine* const engines_BZ[] = {
|
||||||
|
- &google, &yahoo, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Canada
|
||||||
|
const PrepopulatedEngine* const engines_CA[] = {
|
||||||
|
- &google, &bing, &ask, &yahoo_ca, &yahoo_qc,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &ask, &yahoo_ca, &yahoo_qc,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Switzerland
|
||||||
|
const PrepopulatedEngine* const engines_CH[] = {
|
||||||
|
- &google, &bing, &yahoo_ch,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_ch,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Chile
|
||||||
|
const PrepopulatedEngine* const engines_CL[] = {
|
||||||
|
- &google, &bing, &yahoo_cl,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_cl,
|
||||||
|
};
|
||||||
|
|
||||||
|
// China
|
||||||
|
const PrepopulatedEngine* const engines_CN[] = {
|
||||||
|
- &google, &baidu, &sogou, &so_360,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &baidu, &sogou, &so_360,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Colombia
|
||||||
|
const PrepopulatedEngine* const engines_CO[] = {
|
||||||
|
- &google, &bing, &yahoo_co,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_co,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Costa Rica
|
||||||
|
const PrepopulatedEngine* const engines_CR[] = {
|
||||||
|
- &google, &yahoo, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Czech Republic
|
||||||
|
const PrepopulatedEngine* const engines_CZ[] = {
|
||||||
|
- &google, &seznam, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &seznam, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Germany
|
||||||
|
const PrepopulatedEngine* const engines_DE[] = {
|
||||||
|
- &google, &bing, &yahoo_de,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_de,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Denmark
|
||||||
|
const PrepopulatedEngine* const engines_DK[] = {
|
||||||
|
- &google, &bing, &yahoo_dk,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_dk,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Dominican Republic
|
||||||
|
const PrepopulatedEngine* const engines_DO[] = {
|
||||||
|
- &google, &yahoo, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Algeria
|
||||||
|
const PrepopulatedEngine* const engines_DZ[] = {
|
||||||
|
- &google, &bing, &yahoo_maktoob,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Ecuador
|
||||||
|
const PrepopulatedEngine* const engines_EC[] = {
|
||||||
|
- &google, &bing, &yahoo,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Estonia
|
||||||
|
const PrepopulatedEngine* const engines_EE[] = {
|
||||||
|
- &google, &bing, &yahoo,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Egypt
|
||||||
|
const PrepopulatedEngine* const engines_EG[] = {
|
||||||
|
- &google, &yahoo_maktoob, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Spain
|
||||||
|
const PrepopulatedEngine* const engines_ES[] = {
|
||||||
|
- &google, &bing, &yahoo_es,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_es,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Faroe Islands
|
||||||
|
const PrepopulatedEngine* const engines_FO[] = {
|
||||||
|
- &google, &bing, &ask,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &ask,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Finland
|
||||||
|
const PrepopulatedEngine* const engines_FI[] = {
|
||||||
|
- &google, &bing, &yahoo_fi,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_fi,
|
||||||
|
};
|
||||||
|
|
||||||
|
// France
|
||||||
|
const PrepopulatedEngine* const engines_FR[] = {
|
||||||
|
- &google, &bing, &yahoo_fr,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_fr,
|
||||||
|
};
|
||||||
|
|
||||||
|
// United Kingdom
|
||||||
|
const PrepopulatedEngine* const engines_GB[] = {
|
||||||
|
- &google, &bing, &yahoo_uk, &ask_uk,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_uk, &ask_uk,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Greece
|
||||||
|
const PrepopulatedEngine* const engines_GR[] = {
|
||||||
|
- &google, &bing, &yahoo_gr,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_gr,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Guatemala
|
||||||
|
const PrepopulatedEngine* const engines_GT[] = {
|
||||||
|
- &google, &yahoo, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Hong Kong
|
||||||
|
const PrepopulatedEngine* const engines_HK[] = {
|
||||||
|
- &google, &yahoo_hk, &baidu, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_hk, &baidu, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Honduras
|
||||||
|
const PrepopulatedEngine* const engines_HN[] = {
|
||||||
|
- &google, &yahoo, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Croatia
|
||||||
|
const PrepopulatedEngine* const engines_HR[] = {
|
||||||
|
- &google, &bing, &yahoo,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Hungary
|
||||||
|
const PrepopulatedEngine* const engines_HU[] = {
|
||||||
|
- &google, &bing, &yahoo,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Indonesia
|
||||||
|
const PrepopulatedEngine* const engines_ID[] = {
|
||||||
|
- &google, &yahoo_id, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_id, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Ireland
|
||||||
|
const PrepopulatedEngine* const engines_IE[] = {
|
||||||
|
- &google, &bing, &yahoo_uk,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_uk,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Israel
|
||||||
|
const PrepopulatedEngine* const engines_IL[] = {
|
||||||
|
- &google, &yahoo, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// India
|
||||||
|
const PrepopulatedEngine* const engines_IN[] = {
|
||||||
|
- &google, &bing, &yahoo_in,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_in,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Iraq
|
||||||
|
const PrepopulatedEngine* const engines_IQ[] = {
|
||||||
|
- &google, &yahoo_maktoob, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Iran
|
||||||
|
const PrepopulatedEngine* const engines_IR[] = {
|
||||||
|
- &google, &yahoo, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Iceland
|
||||||
|
const PrepopulatedEngine* const engines_IS[] = {
|
||||||
|
- &google, &bing, &yahoo,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Italy
|
||||||
|
const PrepopulatedEngine* const engines_IT[] = {
|
||||||
|
- &google, &virgilio, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &virgilio, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Jamaica
|
||||||
|
const PrepopulatedEngine* const engines_JM[] = {
|
||||||
|
- &google, &yahoo, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Jordan
|
||||||
|
const PrepopulatedEngine* const engines_JO[] = {
|
||||||
|
- &google, &yahoo_maktoob, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Japan
|
||||||
|
const PrepopulatedEngine* const engines_JP[] = {
|
||||||
|
- &google, &yahoo_jp, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_jp, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Kenya
|
||||||
|
const PrepopulatedEngine* const engines_KE[] = {
|
||||||
|
- &google, &yahoo, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Kuwait
|
||||||
|
const PrepopulatedEngine* const engines_KW[] = {
|
||||||
|
- &google, &yahoo_maktoob, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// South Korea
|
||||||
|
const PrepopulatedEngine* const engines_KR[] = {
|
||||||
|
- &google, &naver, &daum,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &naver, &daum,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Kazakhstan
|
||||||
|
const PrepopulatedEngine* const engines_KZ[] = {
|
||||||
|
- &google, &mail_ru, &yandex_kz,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &mail_ru, &yandex_kz,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Lebanon
|
||||||
|
const PrepopulatedEngine* const engines_LB[] = {
|
||||||
|
- &google, &yahoo_maktoob, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Liechtenstein
|
||||||
|
const PrepopulatedEngine* const engines_LI[] = {
|
||||||
|
- &google, &bing, &yahoo_de,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_de,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Lithuania
|
||||||
|
const PrepopulatedEngine* const engines_LT[] = {
|
||||||
|
- &google, &bing, &yandex_ru,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yandex_ru,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Luxembourg
|
||||||
|
const PrepopulatedEngine* const engines_LU[] = {
|
||||||
|
- &google, &bing, &yahoo_fr,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_fr,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Latvia
|
||||||
|
const PrepopulatedEngine* const engines_LV[] = {
|
||||||
|
- &google, &yandex_ru, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yandex_ru, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Libya
|
||||||
|
const PrepopulatedEngine* const engines_LY[] = {
|
||||||
|
- &google, &yahoo_maktoob, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Morocco
|
||||||
|
const PrepopulatedEngine* const engines_MA[] = {
|
||||||
|
- &google, &bing, &yahoo_maktoob,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Monaco
|
||||||
|
const PrepopulatedEngine* const engines_MC[] = {
|
||||||
|
- &google, &yahoo_fr, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_fr, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Moldova
|
||||||
|
const PrepopulatedEngine* const engines_MD[] = {
|
||||||
|
- &google, &bing, &yahoo,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Montenegro
|
||||||
|
const PrepopulatedEngine* const engines_ME[] = {
|
||||||
|
- &google, &bing, &yahoo,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Macedonia
|
||||||
|
const PrepopulatedEngine* const engines_MK[] = {
|
||||||
|
- &google, &yahoo, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Mexico
|
||||||
|
const PrepopulatedEngine* const engines_MX[] = {
|
||||||
|
- &google, &bing, &yahoo_mx,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_mx,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Malaysia
|
||||||
|
const PrepopulatedEngine* const engines_MY[] = {
|
||||||
|
- &google, &yahoo_my, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_my, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Nicaragua
|
||||||
|
const PrepopulatedEngine* const engines_NI[] = {
|
||||||
|
- &google, &yahoo, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Netherlands
|
||||||
|
const PrepopulatedEngine* const engines_NL[] = {
|
||||||
|
- &google, &yahoo_nl, &vinden,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_nl, &vinden,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Norway
|
||||||
|
const PrepopulatedEngine* const engines_NO[] = {
|
||||||
|
- &google, &bing, &kvasir,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &kvasir,
|
||||||
|
};
|
||||||
|
|
||||||
|
// New Zealand
|
||||||
|
const PrepopulatedEngine* const engines_NZ[] = {
|
||||||
|
- &google, &bing, &yahoo_nz,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_nz,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Oman
|
||||||
|
const PrepopulatedEngine* const engines_OM[] = {
|
||||||
|
- &google, &bing, &yahoo_maktoob,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Panama
|
||||||
|
const PrepopulatedEngine* const engines_PA[] = {
|
||||||
|
- &google, &yahoo, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Peru
|
||||||
|
const PrepopulatedEngine* const engines_PE[] = {
|
||||||
|
- &google, &bing, &yahoo_pe,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_pe,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Philippines
|
||||||
|
const PrepopulatedEngine* const engines_PH[] = {
|
||||||
|
- &google, &yahoo_ph, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_ph, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Pakistan
|
||||||
|
const PrepopulatedEngine* const engines_PK[] = {
|
||||||
|
- &google, &yahoo, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Puerto Rico
|
||||||
|
const PrepopulatedEngine* const engines_PR[] = {
|
||||||
|
- &google, &yahoo, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Poland
|
||||||
|
const PrepopulatedEngine* const engines_PL[] = {
|
||||||
|
- &google, &onet, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &onet, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Portugal
|
||||||
|
const PrepopulatedEngine* const engines_PT[] = {
|
||||||
|
- &google, &bing, &yahoo,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Paraguay
|
||||||
|
const PrepopulatedEngine* const engines_PY[] = {
|
||||||
|
- &google, &bing, &yahoo,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Qatar
|
||||||
|
const PrepopulatedEngine* const engines_QA[] = {
|
||||||
|
- &google, &yahoo_maktoob, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Romania
|
||||||
|
const PrepopulatedEngine* const engines_RO[] = {
|
||||||
|
- &google, &yahoo_ro, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_ro, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Serbia
|
||||||
|
const PrepopulatedEngine* const engines_RS[] = {
|
||||||
|
- &google, &bing, &yahoo,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Russia
|
||||||
|
const PrepopulatedEngine* const engines_RU[] = {
|
||||||
|
- &google, &yandex_ru, &mail_ru,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yandex_ru, &mail_ru,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Rwanda
|
||||||
|
const PrepopulatedEngine* const engines_RW[] = {
|
||||||
|
- &google, &bing, &yahoo,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Saudi Arabia
|
||||||
|
const PrepopulatedEngine* const engines_SA[] = {
|
||||||
|
- &google, &yahoo_maktoob, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Sweden
|
||||||
|
const PrepopulatedEngine* const engines_SE[] = {
|
||||||
|
- &google, &bing, &yahoo_se,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_se,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Singapore
|
||||||
|
const PrepopulatedEngine* const engines_SG[] = {
|
||||||
|
- &google, &yahoo_sg, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_sg, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Slovenia
|
||||||
|
const PrepopulatedEngine* const engines_SI[] = {
|
||||||
|
- &google, &najdi, &ask,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &najdi, &ask,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Slovakia
|
||||||
|
const PrepopulatedEngine* const engines_SK[] = {
|
||||||
|
- &google, &bing, &yahoo,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// El Salvador
|
||||||
|
const PrepopulatedEngine* const engines_SV[] = {
|
||||||
|
- &google, &yahoo, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Syria
|
||||||
|
const PrepopulatedEngine* const engines_SY[] = {
|
||||||
|
- &google, &bing, &yahoo_maktoob,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Thailand
|
||||||
|
const PrepopulatedEngine* const engines_TH[] = {
|
||||||
|
- &google, &yahoo_th, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_th, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Tunisia
|
||||||
|
const PrepopulatedEngine* const engines_TN[] = {
|
||||||
|
- &google, &bing, &yahoo_maktoob,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Turkey
|
||||||
|
const PrepopulatedEngine* const engines_TR[] = {
|
||||||
|
- &google, &bing, &yahoo_tr, &yandex_tr,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_tr, &yandex_tr,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Trinidad and Tobago
|
||||||
|
const PrepopulatedEngine* const engines_TT[] = {
|
||||||
|
- &google, &bing, &yahoo,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Taiwan
|
||||||
|
const PrepopulatedEngine* const engines_TW[] = {
|
||||||
|
- &google, &yahoo_tw, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_tw, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Tanzania
|
||||||
|
const PrepopulatedEngine* const engines_TZ[] = {
|
||||||
|
- &google, &yahoo, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Ukraine
|
||||||
|
const PrepopulatedEngine* const engines_UA[] = {
|
||||||
|
- &google, &yandex_ua, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yandex_ua, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// United States
|
||||||
|
const PrepopulatedEngine* const engines_US[] = {
|
||||||
|
- &google, &bing, &yahoo, &aol, &ask,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo, &aol, &ask,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Uruguay
|
||||||
|
const PrepopulatedEngine* const engines_UY[] = {
|
||||||
|
- &google, &bing, &yahoo,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Venezuela
|
||||||
|
const PrepopulatedEngine* const engines_VE[] = {
|
||||||
|
- &google, &bing, &yahoo_ve,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_ve,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Vietnam
|
||||||
|
const PrepopulatedEngine* const engines_VN[] = {
|
||||||
|
- &google, &yahoo_vn, &bing,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_vn, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Yemen
|
||||||
|
const PrepopulatedEngine* const engines_YE[] = {
|
||||||
|
- &google, &bing, &yahoo_maktoob,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||||
|
};
|
||||||
|
|
||||||
|
// South Africa
|
||||||
|
const PrepopulatedEngine* const engines_ZA[] = {
|
||||||
|
- &google, &bing, &yahoo,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Zimbabwe
|
||||||
|
const PrepopulatedEngine* const engines_ZW[] = {
|
||||||
|
- &google, &bing, &yahoo, &ask,
|
||||||
|
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo, &ask,
|
||||||
|
};
|
||||||
|
|
||||||
|
// A list of all the engines that we know about.
|
||||||
|
const PrepopulatedEngine* const kAllEngines[] = {
|
||||||
|
// Prepopulated engines:
|
||||||
|
- &aol, &ask, &ask_br, &ask_uk, &baidu, &bing, &daum, &google, &kvasir,
|
||||||
|
+ &aol, &ask, &ask_br, &ask_uk, &baidu, &bing, &daum, &google, &duckduckgo, &duckduckgo_light, &kvasir,
|
||||||
|
&mail_ru, &najdi, &naver, &onet, &seznam, &sogou, &vinden, &virgilio,
|
||||||
|
&yahoo, &yahoo_ar, &yahoo_at, &yahoo_au, &yahoo_br, &yahoo_ca, &yahoo_ch,
|
||||||
|
&yahoo_cl, &yahoo_co, &yahoo_de, &yahoo_dk, &yahoo_es, &yahoo_fi, &yahoo_fr,
|
||||||
@@ -0,0 +1,706 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Wed Oct 18 21:24:05 2017 +0200
|
||||||
|
|
||||||
|
Add StartPage search engine
|
||||||
|
|
||||||
|
diff --git a/components/search_engines/prepopulated_engines.json b/components/search_engines/prepopulated_engines.json
|
||||||
|
--- a/components/search_engines/prepopulated_engines.json
|
||||||
|
+++ b/components/search_engines/prepopulated_engines.json
|
||||||
|
@@ -32,7 +32,7 @@
|
||||||
|
|
||||||
|
// Increment this if you change the data in ways that mean users with
|
||||||
|
// existing data should get a new version.
|
||||||
|
- "kCurrentDataVersion": 101
|
||||||
|
+ "kCurrentDataVersion": 102
|
||||||
|
},
|
||||||
|
|
||||||
|
// The following engines are included in country lists and are added to the
|
||||||
|
@@ -232,6 +232,16 @@
|
||||||
|
"id": 56
|
||||||
|
},
|
||||||
|
|
||||||
|
+ "startpage": {
|
||||||
|
+ "name": "StartPage",
|
||||||
|
+ "keyword": "startpage.com",
|
||||||
|
+ "favicon_url": "https://www.startpage.com/graphics/favicon/sp-favicon-16x16.png",
|
||||||
|
+ "search_url": "https://www.startpage.com/do/dsearch?query={searchTerms}&cat=web&pl=opensearch",
|
||||||
|
+ "suggest_url": "https://www.startpage.com/cgi-bin/csuggest?query={searchTerms}&limit=10&format=json",
|
||||||
|
+ "type": "SEARCH_ENGINE_STARTPAGE",
|
||||||
|
+ "id": 33
|
||||||
|
+ },
|
||||||
|
+
|
||||||
|
"vinden": {
|
||||||
|
"name": "Vinden.nl",
|
||||||
|
"keyword": "vinden.nl",
|
||||||
|
diff --git a/components/search_engines/search_engine_type.h b/components/search_engines/search_engine_type.h
|
||||||
|
--- a/components/search_engines/search_engine_type.h
|
||||||
|
+++ b/components/search_engines/search_engine_type.h
|
||||||
|
@@ -65,6 +65,7 @@ enum SearchEngineType {
|
||||||
|
SEARCH_ENGINE_360,
|
||||||
|
SEARCH_ENGINE_DUCKDUCKGO,
|
||||||
|
SEARCH_ENGINE_DUCKDUCKGOLIGHT,
|
||||||
|
+ SEARCH_ENGINE_STARTPAGE,
|
||||||
|
SEARCH_ENGINE_MAX // Bounding value needed for UMA histogram macro.
|
||||||
|
};
|
||||||
|
|
||||||
|
diff --git a/components/search_engines/template_url_prepopulate_data.cc b/components/search_engines/template_url_prepopulate_data.cc
|
||||||
|
--- a/components/search_engines/template_url_prepopulate_data.cc
|
||||||
|
+++ b/components/search_engines/template_url_prepopulate_data.cc
|
||||||
|
@@ -51,548 +51,548 @@ namespace {
|
||||||
|
|
||||||
|
// Default (for countries with no better engine set)
|
||||||
|
const PrepopulatedEngine* const engines_default[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// United Arab Emirates
|
||||||
|
const PrepopulatedEngine* const engines_AE[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Albania
|
||||||
|
const PrepopulatedEngine* const engines_AL[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Argentina
|
||||||
|
const PrepopulatedEngine* const engines_AR[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_ar,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_ar,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Austria
|
||||||
|
const PrepopulatedEngine* const engines_AT[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_at,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_at,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Australia
|
||||||
|
const PrepopulatedEngine* const engines_AU[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_au,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_au,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Bosnia and Herzegovina
|
||||||
|
const PrepopulatedEngine* const engines_BA[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Belgium
|
||||||
|
const PrepopulatedEngine* const engines_BE[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo, &yahoo_fr,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo, &yahoo_fr,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Bulgaria
|
||||||
|
const PrepopulatedEngine* const engines_BG[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &ask,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &ask,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Bahrain
|
||||||
|
const PrepopulatedEngine* const engines_BH[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Burundi
|
||||||
|
const PrepopulatedEngine* const engines_BI[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Brunei
|
||||||
|
const PrepopulatedEngine* const engines_BN[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo_my, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_my, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Bolivia
|
||||||
|
const PrepopulatedEngine* const engines_BO[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Brazil
|
||||||
|
const PrepopulatedEngine* const engines_BR[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &ask_br, &bing, &yahoo_br,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &ask_br, &bing, &yahoo_br,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Belarus
|
||||||
|
const PrepopulatedEngine* const engines_BY[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yandex_by, &mail_ru,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yandex_by, &mail_ru,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Belize
|
||||||
|
const PrepopulatedEngine* const engines_BZ[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Canada
|
||||||
|
const PrepopulatedEngine* const engines_CA[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &ask, &yahoo_ca, &yahoo_qc,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &ask, &yahoo_ca, &yahoo_qc,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Switzerland
|
||||||
|
const PrepopulatedEngine* const engines_CH[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_ch,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_ch,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Chile
|
||||||
|
const PrepopulatedEngine* const engines_CL[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_cl,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_cl,
|
||||||
|
};
|
||||||
|
|
||||||
|
// China
|
||||||
|
const PrepopulatedEngine* const engines_CN[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &baidu, &sogou, &so_360,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &baidu, &sogou, &so_360,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Colombia
|
||||||
|
const PrepopulatedEngine* const engines_CO[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_co,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_co,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Costa Rica
|
||||||
|
const PrepopulatedEngine* const engines_CR[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Czech Republic
|
||||||
|
const PrepopulatedEngine* const engines_CZ[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &seznam, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &seznam, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Germany
|
||||||
|
const PrepopulatedEngine* const engines_DE[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_de,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_de,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Denmark
|
||||||
|
const PrepopulatedEngine* const engines_DK[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_dk,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_dk,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Dominican Republic
|
||||||
|
const PrepopulatedEngine* const engines_DO[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Algeria
|
||||||
|
const PrepopulatedEngine* const engines_DZ[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Ecuador
|
||||||
|
const PrepopulatedEngine* const engines_EC[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Estonia
|
||||||
|
const PrepopulatedEngine* const engines_EE[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Egypt
|
||||||
|
const PrepopulatedEngine* const engines_EG[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Spain
|
||||||
|
const PrepopulatedEngine* const engines_ES[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_es,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_es,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Faroe Islands
|
||||||
|
const PrepopulatedEngine* const engines_FO[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &ask,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &ask,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Finland
|
||||||
|
const PrepopulatedEngine* const engines_FI[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_fi,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_fi,
|
||||||
|
};
|
||||||
|
|
||||||
|
// France
|
||||||
|
const PrepopulatedEngine* const engines_FR[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_fr,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_fr,
|
||||||
|
};
|
||||||
|
|
||||||
|
// United Kingdom
|
||||||
|
const PrepopulatedEngine* const engines_GB[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_uk, &ask_uk,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_uk, &ask_uk,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Greece
|
||||||
|
const PrepopulatedEngine* const engines_GR[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_gr,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_gr,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Guatemala
|
||||||
|
const PrepopulatedEngine* const engines_GT[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Hong Kong
|
||||||
|
const PrepopulatedEngine* const engines_HK[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo_hk, &baidu, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_hk, &baidu, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Honduras
|
||||||
|
const PrepopulatedEngine* const engines_HN[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Croatia
|
||||||
|
const PrepopulatedEngine* const engines_HR[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Hungary
|
||||||
|
const PrepopulatedEngine* const engines_HU[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Indonesia
|
||||||
|
const PrepopulatedEngine* const engines_ID[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo_id, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_id, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Ireland
|
||||||
|
const PrepopulatedEngine* const engines_IE[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_uk,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_uk,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Israel
|
||||||
|
const PrepopulatedEngine* const engines_IL[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// India
|
||||||
|
const PrepopulatedEngine* const engines_IN[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_in,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_in,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Iraq
|
||||||
|
const PrepopulatedEngine* const engines_IQ[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Iran
|
||||||
|
const PrepopulatedEngine* const engines_IR[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Iceland
|
||||||
|
const PrepopulatedEngine* const engines_IS[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Italy
|
||||||
|
const PrepopulatedEngine* const engines_IT[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &virgilio, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &virgilio, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Jamaica
|
||||||
|
const PrepopulatedEngine* const engines_JM[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Jordan
|
||||||
|
const PrepopulatedEngine* const engines_JO[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Japan
|
||||||
|
const PrepopulatedEngine* const engines_JP[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo_jp, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_jp, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Kenya
|
||||||
|
const PrepopulatedEngine* const engines_KE[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Kuwait
|
||||||
|
const PrepopulatedEngine* const engines_KW[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// South Korea
|
||||||
|
const PrepopulatedEngine* const engines_KR[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &naver, &daum,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &naver, &daum,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Kazakhstan
|
||||||
|
const PrepopulatedEngine* const engines_KZ[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &mail_ru, &yandex_kz,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &mail_ru, &yandex_kz,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Lebanon
|
||||||
|
const PrepopulatedEngine* const engines_LB[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Liechtenstein
|
||||||
|
const PrepopulatedEngine* const engines_LI[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_de,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_de,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Lithuania
|
||||||
|
const PrepopulatedEngine* const engines_LT[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yandex_ru,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yandex_ru,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Luxembourg
|
||||||
|
const PrepopulatedEngine* const engines_LU[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_fr,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_fr,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Latvia
|
||||||
|
const PrepopulatedEngine* const engines_LV[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yandex_ru, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yandex_ru, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Libya
|
||||||
|
const PrepopulatedEngine* const engines_LY[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Morocco
|
||||||
|
const PrepopulatedEngine* const engines_MA[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Monaco
|
||||||
|
const PrepopulatedEngine* const engines_MC[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo_fr, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_fr, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Moldova
|
||||||
|
const PrepopulatedEngine* const engines_MD[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Montenegro
|
||||||
|
const PrepopulatedEngine* const engines_ME[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Macedonia
|
||||||
|
const PrepopulatedEngine* const engines_MK[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Mexico
|
||||||
|
const PrepopulatedEngine* const engines_MX[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_mx,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_mx,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Malaysia
|
||||||
|
const PrepopulatedEngine* const engines_MY[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo_my, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_my, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Nicaragua
|
||||||
|
const PrepopulatedEngine* const engines_NI[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Netherlands
|
||||||
|
const PrepopulatedEngine* const engines_NL[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo_nl, &vinden,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_nl, &vinden,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Norway
|
||||||
|
const PrepopulatedEngine* const engines_NO[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &kvasir,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &kvasir,
|
||||||
|
};
|
||||||
|
|
||||||
|
// New Zealand
|
||||||
|
const PrepopulatedEngine* const engines_NZ[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_nz,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_nz,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Oman
|
||||||
|
const PrepopulatedEngine* const engines_OM[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Panama
|
||||||
|
const PrepopulatedEngine* const engines_PA[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Peru
|
||||||
|
const PrepopulatedEngine* const engines_PE[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_pe,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_pe,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Philippines
|
||||||
|
const PrepopulatedEngine* const engines_PH[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo_ph, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_ph, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Pakistan
|
||||||
|
const PrepopulatedEngine* const engines_PK[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Puerto Rico
|
||||||
|
const PrepopulatedEngine* const engines_PR[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Poland
|
||||||
|
const PrepopulatedEngine* const engines_PL[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &onet, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &onet, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Portugal
|
||||||
|
const PrepopulatedEngine* const engines_PT[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Paraguay
|
||||||
|
const PrepopulatedEngine* const engines_PY[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Qatar
|
||||||
|
const PrepopulatedEngine* const engines_QA[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Romania
|
||||||
|
const PrepopulatedEngine* const engines_RO[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo_ro, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_ro, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Serbia
|
||||||
|
const PrepopulatedEngine* const engines_RS[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Russia
|
||||||
|
const PrepopulatedEngine* const engines_RU[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yandex_ru, &mail_ru,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yandex_ru, &mail_ru,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Rwanda
|
||||||
|
const PrepopulatedEngine* const engines_RW[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Saudi Arabia
|
||||||
|
const PrepopulatedEngine* const engines_SA[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Sweden
|
||||||
|
const PrepopulatedEngine* const engines_SE[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_se,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_se,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Singapore
|
||||||
|
const PrepopulatedEngine* const engines_SG[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo_sg, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_sg, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Slovenia
|
||||||
|
const PrepopulatedEngine* const engines_SI[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &najdi, &ask,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &najdi, &ask,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Slovakia
|
||||||
|
const PrepopulatedEngine* const engines_SK[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// El Salvador
|
||||||
|
const PrepopulatedEngine* const engines_SV[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Syria
|
||||||
|
const PrepopulatedEngine* const engines_SY[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Thailand
|
||||||
|
const PrepopulatedEngine* const engines_TH[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo_th, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_th, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Tunisia
|
||||||
|
const PrepopulatedEngine* const engines_TN[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Turkey
|
||||||
|
const PrepopulatedEngine* const engines_TR[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_tr, &yandex_tr,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_tr, &yandex_tr,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Trinidad and Tobago
|
||||||
|
const PrepopulatedEngine* const engines_TT[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Taiwan
|
||||||
|
const PrepopulatedEngine* const engines_TW[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo_tw, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_tw, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Tanzania
|
||||||
|
const PrepopulatedEngine* const engines_TZ[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Ukraine
|
||||||
|
const PrepopulatedEngine* const engines_UA[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yandex_ua, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yandex_ua, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// United States
|
||||||
|
const PrepopulatedEngine* const engines_US[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo, &aol, &ask,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo, &aol, &ask,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Uruguay
|
||||||
|
const PrepopulatedEngine* const engines_UY[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Venezuela
|
||||||
|
const PrepopulatedEngine* const engines_VE[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_ve,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_ve,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Vietnam
|
||||||
|
const PrepopulatedEngine* const engines_VN[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &yahoo_vn, &bing,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_vn, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Yemen
|
||||||
|
const PrepopulatedEngine* const engines_YE[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||||
|
};
|
||||||
|
|
||||||
|
// South Africa
|
||||||
|
const PrepopulatedEngine* const engines_ZA[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Zimbabwe
|
||||||
|
const PrepopulatedEngine* const engines_ZW[] = {
|
||||||
|
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo, &ask,
|
||||||
|
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo, &ask,
|
||||||
|
};
|
||||||
|
|
||||||
|
// A list of all the engines that we know about.
|
||||||
|
const PrepopulatedEngine* const kAllEngines[] = {
|
||||||
|
// Prepopulated engines:
|
||||||
|
- &aol, &ask, &ask_br, &ask_uk, &baidu, &bing, &daum, &google, &duckduckgo, &duckduckgo_light, &kvasir,
|
||||||
|
+ &aol, &ask, &ask_br, &ask_uk, &baidu, &bing, &daum, &google, &startpage, &duckduckgo, &duckduckgo_light, &kvasir,
|
||||||
|
&mail_ru, &najdi, &naver, &onet, &seznam, &sogou, &vinden, &virgilio,
|
||||||
|
&yahoo, &yahoo_ar, &yahoo_at, &yahoo_au, &yahoo_br, &yahoo_ca, &yahoo_ch,
|
||||||
|
&yahoo_cl, &yahoo_co, &yahoo_de, &yahoo_dk, &yahoo_es, &yahoo_fi, &yahoo_fr,
|
||||||
@@ -0,0 +1,717 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Mon Dec 11 22:42:11 2017 +0100
|
||||||
|
|
||||||
|
Added Google English-only engine, no RLZ and field experiments
|
||||||
|
|
||||||
|
diff --git a/components/search_engines/prepopulated_engines.json b/components/search_engines/prepopulated_engines.json
|
||||||
|
--- a/components/search_engines/prepopulated_engines.json
|
||||||
|
+++ b/components/search_engines/prepopulated_engines.json
|
||||||
|
@@ -32,7 +32,7 @@
|
||||||
|
|
||||||
|
// Increment this if you change the data in ways that mean users with
|
||||||
|
// existing data should get a new version.
|
||||||
|
- "kCurrentDataVersion": 102
|
||||||
|
+ "kCurrentDataVersion": 103
|
||||||
|
},
|
||||||
|
|
||||||
|
// The following engines are included in country lists and are added to the
|
||||||
|
@@ -154,6 +154,27 @@
|
||||||
|
"id": 1
|
||||||
|
},
|
||||||
|
|
||||||
|
+ "googleen": {
|
||||||
|
+ "name": "GoogleEN",
|
||||||
|
+ "keyword": "google.co.uk",
|
||||||
|
+ "favicon_url": "https://www.google.com/favicon.ico",
|
||||||
|
+ "search_url": "{google:baseURL}search?q={searchTerms}&{google:originalQueryForSuggestion}{google:iOSSearchLanguage}{google:searchClient}{google:contextualSearchVersion}ie={inputEncoding}&hl=en",
|
||||||
|
+ "suggest_url": "{google:baseSuggestURL}search?client={google:suggestClient}&gs_ri={google:suggestRid}&xssi=t&q={searchTerms}&{google:inputType}{google:pageClassification}{google:searchVersion}{google:prefetchQuery}sugkey={google:suggestAPIKeyParameter}&hl=en",
|
||||||
|
+ "image_url": "{google:baseURL}searchbyimage/upload?hl=en",
|
||||||
|
+ "new_tab_url": "{google:baseURL}_/chrome/newtab?hl=en&ie={inputEncoding}",
|
||||||
|
+ "contextual_search_url": "{google:baseURL}_/contextualsearch?{google:contextualSearchVersion}{google:contextualSearchContextData}&hl=en",
|
||||||
|
+ "image_url_post_params": "encoded_image={google:imageThumbnail},image_url={google:imageURL},sbisrc={google:imageSearchSource},original_width={google:imageOriginalWidth},original_height={google:imageOriginalHeight}",
|
||||||
|
+ "alternate_urls": [
|
||||||
|
+ "{google:baseURL}?hl=en#q={searchTerms}",
|
||||||
|
+ "{google:baseURL}search?hl=en#q={searchTerms}",
|
||||||
|
+ "{google:baseURL}webhp?hl=en#q={searchTerms}",
|
||||||
|
+ "{google:baseURL}s?hl=en#q={searchTerms}",
|
||||||
|
+ "{google:baseURL}s?hl=en&q={searchTerms}"
|
||||||
|
+ ],
|
||||||
|
+ "type": "SEARCH_ENGINE_GOOGLE_EN",
|
||||||
|
+ "id": 13
|
||||||
|
+ },
|
||||||
|
+
|
||||||
|
"kvasir": {
|
||||||
|
"name": "Kvasir",
|
||||||
|
"keyword": "kvasir.no",
|
||||||
|
diff --git a/components/search_engines/search_engine_type.h b/components/search_engines/search_engine_type.h
|
||||||
|
--- a/components/search_engines/search_engine_type.h
|
||||||
|
+++ b/components/search_engines/search_engine_type.h
|
||||||
|
@@ -66,6 +66,7 @@ enum SearchEngineType {
|
||||||
|
SEARCH_ENGINE_DUCKDUCKGO,
|
||||||
|
SEARCH_ENGINE_DUCKDUCKGOLIGHT,
|
||||||
|
SEARCH_ENGINE_STARTPAGE,
|
||||||
|
+ SEARCH_ENGINE_GOOGLE_EN,
|
||||||
|
SEARCH_ENGINE_MAX // Bounding value needed for UMA histogram macro.
|
||||||
|
};
|
||||||
|
|
||||||
|
diff --git a/components/search_engines/template_url_prepopulate_data.cc b/components/search_engines/template_url_prepopulate_data.cc
|
||||||
|
--- a/components/search_engines/template_url_prepopulate_data.cc
|
||||||
|
+++ b/components/search_engines/template_url_prepopulate_data.cc
|
||||||
|
@@ -51,548 +51,548 @@ namespace {
|
||||||
|
|
||||||
|
// Default (for countries with no better engine set)
|
||||||
|
const PrepopulatedEngine* const engines_default[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// United Arab Emirates
|
||||||
|
const PrepopulatedEngine* const engines_AE[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Albania
|
||||||
|
const PrepopulatedEngine* const engines_AL[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Argentina
|
||||||
|
const PrepopulatedEngine* const engines_AR[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_ar,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_ar,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Austria
|
||||||
|
const PrepopulatedEngine* const engines_AT[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_at,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_at,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Australia
|
||||||
|
const PrepopulatedEngine* const engines_AU[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_au,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_au,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Bosnia and Herzegovina
|
||||||
|
const PrepopulatedEngine* const engines_BA[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Belgium
|
||||||
|
const PrepopulatedEngine* const engines_BE[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo, &yahoo_fr,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo, &yahoo_fr,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Bulgaria
|
||||||
|
const PrepopulatedEngine* const engines_BG[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &ask,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &ask,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Bahrain
|
||||||
|
const PrepopulatedEngine* const engines_BH[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Burundi
|
||||||
|
const PrepopulatedEngine* const engines_BI[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Brunei
|
||||||
|
const PrepopulatedEngine* const engines_BN[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_my, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_my, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Bolivia
|
||||||
|
const PrepopulatedEngine* const engines_BO[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Brazil
|
||||||
|
const PrepopulatedEngine* const engines_BR[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &ask_br, &bing, &yahoo_br,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &ask_br, &bing, &yahoo_br,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Belarus
|
||||||
|
const PrepopulatedEngine* const engines_BY[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yandex_by, &mail_ru,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yandex_by, &mail_ru,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Belize
|
||||||
|
const PrepopulatedEngine* const engines_BZ[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Canada
|
||||||
|
const PrepopulatedEngine* const engines_CA[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &ask, &yahoo_ca, &yahoo_qc,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &ask, &yahoo_ca, &yahoo_qc,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Switzerland
|
||||||
|
const PrepopulatedEngine* const engines_CH[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_ch,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_ch,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Chile
|
||||||
|
const PrepopulatedEngine* const engines_CL[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_cl,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_cl,
|
||||||
|
};
|
||||||
|
|
||||||
|
// China
|
||||||
|
const PrepopulatedEngine* const engines_CN[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &baidu, &sogou, &so_360,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &baidu, &sogou, &so_360,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Colombia
|
||||||
|
const PrepopulatedEngine* const engines_CO[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_co,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_co,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Costa Rica
|
||||||
|
const PrepopulatedEngine* const engines_CR[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Czech Republic
|
||||||
|
const PrepopulatedEngine* const engines_CZ[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &seznam, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &seznam, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Germany
|
||||||
|
const PrepopulatedEngine* const engines_DE[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_de,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_de,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Denmark
|
||||||
|
const PrepopulatedEngine* const engines_DK[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_dk,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_dk,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Dominican Republic
|
||||||
|
const PrepopulatedEngine* const engines_DO[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Algeria
|
||||||
|
const PrepopulatedEngine* const engines_DZ[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Ecuador
|
||||||
|
const PrepopulatedEngine* const engines_EC[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Estonia
|
||||||
|
const PrepopulatedEngine* const engines_EE[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Egypt
|
||||||
|
const PrepopulatedEngine* const engines_EG[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Spain
|
||||||
|
const PrepopulatedEngine* const engines_ES[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_es,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_es,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Faroe Islands
|
||||||
|
const PrepopulatedEngine* const engines_FO[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &ask,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &ask,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Finland
|
||||||
|
const PrepopulatedEngine* const engines_FI[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_fi,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_fi,
|
||||||
|
};
|
||||||
|
|
||||||
|
// France
|
||||||
|
const PrepopulatedEngine* const engines_FR[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_fr,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_fr,
|
||||||
|
};
|
||||||
|
|
||||||
|
// United Kingdom
|
||||||
|
const PrepopulatedEngine* const engines_GB[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_uk, &ask_uk,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_uk, &ask_uk,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Greece
|
||||||
|
const PrepopulatedEngine* const engines_GR[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_gr,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_gr,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Guatemala
|
||||||
|
const PrepopulatedEngine* const engines_GT[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Hong Kong
|
||||||
|
const PrepopulatedEngine* const engines_HK[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_hk, &baidu, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_hk, &baidu, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Honduras
|
||||||
|
const PrepopulatedEngine* const engines_HN[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Croatia
|
||||||
|
const PrepopulatedEngine* const engines_HR[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Hungary
|
||||||
|
const PrepopulatedEngine* const engines_HU[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Indonesia
|
||||||
|
const PrepopulatedEngine* const engines_ID[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_id, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_id, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Ireland
|
||||||
|
const PrepopulatedEngine* const engines_IE[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_uk,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_uk,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Israel
|
||||||
|
const PrepopulatedEngine* const engines_IL[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// India
|
||||||
|
const PrepopulatedEngine* const engines_IN[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_in,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_in,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Iraq
|
||||||
|
const PrepopulatedEngine* const engines_IQ[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Iran
|
||||||
|
const PrepopulatedEngine* const engines_IR[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Iceland
|
||||||
|
const PrepopulatedEngine* const engines_IS[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Italy
|
||||||
|
const PrepopulatedEngine* const engines_IT[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &virgilio, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &virgilio, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Jamaica
|
||||||
|
const PrepopulatedEngine* const engines_JM[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Jordan
|
||||||
|
const PrepopulatedEngine* const engines_JO[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Japan
|
||||||
|
const PrepopulatedEngine* const engines_JP[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_jp, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_jp, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Kenya
|
||||||
|
const PrepopulatedEngine* const engines_KE[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Kuwait
|
||||||
|
const PrepopulatedEngine* const engines_KW[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// South Korea
|
||||||
|
const PrepopulatedEngine* const engines_KR[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &naver, &daum,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &naver, &daum,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Kazakhstan
|
||||||
|
const PrepopulatedEngine* const engines_KZ[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &mail_ru, &yandex_kz,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &mail_ru, &yandex_kz,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Lebanon
|
||||||
|
const PrepopulatedEngine* const engines_LB[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Liechtenstein
|
||||||
|
const PrepopulatedEngine* const engines_LI[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_de,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_de,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Lithuania
|
||||||
|
const PrepopulatedEngine* const engines_LT[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yandex_ru,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yandex_ru,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Luxembourg
|
||||||
|
const PrepopulatedEngine* const engines_LU[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_fr,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_fr,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Latvia
|
||||||
|
const PrepopulatedEngine* const engines_LV[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yandex_ru, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yandex_ru, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Libya
|
||||||
|
const PrepopulatedEngine* const engines_LY[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Morocco
|
||||||
|
const PrepopulatedEngine* const engines_MA[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Monaco
|
||||||
|
const PrepopulatedEngine* const engines_MC[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_fr, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_fr, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Moldova
|
||||||
|
const PrepopulatedEngine* const engines_MD[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Montenegro
|
||||||
|
const PrepopulatedEngine* const engines_ME[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Macedonia
|
||||||
|
const PrepopulatedEngine* const engines_MK[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Mexico
|
||||||
|
const PrepopulatedEngine* const engines_MX[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_mx,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_mx,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Malaysia
|
||||||
|
const PrepopulatedEngine* const engines_MY[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_my, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_my, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Nicaragua
|
||||||
|
const PrepopulatedEngine* const engines_NI[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Netherlands
|
||||||
|
const PrepopulatedEngine* const engines_NL[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_nl, &vinden,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_nl, &vinden,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Norway
|
||||||
|
const PrepopulatedEngine* const engines_NO[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &kvasir,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &kvasir,
|
||||||
|
};
|
||||||
|
|
||||||
|
// New Zealand
|
||||||
|
const PrepopulatedEngine* const engines_NZ[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_nz,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_nz,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Oman
|
||||||
|
const PrepopulatedEngine* const engines_OM[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Panama
|
||||||
|
const PrepopulatedEngine* const engines_PA[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Peru
|
||||||
|
const PrepopulatedEngine* const engines_PE[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_pe,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_pe,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Philippines
|
||||||
|
const PrepopulatedEngine* const engines_PH[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_ph, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_ph, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Pakistan
|
||||||
|
const PrepopulatedEngine* const engines_PK[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Puerto Rico
|
||||||
|
const PrepopulatedEngine* const engines_PR[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Poland
|
||||||
|
const PrepopulatedEngine* const engines_PL[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &onet, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &onet, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Portugal
|
||||||
|
const PrepopulatedEngine* const engines_PT[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Paraguay
|
||||||
|
const PrepopulatedEngine* const engines_PY[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Qatar
|
||||||
|
const PrepopulatedEngine* const engines_QA[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Romania
|
||||||
|
const PrepopulatedEngine* const engines_RO[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_ro, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_ro, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Serbia
|
||||||
|
const PrepopulatedEngine* const engines_RS[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Russia
|
||||||
|
const PrepopulatedEngine* const engines_RU[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yandex_ru, &mail_ru,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yandex_ru, &mail_ru,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Rwanda
|
||||||
|
const PrepopulatedEngine* const engines_RW[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Saudi Arabia
|
||||||
|
const PrepopulatedEngine* const engines_SA[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Sweden
|
||||||
|
const PrepopulatedEngine* const engines_SE[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_se,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_se,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Singapore
|
||||||
|
const PrepopulatedEngine* const engines_SG[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_sg, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_sg, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Slovenia
|
||||||
|
const PrepopulatedEngine* const engines_SI[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &najdi, &ask,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &najdi, &ask,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Slovakia
|
||||||
|
const PrepopulatedEngine* const engines_SK[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// El Salvador
|
||||||
|
const PrepopulatedEngine* const engines_SV[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Syria
|
||||||
|
const PrepopulatedEngine* const engines_SY[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Thailand
|
||||||
|
const PrepopulatedEngine* const engines_TH[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_th, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_th, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Tunisia
|
||||||
|
const PrepopulatedEngine* const engines_TN[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Turkey
|
||||||
|
const PrepopulatedEngine* const engines_TR[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_tr, &yandex_tr,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_tr, &yandex_tr,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Trinidad and Tobago
|
||||||
|
const PrepopulatedEngine* const engines_TT[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Taiwan
|
||||||
|
const PrepopulatedEngine* const engines_TW[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_tw, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_tw, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Tanzania
|
||||||
|
const PrepopulatedEngine* const engines_TZ[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Ukraine
|
||||||
|
const PrepopulatedEngine* const engines_UA[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yandex_ua, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yandex_ua, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// United States
|
||||||
|
const PrepopulatedEngine* const engines_US[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo, &aol, &ask,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo, &aol, &ask,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Uruguay
|
||||||
|
const PrepopulatedEngine* const engines_UY[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Venezuela
|
||||||
|
const PrepopulatedEngine* const engines_VE[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_ve,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_ve,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Vietnam
|
||||||
|
const PrepopulatedEngine* const engines_VN[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_vn, &bing,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_vn, &bing,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Yemen
|
||||||
|
const PrepopulatedEngine* const engines_YE[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||||
|
};
|
||||||
|
|
||||||
|
// South Africa
|
||||||
|
const PrepopulatedEngine* const engines_ZA[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Zimbabwe
|
||||||
|
const PrepopulatedEngine* const engines_ZW[] = {
|
||||||
|
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo, &ask,
|
||||||
|
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo, &ask,
|
||||||
|
};
|
||||||
|
|
||||||
|
// A list of all the engines that we know about.
|
||||||
|
const PrepopulatedEngine* const kAllEngines[] = {
|
||||||
|
// Prepopulated engines:
|
||||||
|
- &aol, &ask, &ask_br, &ask_uk, &baidu, &bing, &daum, &google, &startpage, &duckduckgo, &duckduckgo_light, &kvasir,
|
||||||
|
+ &aol, &ask, &ask_br, &ask_uk, &baidu, &bing, &daum, &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &kvasir,
|
||||||
|
&mail_ru, &najdi, &naver, &onet, &seznam, &sogou, &vinden, &virgilio,
|
||||||
|
&yahoo, &yahoo_ar, &yahoo_at, &yahoo_au, &yahoo_br, &yahoo_ca, &yahoo_ch,
|
||||||
|
&yahoo_cl, &yahoo_co, &yahoo_de, &yahoo_dk, &yahoo_es, &yahoo_fi, &yahoo_fr,
|
||||||
+114
@@ -0,0 +1,114 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Wed Dec 20 22:18:41 2017 +0100
|
||||||
|
|
||||||
|
Revert "Remove Runtime flags for /deep/ and ::shadow used in CSS dynamic profile"
|
||||||
|
|
||||||
|
This reverts commit 860f43550bf6587ca21900dfdf901fce697cbbb7
|
||||||
|
|
||||||
|
diff --git a/third_party/WebKit/Source/core/css/CSSSelector.cpp b/third_party/WebKit/Source/core/css/CSSSelector.cpp
|
||||||
|
--- a/third_party/WebKit/Source/core/css/CSSSelector.cpp
|
||||||
|
+++ b/third_party/WebKit/Source/core/css/CSSSelector.cpp
|
||||||
|
@@ -546,8 +546,14 @@ void CSSSelector::UpdatePseudoType(const AtomicString& value,
|
||||||
|
pseudo_type_ = kPseudoUnknown;
|
||||||
|
break;
|
||||||
|
case kPseudoShadow:
|
||||||
|
- if (match_ != kPseudoElement || context.IsDynamicProfile())
|
||||||
|
- pseudo_type_ = kPseudoUnknown;
|
||||||
|
+ if (RuntimeEnabledFeatures::
|
||||||
|
+ ShadowPseudoElementInCSSDynamicProfileEnabled()) {
|
||||||
|
+ if (match_ != kPseudoElement)
|
||||||
|
+ pseudo_type_ = kPseudoUnknown;
|
||||||
|
+ } else {
|
||||||
|
+ if (match_ != kPseudoElement || context.IsDynamicProfile())
|
||||||
|
+ pseudo_type_ = kPseudoUnknown;
|
||||||
|
+ }
|
||||||
|
break;
|
||||||
|
case kPseudoBlinkInternalElement:
|
||||||
|
if (match_ != kPseudoElement || mode != kUASheetMode)
|
||||||
|
diff --git a/third_party/WebKit/Source/core/css/SelectorChecker.cpp b/third_party/WebKit/Source/core/css/SelectorChecker.cpp
|
||||||
|
--- a/third_party/WebKit/Source/core/css/SelectorChecker.cpp
|
||||||
|
+++ b/third_party/WebKit/Source/core/css/SelectorChecker.cpp
|
||||||
|
@@ -336,6 +336,8 @@ SelectorChecker::MatchStatus SelectorChecker::MatchForRelation(
|
||||||
|
|
||||||
|
switch (relation) {
|
||||||
|
case CSSSelector::kShadowDeepAsDescendant:
|
||||||
|
+ DCHECK(
|
||||||
|
+ !RuntimeEnabledFeatures::DeepCombinatorInCSSDynamicProfileEnabled());
|
||||||
|
Deprecation::CountDeprecation(context.element->GetDocument(),
|
||||||
|
WebFeature::kCSSDeepCombinator);
|
||||||
|
FALLTHROUGH;
|
||||||
|
@@ -424,6 +426,11 @@ SelectorChecker::MatchStatus SelectorChecker::MatchForRelation(
|
||||||
|
UseCounter::Count(context.element->GetDocument(),
|
||||||
|
WebFeature::kPseudoShadowInStaticProfile);
|
||||||
|
}
|
||||||
|
+ if (RuntimeEnabledFeatures::
|
||||||
|
+ ShadowPseudoElementInCSSDynamicProfileEnabled()) {
|
||||||
|
+ Deprecation::CountDeprecation(context.element->GetDocument(),
|
||||||
|
+ WebFeature::kCSSSelectorPseudoShadow);
|
||||||
|
+ }
|
||||||
|
// If we're in the same tree-scope as the scoping element, then following
|
||||||
|
// a shadow descendant combinator would escape that and thus the scope.
|
||||||
|
if (context.scope && context.scope->OwnerShadowHost() &&
|
||||||
|
diff --git a/third_party/WebKit/Source/core/css/StyleEngineTest.cpp b/third_party/WebKit/Source/core/css/StyleEngineTest.cpp
|
||||||
|
--- a/third_party/WebKit/Source/core/css/StyleEngineTest.cpp
|
||||||
|
+++ b/third_party/WebKit/Source/core/css/StyleEngineTest.cpp
|
||||||
|
@@ -842,6 +842,14 @@ TEST_F(StyleEngineTest, RuleSetInvalidationV0BoundaryCrossing) {
|
||||||
|
EXPECT_EQ(ScheduleInvalidationsForRules(
|
||||||
|
*shadow_root, ".a ::content span { background: green}"),
|
||||||
|
kRuleSetInvalidationFullRecalc);
|
||||||
|
+ if (RuntimeEnabledFeatures::DeepCombinatorInCSSDynamicProfileEnabled()) {
|
||||||
|
+ EXPECT_EQ(ScheduleInvalidationsForRules(
|
||||||
|
+ *shadow_root, ".a /deep/ span { background: green}"),
|
||||||
|
+ kRuleSetInvalidationFullRecalc);
|
||||||
|
+ EXPECT_EQ(ScheduleInvalidationsForRules(
|
||||||
|
+ *shadow_root, ".a::shadow span { background: green}"),
|
||||||
|
+ kRuleSetInvalidationFullRecalc);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(StyleEngineTest, HasViewportDependentMediaQueries) {
|
||||||
|
diff --git a/third_party/WebKit/Source/core/css/parser/CSSSelectorParser.cpp b/third_party/WebKit/Source/core/css/parser/CSSSelectorParser.cpp
|
||||||
|
--- a/third_party/WebKit/Source/core/css/parser/CSSSelectorParser.cpp
|
||||||
|
+++ b/third_party/WebKit/Source/core/css/parser/CSSSelectorParser.cpp
|
||||||
|
@@ -1,4 +1,3 @@
|
||||||
|
-
|
||||||
|
// Copyright 2014 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.
|
||||||
|
@@ -667,6 +666,9 @@ CSSSelector::RelationType CSSSelectorParser::ConsumeCombinator(
|
||||||
|
const CSSParserToken& slash = range.ConsumeIncludingWhitespace();
|
||||||
|
if (slash.GetType() != kDelimiterToken || slash.Delimiter() != '/')
|
||||||
|
failed_parsing_ = true;
|
||||||
|
+ if (RuntimeEnabledFeatures::DeepCombinatorInCSSDynamicProfileEnabled()) {
|
||||||
|
+ return CSSSelector::kShadowDeep;
|
||||||
|
+ }
|
||||||
|
return context_->IsDynamicProfile() ? CSSSelector::kShadowDeepAsDescendant
|
||||||
|
: CSSSelector::kShadowDeep;
|
||||||
|
}
|
||||||
|
diff --git a/third_party/WebKit/Source/platform/runtime_enabled_features.json5 b/third_party/WebKit/Source/platform/runtime_enabled_features.json5
|
||||||
|
--- a/third_party/WebKit/Source/platform/runtime_enabled_features.json5
|
||||||
|
+++ b/third_party/WebKit/Source/platform/runtime_enabled_features.json5
|
||||||
|
@@ -325,6 +325,11 @@
|
||||||
|
name: "DecodeToYUV",
|
||||||
|
status: "experimental",
|
||||||
|
},
|
||||||
|
+ // Remove this flag once we can remove /deep/ at M63.
|
||||||
|
+ {
|
||||||
|
+ name: "DeepCombinatorInCSSDynamicProfile",
|
||||||
|
+ status: "test",
|
||||||
|
+ },
|
||||||
|
{
|
||||||
|
name: "DeprecationReporting",
|
||||||
|
status: "experimental",
|
||||||
|
@@ -974,6 +979,11 @@
|
||||||
|
name: "ShadowPiercingDescendantCombinator",
|
||||||
|
status: "experimental",
|
||||||
|
},
|
||||||
|
+ // Remove this flag once we can remove ::shadow at M63.
|
||||||
|
+ {
|
||||||
|
+ name: "ShadowPseudoElementInCSSDynamicProfile",
|
||||||
|
+ status: "test",
|
||||||
|
+ },
|
||||||
|
{
|
||||||
|
name: "ShapeDetection",
|
||||||
|
status: "experimental",
|
||||||
+71
@@ -0,0 +1,71 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Wed Dec 20 22:31:37 2017 +0100
|
||||||
|
|
||||||
|
Revert "Disable runtime flags for /deep/ and ::shadow used in CSS dynamic profile for M63."
|
||||||
|
|
||||||
|
This reverts commit 0ebd56da93abf970128804390879624b3dc79ac2.
|
||||||
|
|
||||||
|
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/apply-deep-in-document-scope-expected.txt b/third_party/WebKit/LayoutTests/fast/dom/shadow/apply-deep-in-document-scope-expected.txt
|
||||||
|
--- a/third_party/WebKit/LayoutTests/fast/dom/shadow/apply-deep-in-document-scope-expected.txt
|
||||||
|
+++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/apply-deep-in-document-scope-expected.txt
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-CONSOLE WARNING: line 1: /deep/ combinator is no longer supported in CSS dynamic profile.It is now effectively no-op, acting as if it were a descendant combinator. /deep/ combinator will be removed, and will be invalid at M65. You should remove it. See https://www.chromestatus.com/features/4964279606312960 for more details.
|
||||||
|
+CONSOLE WARNING: line 1: /deep/ combinator in CSS is deprecated and will be removed in M63, around December 2017. See https://www.chromestatus.com/features/4964279606312960 for more details.
|
||||||
|
/deep/ as a descendant selector in document without shadow trees.
|
||||||
|
|
||||||
|
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
|
||||||
|
diff --git a/third_party/WebKit/Source/core/frame/Deprecation.cpp b/third_party/WebKit/Source/core/frame/Deprecation.cpp
|
||||||
|
--- a/third_party/WebKit/Source/core/frame/Deprecation.cpp
|
||||||
|
+++ b/third_party/WebKit/Source/core/frame/Deprecation.cpp
|
||||||
|
@@ -388,13 +388,13 @@ DeprecationInfo GetDeprecationInfo(WebFeature feature) {
|
||||||
|
"details.")};
|
||||||
|
|
||||||
|
case WebFeature::kCSSDeepCombinator:
|
||||||
|
- return {"CSSDeepCombinator", M65,
|
||||||
|
- "/deep/ combinator is no longer supported in CSS dynamic profile."
|
||||||
|
- "It is now effectively no-op, acting as if it were a descendant "
|
||||||
|
- "combinator. /deep/ combinator will be removed, and will be "
|
||||||
|
- "invalid at M65. You should remove it. See "
|
||||||
|
- "https://www.chromestatus.com/features/4964279606312960 for more "
|
||||||
|
- "details."};
|
||||||
|
+ return {"CSSDeepCombinator", M63,
|
||||||
|
+ willBeRemoved("/deep/ combinator in CSS", M63, "4964279606312960")};
|
||||||
|
+
|
||||||
|
+ case WebFeature::kCSSSelectorPseudoShadow:
|
||||||
|
+ return {"CSSSelectorPseudoShadow", M63,
|
||||||
|
+ willBeRemoved("::shadow pseudo-element in CSS", M63,
|
||||||
|
+ "6750456638341120")};
|
||||||
|
|
||||||
|
case WebFeature::kVREyeParametersOffset:
|
||||||
|
return {"VREyeParametersOffset", Unknown,
|
||||||
|
diff --git a/third_party/WebKit/Source/platform/runtime_enabled_features.json5 b/third_party/WebKit/Source/platform/runtime_enabled_features.json5
|
||||||
|
--- a/third_party/WebKit/Source/platform/runtime_enabled_features.json5
|
||||||
|
+++ b/third_party/WebKit/Source/platform/runtime_enabled_features.json5
|
||||||
|
@@ -325,10 +325,11 @@
|
||||||
|
name: "DecodeToYUV",
|
||||||
|
status: "experimental",
|
||||||
|
},
|
||||||
|
- // Remove this flag once we can remove /deep/ at M63.
|
||||||
|
+ // Introduced this flag as stable so we can re-enable this feature easily
|
||||||
|
+ // after we disable this feature.
|
||||||
|
{
|
||||||
|
name: "DeepCombinatorInCSSDynamicProfile",
|
||||||
|
- status: "test",
|
||||||
|
+ status: "stable",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "DeprecationReporting",
|
||||||
|
@@ -979,10 +980,11 @@
|
||||||
|
name: "ShadowPiercingDescendantCombinator",
|
||||||
|
status: "experimental",
|
||||||
|
},
|
||||||
|
- // Remove this flag once we can remove ::shadow at M63.
|
||||||
|
+ // Introduced this flag as stable so we can re-enable this feature easily
|
||||||
|
+ // after we disable this feature.
|
||||||
|
{
|
||||||
|
name: "ShadowPseudoElementInCSSDynamicProfile",
|
||||||
|
- status: "test",
|
||||||
|
+ status: "stable",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "ShapeDetection",
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Sat Jan 20 19:44:43 2018 +0100
|
||||||
|
|
||||||
|
Fix crash when accessing page info / site settings
|
||||||
|
|
||||||
|
diff --git a/chrome/browser/permissions/permission_manager.cc b/chrome/browser/permissions/permission_manager.cc
|
||||||
|
--- a/chrome/browser/permissions/permission_manager.cc
|
||||||
|
+++ b/chrome/browser/permissions/permission_manager.cc
|
||||||
|
@@ -573,6 +573,9 @@ PermissionResult PermissionManager::GetPermissionStatusHelper(
|
||||||
|
const GURL& embedding_origin) {
|
||||||
|
GURL canonical_requesting_origin = GetCanonicalOrigin(requesting_origin);
|
||||||
|
PermissionContextBase* context = GetPermissionContext(permission);
|
||||||
|
+ if (context == nullptr) {
|
||||||
|
+ return PermissionResult(CONTENT_SETTING_BLOCK, PermissionStatusSource::UNSPECIFIED);
|
||||||
|
+ }
|
||||||
|
PermissionResult result = context->GetPermissionStatus(
|
||||||
|
render_frame_host, canonical_requesting_origin.GetOrigin(),
|
||||||
|
embedding_origin.GetOrigin());
|
||||||
@@ -0,0 +1,81 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Sat Jan 20 21:17:27 2018 +0100
|
||||||
|
|
||||||
|
Compile ARM optimizations for H264
|
||||||
|
Not only when running ChromeOS+ARM but for all ARM devices
|
||||||
|
|
||||||
|
diff --git a/content/renderer/media_recorder/h264_encoder.cc b/content/renderer/media_recorder/h264_encoder.cc
|
||||||
|
--- a/content/renderer/media_recorder/h264_encoder.cc
|
||||||
|
+++ b/content/renderer/media_recorder/h264_encoder.cc
|
||||||
|
@@ -149,11 +149,11 @@ void H264Encoder::ConfigureEncoderOnEncodingTaskRunner(const gfx::Size& size) {
|
||||||
|
init_params.iRCMode = RC_OFF_MODE;
|
||||||
|
}
|
||||||
|
|
||||||
|
-#if defined(OS_CHROMEOS)
|
||||||
|
- init_params.iMultipleThreadIdc = 0;
|
||||||
|
-#else
|
||||||
|
+#if defined(OS_MACOSX)
|
||||||
|
// Threading model: Set to 1 due to https://crbug.com/583348.
|
||||||
|
init_params.iMultipleThreadIdc = 1;
|
||||||
|
+#else
|
||||||
|
+ init_params.iMultipleThreadIdc = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// TODO(mcasas): consider reducing complexity if there are few CPUs available.
|
||||||
|
diff --git a/third_party/openh264/BUILD.gn b/third_party/openh264/BUILD.gn
|
||||||
|
--- a/third_party/openh264/BUILD.gn
|
||||||
|
+++ b/third_party/openh264/BUILD.gn
|
||||||
|
@@ -10,16 +10,22 @@ import("//third_party/yasm/yasm_assemble.gni")
|
||||||
|
# Config shared by all openh264 targets.
|
||||||
|
config("config") {
|
||||||
|
cflags = []
|
||||||
|
+ defines = []
|
||||||
|
|
||||||
|
+ # HAVE_NEON and __chromeos__ are needed for enabling NEON on ChromeOS
|
||||||
|
+ # devices.
|
||||||
|
if (is_chromeos && target_cpu == "arm") {
|
||||||
|
- # HAVE_NEON and __chromeos__ are needed for enabling NEON on ChromeOS
|
||||||
|
- # devices.
|
||||||
|
- defines = [
|
||||||
|
- "HAVE_NEON",
|
||||||
|
+ defines += [
|
||||||
|
"__chromeos__",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (target_cpu == "arm") {
|
||||||
|
+ defines += [
|
||||||
|
+ "HAVE_NEON",
|
||||||
|
+ ]
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
# GCC and clang flags. MSVS (is_win && !is_clang) does not use cflags.
|
||||||
|
if (!is_win || is_clang) {
|
||||||
|
cflags += [
|
||||||
|
@@ -123,7 +129,7 @@ if (use_assembler) {
|
||||||
|
|
||||||
|
source_set("common") {
|
||||||
|
sources = openh264_common_sources
|
||||||
|
- if (is_chromeos && target_cpu == "arm") {
|
||||||
|
+ if (target_cpu == "arm") {
|
||||||
|
sources += openh264_common_sources_asm_arm
|
||||||
|
}
|
||||||
|
include_dirs = openh264_common_include_dirs
|
||||||
|
@@ -149,7 +155,7 @@ source_set("common") {
|
||||||
|
|
||||||
|
source_set("processing") {
|
||||||
|
sources = openh264_processing_sources
|
||||||
|
- if (is_chromeos && target_cpu == "arm") {
|
||||||
|
+ if (target_cpu == "arm") {
|
||||||
|
sources += openh264_processing_sources_asm_arm
|
||||||
|
}
|
||||||
|
include_dirs = openh264_processing_include_dirs
|
||||||
|
@@ -168,7 +174,7 @@ source_set("processing") {
|
||||||
|
|
||||||
|
source_set("encoder") {
|
||||||
|
sources = openh264_encoder_sources
|
||||||
|
- if (is_chromeos && target_cpu == "arm") {
|
||||||
|
+ if (target_cpu == "arm") {
|
||||||
|
sources += openh264_encoder_sources_asm_arm
|
||||||
|
}
|
||||||
|
include_dirs = openh264_encoder_include_dirs
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Sat Oct 28 10:09:41 2017 +0200
|
||||||
|
|
||||||
|
Do not track google search results clicks
|
||||||
|
|
||||||
|
Limit AMP cleanup to main search results
|
||||||
|
|
||||||
|
diff --git a/third_party/WebKit/Source/core/dom/BUILD.gn b/third_party/WebKit/Source/core/dom/BUILD.gn
|
||||||
|
--- a/third_party/WebKit/Source/core/dom/BUILD.gn
|
||||||
|
+++ b/third_party/WebKit/Source/core/dom/BUILD.gn
|
||||||
|
@@ -301,6 +301,7 @@ blink_core_sources("dom") {
|
||||||
|
"events/TreeScopeEventContext.h",
|
||||||
|
"events/WindowEventContext.cpp",
|
||||||
|
"events/WindowEventContext.h",
|
||||||
|
+ "extensions/dont-track-me.h",
|
||||||
|
"ng/flat_tree_traversal_ng.cc",
|
||||||
|
"ng/flat_tree_traversal_ng.h",
|
||||||
|
"trustedtypes/TrustedHTML.cpp",
|
||||||
|
diff --git a/third_party/WebKit/Source/core/dom/Document.cpp b/third_party/WebKit/Source/core/dom/Document.cpp
|
||||||
|
--- a/third_party/WebKit/Source/core/dom/Document.cpp
|
||||||
|
+++ b/third_party/WebKit/Source/core/dom/Document.cpp
|
||||||
|
@@ -221,6 +221,7 @@
|
||||||
|
#include "core/xml/parser/XMLDocumentParser.h"
|
||||||
|
#include "core/xml_names.h"
|
||||||
|
#include "core/xmlns_names.h"
|
||||||
|
+#include "extensions/dont-track-me.h"
|
||||||
|
#include "platform/CrossThreadFunctional.h"
|
||||||
|
#include "platform/DateComponents.h"
|
||||||
|
#include "platform/EventDispatchForbiddenScope.h"
|
||||||
|
@@ -5786,8 +5787,24 @@ void Document::FinishedParsing() {
|
||||||
|
fetcher_->ClearResourcesFromPreviousFetcher();
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (IsPrefetchOnly())
|
||||||
|
+ if (IsPrefetchOnly()) {
|
||||||
|
WebPrerenderingSupport::Current()->PrefetchFinished();
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ // determine whether this is a Google search results page
|
||||||
|
+ const SecurityOrigin *origin = GetSecurityOrigin();
|
||||||
|
+ if (origin) {
|
||||||
|
+ WTF::String domain = origin->Domain();
|
||||||
|
+ size_t pos = domain.Find(".google.");
|
||||||
|
+ auto* bodyElement = body();
|
||||||
|
+ if (bodyElement && (pos != WTF::kNotFound) && (domain.length() - pos - 8 < 4)) {
|
||||||
|
+ LOG(INFO) << "injecting dont-track-me Javascript payload";
|
||||||
|
+ HTMLScriptElement* e = HTMLScriptElement::Create(*this, CreateElementFlags());
|
||||||
|
+ e->setText(DONT_TRACK_ME_JS);
|
||||||
|
+ bodyElement->AppendChild(e);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
void Document::ElementDataCacheClearTimerFired(TimerBase*) {
|
||||||
|
diff --git a/third_party/WebKit/Source/core/dom/extensions/dont-track-me.h b/third_party/WebKit/Source/core/dom/extensions/dont-track-me.h
|
||||||
|
new file mode 100644
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/third_party/WebKit/Source/core/dom/extensions/dont-track-me.h
|
||||||
|
@@ -0,0 +1,6 @@
|
||||||
|
+#ifndef dont_track_me_h
|
||||||
|
+#define dont_track_me_h
|
||||||
|
+
|
||||||
|
+#define DONT_TRACK_ME_JS "/* Bromite click-tracking and AMP removal v0.3.5 */\n\nfunction recreateHyperlink(a) {\n // skip already-sanitized hyperlinks\n if (a.sane) return false;\n\n // create new A element - old one has event listeners attached\n var newA = document.createElement('a');\n newA.referrerPolicy = 'origin';\n // property set when hyperlink has been created by this script\n newA.sane = 1;\n\n // remove AMP class, get actual page URL\n var ampCur = a.getAttribute('data-amp-cur');\n if (ampCur) {\n newA.href = ampCur;\n a.classList.remove('amp_r');\n } else {\n var realLink = getRealLinkFromGoogleUrl(a);\n if (realLink) {\n newA.href = realLink;\n } else {\n // might not be an actual hyperlink, ignore it\n if (!a.href) {\n return false;\n }\n // leave original href unchanged\n newA.href = a.href;\n }\n }\n // copy CSS classes\n newA.className = a.className;\n\n // copy nodes inside the hyperlink\n while (a.firstChild) {\n newA.appendChild(a.lastChild);\n }\n // replace hyperlink\n a.parentNode.replaceChild(newA, a);\n return true;\n}\n\nfunction isResult(a) {\n if (a.getAttribute('data-amp-cur'))\n return true;\n var inlineMousedown = a.getAttribute('onmousedown');\n if (!inlineMousedown)\n\treturn false;\n // return rwt(....); // E.g Google search results.\n // return google.rwt(...); // E.g. sponsored search results\n // return google.arwt(this); // E.g. sponsored search results (dec 2016).\n return /\\ba?rwt\\(/.test(inlineMousedown) || /\\bctpacw\\b/.test(inlineMousedown);\n}\n\n/**\n * @returns {String} the real URL if the given link is a Google redirect URL.\n */\nfunction getRealLinkFromGoogleUrl(a) {\n if ((a.hostname === location.hostname || a.hostname.indexOf('www.google.') == 0) &&\n /^\\/(local_)?url$/.test(a.pathname)) {\n // Google Maps / Dito (/local_url?q=<url>)\n // Mobile (/url?q=<url>)\n var url = /[?&](?:q|url)=((?:https?|ftp)[%:][^&]+)/.exec(a.search);\n if (url) {\n return decodeURIComponent(url[1]);\n }\n // Help pages, e.g. safe browsing (/url?...&q=%2Fsupport%2Fanswer...)\n url = /[?&](?:q|url)=((?:%2[Ff]|\\/)[^&]+)/.exec(a.search);\n if (url) {\n return a.origin + decodeURIComponent(url[1]);\n }\n }\n}\n\nfunction sanitizeAds() {\n // scan all divs\n var div = document.getElementById('tads');\n if (div) {\n div.style.display = 'none';\n\treturn true;\n }\n return false;\n}\n\nfunction sanitizeAll() {\n console.log(\"ads removed: \", sanitizeAds());\n console.log(\"hyperlinks sanitized: \", sanitizeAllHyperlinks());\n}\n\nfunction setMlogoClick() {\n var mlogo = document.getElementById('mlogo');\n if (mlogo) {\n mlogo.removeAttribute(\"href\");\n mlogo.setAttribute(\"onclick\", \"sanitizeAll()\");\n console.log(\"logo link replaced\");\n } else {\n console.log(\"could not replace logo link\");\n }\n}\n\nfunction sanitizeAllHyperlinks() {\n var saned = 0, total = 0;\n document.querySelectorAll('div[data-hveid]:not([data-hveid=\"\"]) a').forEach(function(a) {\n\ttotal++;\n\tvar res = recreateHyperlink(a);\n\tif (res) saned++;\n });\n console.log(\"sanitized \", saned, \"/\", total, \" hyperlinks\");\n\n return saned;\n}\n\n// avoid running cleanup on non-search pages\nif ((document.location.host.indexOf(\"images.google.\") == -1) && (document.location.host.indexOf(\"news.google.\") == -1)) {\n// document.addEventListener('touchstart', handlePointerPress, true);\n sanitizeAll();\n}\nsetMlogoClick();\n"
|
||||||
|
+
|
||||||
|
+#endif // dont_track_me_h
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Mon Feb 12 21:43:35 2018 +0100
|
||||||
|
|
||||||
|
Never send any crash upload data
|
||||||
|
|
||||||
|
diff --git a/chrome/browser/tracing/crash_service_uploader.cc b/chrome/browser/tracing/crash_service_uploader.cc
|
||||||
|
--- a/chrome/browser/tracing/crash_service_uploader.cc
|
||||||
|
+++ b/chrome/browser/tracing/crash_service_uploader.cc
|
||||||
|
@@ -122,6 +122,9 @@ void TraceCrashServiceUploader::DoUpload(
|
||||||
|
std::unique_ptr<const base::DictionaryValue> metadata,
|
||||||
|
const UploadProgressCallback& progress_callback,
|
||||||
|
const UploadDoneCallback& done_callback) {
|
||||||
|
+
|
||||||
|
+ return;
|
||||||
|
+
|
||||||
|
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
||||||
|
|
||||||
|
progress_callback_ = progress_callback;
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Wed Feb 14 12:56:01 2018 +0100
|
||||||
|
|
||||||
|
Never fetch popular sites
|
||||||
|
|
||||||
|
diff --git a/components/ntp_tiles/popular_sites_impl.cc b/components/ntp_tiles/popular_sites_impl.cc
|
||||||
|
--- a/components/ntp_tiles/popular_sites_impl.cc
|
||||||
|
+++ b/components/ntp_tiles/popular_sites_impl.cc
|
||||||
|
@@ -289,6 +289,12 @@ bool PopularSitesImpl::MaybeStartFetch(bool force_download,
|
||||||
|
DCHECK(!callback_);
|
||||||
|
callback_ = callback;
|
||||||
|
|
||||||
|
+ if (force_download) {
|
||||||
|
+ callback_.Run(true);
|
||||||
|
+ return true;
|
||||||
|
+ }
|
||||||
|
+ return false;
|
||||||
|
+
|
||||||
|
const base::Time last_download_time = base::Time::FromInternalValue(
|
||||||
|
prefs_->GetInt64(prefs::kPopularSitesLastDownloadPref));
|
||||||
|
const base::TimeDelta time_since_last_download =
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Mon Feb 12 21:14:39 2018 +0100
|
||||||
|
|
||||||
|
ungoogled-chromium: Disable signin
|
||||||
|
|
||||||
|
diff --git a/chrome/browser/ui/chrome_pages.cc b/chrome/browser/ui/chrome_pages.cc
|
||||||
|
--- a/chrome/browser/ui/chrome_pages.cc
|
||||||
|
+++ b/chrome/browser/ui/chrome_pages.cc
|
||||||
|
@@ -76,12 +76,6 @@ void OpenBookmarkManagerForNode(Browser* browser, int64_t node_id) {
|
||||||
|
ShowSingletonTabOverwritingNTP(browser, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
-void NavigateToSingletonTab(Browser* browser, const GURL& url) {
|
||||||
|
- NavigateParams params(GetSingletonTabNavigateParams(browser, url));
|
||||||
|
- params.path_behavior = NavigateParams::IGNORE_AND_NAVIGATE;
|
||||||
|
- ShowSingletonTabOverwritingNTP(browser, params);
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
// Shows either the help app or the appropriate help page for |source|. If
|
||||||
|
// |browser| is NULL and the help page is used (vs the app), the help page is
|
||||||
|
// shown in the last active browser. If there is no such browser, a new browser
|
||||||
|
@@ -396,6 +390,7 @@ void ShowSearchEngineSettings(Browser* browser) {
|
||||||
|
#if !defined(OS_ANDROID)
|
||||||
|
void ShowBrowserSignin(Browser* browser,
|
||||||
|
signin_metrics::AccessPoint access_point) {
|
||||||
|
+#if 0
|
||||||
|
Profile* original_profile = browser->profile()->GetOriginalProfile();
|
||||||
|
SigninManagerBase* manager =
|
||||||
|
SigninManagerFactory::GetForProfile(original_profile);
|
||||||
|
@@ -436,6 +431,7 @@ void ShowBrowserSignin(Browser* browser,
|
||||||
|
false));
|
||||||
|
DCHECK_GT(browser->tab_strip_model()->count(), 0);
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShowBrowserSigninOrSettings(Browser* browser,
|
||||||
|
diff --git a/components/signin/core/browser/signin_manager_base.cc b/components/signin/core/browser/signin_manager_base.cc
|
||||||
|
--- a/components/signin/core/browser/signin_manager_base.cc
|
||||||
|
+++ b/components/signin/core/browser/signin_manager_base.cc
|
||||||
|
@@ -158,7 +158,7 @@ void SigninManagerBase::Initialize(PrefService* local_state) {
|
||||||
|
bool SigninManagerBase::IsInitialized() const { return initialized_; }
|
||||||
|
|
||||||
|
bool SigninManagerBase::IsSigninAllowed() const {
|
||||||
|
- return client_->GetPrefs()->GetBoolean(prefs::kSigninAllowed);
|
||||||
|
+ return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
AccountInfo SigninManagerBase::GetAuthenticatedAccountInfo() const {
|
||||||
@@ -0,0 +1,117 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Mon Feb 12 21:21:36 2018 +0100
|
||||||
|
|
||||||
|
ungoogled-chromium: Disable webRTC log uploader
|
||||||
|
Disables WebRTC log uploading to Google - ported patch
|
||||||
|
|
||||||
|
diff --git a/chrome/browser/media/webrtc/webrtc_log_uploader.cc b/chrome/browser/media/webrtc/webrtc_log_uploader.cc
|
||||||
|
--- a/chrome/browser/media/webrtc/webrtc_log_uploader.cc
|
||||||
|
+++ b/chrome/browser/media/webrtc/webrtc_log_uploader.cc
|
||||||
|
@@ -115,30 +115,10 @@ void WebRtcLogUploader::LoggingStoppedDoUpload(
|
||||||
|
DCHECK(meta_data.get());
|
||||||
|
DCHECK(!upload_done_data.log_path.empty());
|
||||||
|
|
||||||
|
- std::string compressed_log;
|
||||||
|
- CompressLog(&compressed_log, log_buffer.get());
|
||||||
|
-
|
||||||
|
- std::string local_log_id;
|
||||||
|
-
|
||||||
|
if (base::PathExists(upload_done_data.log_path)) {
|
||||||
|
webrtc_logging::DeleteOldWebRtcLogFiles(upload_done_data.log_path);
|
||||||
|
-
|
||||||
|
- local_log_id = base::NumberToString(base::Time::Now().ToDoubleT());
|
||||||
|
- base::FilePath log_file_path =
|
||||||
|
- upload_done_data.log_path.AppendASCII(local_log_id)
|
||||||
|
- .AddExtension(FILE_PATH_LITERAL(".gz"));
|
||||||
|
- WriteCompressedLogToFile(compressed_log, log_file_path);
|
||||||
|
-
|
||||||
|
- base::FilePath log_list_path =
|
||||||
|
- webrtc_logging::LogList::GetWebRtcLogListFileForDirectory(
|
||||||
|
- upload_done_data.log_path);
|
||||||
|
- AddLocallyStoredLogInfoToUploadListFile(log_list_path, local_log_id);
|
||||||
|
}
|
||||||
|
-
|
||||||
|
- WebRtcLogUploadDoneData upload_done_data_with_log_id = upload_done_data;
|
||||||
|
- upload_done_data_with_log_id.local_log_id = local_log_id;
|
||||||
|
- PrepareMultipartPostData(compressed_log, std::move(meta_data),
|
||||||
|
- upload_done_data_with_log_id);
|
||||||
|
+ NotifyUploadDone(net::HTTP_OK, "", upload_done_data);
|
||||||
|
}
|
||||||
|
|
||||||
|
void WebRtcLogUploader::PrepareMultipartPostData(
|
||||||
|
@@ -149,29 +129,7 @@ void WebRtcLogUploader::PrepareMultipartPostData(
|
||||||
|
DCHECK(!compressed_log.empty());
|
||||||
|
DCHECK(meta_data.get());
|
||||||
|
|
||||||
|
- std::unique_ptr<std::string> post_data(new std::string());
|
||||||
|
- SetupMultipart(post_data.get(),
|
||||||
|
- compressed_log,
|
||||||
|
- upload_done_data.incoming_rtp_dump,
|
||||||
|
- upload_done_data.outgoing_rtp_dump,
|
||||||
|
- *meta_data.get());
|
||||||
|
-
|
||||||
|
- // If a test has set the test string pointer, write to it and skip uploading.
|
||||||
|
- // Still fire the upload callback so that we can run an extension API test
|
||||||
|
- // using the test framework for that without hanging.
|
||||||
|
- // TODO(grunell): Remove this when the api test for this feature is fully
|
||||||
|
- // implemented according to the test plan. http://crbug.com/257329.
|
||||||
|
- if (post_data_) {
|
||||||
|
- *post_data_ = *post_data;
|
||||||
|
- NotifyUploadDone(net::HTTP_OK, "", upload_done_data);
|
||||||
|
- return;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- BrowserThread::PostTask(
|
||||||
|
- BrowserThread::IO, FROM_HERE,
|
||||||
|
- base::BindOnce(&WebRtcLogUploader::UploadCompressedLog,
|
||||||
|
- base::Unretained(this), upload_done_data,
|
||||||
|
- base::Passed(&post_data)));
|
||||||
|
+ NotifyUploadDone(net::HTTP_OK, "", upload_done_data);
|
||||||
|
}
|
||||||
|
|
||||||
|
void WebRtcLogUploader::UploadStoredLog(
|
||||||
|
@@ -237,44 +195,6 @@ void WebRtcLogUploader::LoggingStoppedDoStore(
|
||||||
|
|
||||||
|
webrtc_logging::DeleteOldWebRtcLogFiles(log_paths.log_path);
|
||||||
|
|
||||||
|
- base::FilePath log_list_path =
|
||||||
|
- webrtc_logging::LogList::GetWebRtcLogListFileForDirectory(
|
||||||
|
- log_paths.log_path);
|
||||||
|
-
|
||||||
|
- // Store the native log with a ".gz" extension.
|
||||||
|
- std::string compressed_log;
|
||||||
|
- CompressLog(&compressed_log, log_buffer.get());
|
||||||
|
- base::FilePath native_log_path = log_paths.log_path.AppendASCII(log_id)
|
||||||
|
- .AddExtension(FILE_PATH_LITERAL(".gz"));
|
||||||
|
- WriteCompressedLogToFile(compressed_log, native_log_path);
|
||||||
|
- AddLocallyStoredLogInfoToUploadListFile(log_list_path, log_id);
|
||||||
|
-
|
||||||
|
- // Move the rtp dump files to the log directory with a name of
|
||||||
|
- // <log id>.rtp_[in|out].
|
||||||
|
- if (!log_paths.incoming_rtp_dump.empty()) {
|
||||||
|
- base::FilePath rtp_path = log_paths.log_path.AppendASCII(log_id)
|
||||||
|
- .AddExtension(FILE_PATH_LITERAL(".rtp_in"));
|
||||||
|
- base::Move(log_paths.incoming_rtp_dump, rtp_path);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- if (!log_paths.outgoing_rtp_dump.empty()) {
|
||||||
|
- base::FilePath rtp_path = log_paths.log_path.AppendASCII(log_id)
|
||||||
|
- .AddExtension(FILE_PATH_LITERAL(".rtp_out"));
|
||||||
|
- base::Move(log_paths.outgoing_rtp_dump, rtp_path);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- if (meta_data.get() && !meta_data->empty()) {
|
||||||
|
- base::Pickle pickle;
|
||||||
|
- for (const auto& it : *meta_data.get()) {
|
||||||
|
- pickle.WriteString(it.first);
|
||||||
|
- pickle.WriteString(it.second);
|
||||||
|
- }
|
||||||
|
- base::FilePath meta_path = log_paths.log_path.AppendASCII(log_id)
|
||||||
|
- .AddExtension(FILE_PATH_LITERAL(".meta"));
|
||||||
|
- base::WriteFile(meta_path, static_cast<const char*>(pickle.data()),
|
||||||
|
- pickle.size());
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
|
||||||
|
base::BindOnce(done_callback, true, ""));
|
||||||
|
|
||||||
@@ -0,0 +1,114 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Mon Feb 12 21:28:11 2018 +0100
|
||||||
|
|
||||||
|
ungoogled-chromium: Disable untraceable URLs
|
||||||
|
Disable additional URLs that are not caught by the "trk" scheme
|
||||||
|
|
||||||
|
diff --git a/chrome/browser/android/rlz/rlz_ping_handler.cc b/chrome/browser/android/rlz/rlz_ping_handler.cc
|
||||||
|
--- a/chrome/browser/android/rlz/rlz_ping_handler.cc
|
||||||
|
+++ b/chrome/browser/android/rlz/rlz_ping_handler.cc
|
||||||
|
@@ -66,7 +66,7 @@ void RlzPingHandler::Ping(
|
||||||
|
DCHECK_EQ(id.length(), 50u);
|
||||||
|
|
||||||
|
GURL request_url(base::StringPrintf(
|
||||||
|
- "https://%s%s?", rlz_lib::kFinancialServer, rlz_lib::kFinancialPingPath));
|
||||||
|
+ "about:blank"));
|
||||||
|
request_url = net::AppendQueryParameter(
|
||||||
|
request_url, rlz_lib::kProductSignatureCgiVariable, "chrome");
|
||||||
|
request_url =
|
||||||
|
diff --git a/chrome/browser/plugins/plugins_resource_service.cc b/chrome/browser/plugins/plugins_resource_service.cc
|
||||||
|
--- a/chrome/browser/plugins/plugins_resource_service.cc
|
||||||
|
+++ b/chrome/browser/plugins/plugins_resource_service.cc
|
||||||
|
@@ -69,7 +69,7 @@ GURL GetPluginsServerURL() {
|
||||||
|
#error Unknown platform
|
||||||
|
#endif
|
||||||
|
|
||||||
|
- return GURL(kPluginsServerUrl + filename);
|
||||||
|
+ return GURL("about:blank");
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
diff --git a/chrome/browser/safe_browsing/client_side_model_loader.cc b/chrome/browser/safe_browsing/client_side_model_loader.cc
|
||||||
|
--- a/chrome/browser/safe_browsing/client_side_model_loader.cc
|
||||||
|
+++ b/chrome/browser/safe_browsing/client_side_model_loader.cc
|
||||||
|
@@ -34,8 +34,6 @@ namespace safe_browsing {
|
||||||
|
// Model Loader strings
|
||||||
|
const size_t ModelLoader::kMaxModelSizeBytes = 150 * 1024;
|
||||||
|
const int ModelLoader::kClientModelFetchIntervalMs = 3600 * 1000;
|
||||||
|
-const char ModelLoader::kClientModelUrlPrefix[] =
|
||||||
|
- "https://ssl.gstatic.com/safebrowsing/csd/";
|
||||||
|
const char ModelLoader::kClientModelNamePattern[] =
|
||||||
|
"client_model_v5%s_variation_%d.pb";
|
||||||
|
const char ModelLoader::kClientModelFinchExperiment[] =
|
||||||
|
@@ -88,7 +86,7 @@ ModelLoader::ModelLoader(base::Closure update_renderers_callback,
|
||||||
|
net::URLRequestContextGetter* request_context_getter,
|
||||||
|
bool is_extended_reporting)
|
||||||
|
: name_(FillInModelName(is_extended_reporting, GetModelNumber())),
|
||||||
|
- url_(kClientModelUrlPrefix + name_),
|
||||||
|
+ url_("about:blank"),
|
||||||
|
update_renderers_callback_(update_renderers_callback),
|
||||||
|
request_context_getter_(request_context_getter),
|
||||||
|
weak_factory_(this) {
|
||||||
|
@@ -99,7 +97,7 @@ ModelLoader::ModelLoader(base::Closure update_renderers_callback,
|
||||||
|
ModelLoader::ModelLoader(base::Closure update_renderers_callback,
|
||||||
|
const std::string& model_name)
|
||||||
|
: name_(model_name),
|
||||||
|
- url_(kClientModelUrlPrefix + name_),
|
||||||
|
+ url_("about:blank"),
|
||||||
|
update_renderers_callback_(update_renderers_callback),
|
||||||
|
request_context_getter_(NULL),
|
||||||
|
weak_factory_(this) {
|
||||||
|
diff --git a/chrome/browser/safe_browsing/client_side_model_loader.h b/chrome/browser/safe_browsing/client_side_model_loader.h
|
||||||
|
--- a/chrome/browser/safe_browsing/client_side_model_loader.h
|
||||||
|
+++ b/chrome/browser/safe_browsing/client_side_model_loader.h
|
||||||
|
@@ -43,7 +43,6 @@ class ModelLoader : public net::URLFetcherDelegate {
|
||||||
|
static const int kClientModelFetchIntervalMs;
|
||||||
|
static const char kClientModelFinchExperiment[];
|
||||||
|
static const char kClientModelFinchParam[];
|
||||||
|
- static const char kClientModelUrlPrefix[];
|
||||||
|
static const char kClientModelNamePattern[];
|
||||||
|
|
||||||
|
// Constructs a model loader to fetch a model using |request_context_getter|.
|
||||||
|
diff --git a/rlz/lib/financial_ping.cc b/rlz/lib/financial_ping.cc
|
||||||
|
--- a/rlz/lib/financial_ping.cc
|
||||||
|
+++ b/rlz/lib/financial_ping.cc
|
||||||
|
@@ -366,7 +366,7 @@ bool FinancialPing::PingServer(const char* request, std::string* response) {
|
||||||
|
|
||||||
|
// Open network connection.
|
||||||
|
InternetHandle connection_handle = InternetConnectA(inet_handle,
|
||||||
|
- kFinancialServer, kFinancialPort, "", "", INTERNET_SERVICE_HTTP,
|
||||||
|
+ "about:blank", kFinancialPort, "", "", INTERNET_SERVICE_HTTP,
|
||||||
|
INTERNET_FLAG_NO_CACHE_WRITE, 0);
|
||||||
|
if (!connection_handle)
|
||||||
|
return false;
|
||||||
|
@@ -410,7 +410,7 @@ bool FinancialPing::PingServer(const char* request, std::string* response) {
|
||||||
|
return true;
|
||||||
|
#else
|
||||||
|
std::string url =
|
||||||
|
- base::StringPrintf("https://%s%s", kFinancialServer, request);
|
||||||
|
+ base::StringPrintf("about:blank");
|
||||||
|
|
||||||
|
// Use a waitable event to cause this function to block, to match the
|
||||||
|
// wininet implementation.
|
||||||
|
diff --git a/rlz/lib/lib_values.cc b/rlz/lib/lib_values.cc
|
||||||
|
--- a/rlz/lib/lib_values.cc
|
||||||
|
+++ b/rlz/lib/lib_values.cc
|
||||||
|
@@ -41,7 +41,6 @@ const char kSetDccResponseVariable[] = "set_dcc";
|
||||||
|
//
|
||||||
|
|
||||||
|
const char kFinancialPingPath[] = "/tools/pso/ping";
|
||||||
|
-const char kFinancialServer[] = "clients1.google.com";
|
||||||
|
const int kFinancialPort = 443;
|
||||||
|
|
||||||
|
// Ping times in 100-nanosecond intervals.
|
||||||
|
diff --git a/rlz/lib/lib_values.h b/rlz/lib/lib_values.h
|
||||||
|
--- a/rlz/lib/lib_values.h
|
||||||
|
+++ b/rlz/lib/lib_values.h
|
||||||
|
@@ -72,7 +72,6 @@ extern const char kSetDccResponseVariable[];
|
||||||
|
//
|
||||||
|
|
||||||
|
extern const char kFinancialPingPath[];
|
||||||
|
-extern const char kFinancialServer[];
|
||||||
|
|
||||||
|
extern const int kFinancialPort;
|
||||||
|
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Mon Feb 12 21:28:53 2018 +0100
|
||||||
|
|
||||||
|
ungoogled-chromium: Disable translate
|
||||||
|
Disable Google Translate integration
|
||||||
|
|
||||||
|
diff --git a/components/translate/content/renderer/translate_helper.cc b/components/translate/content/renderer/translate_helper.cc
|
||||||
|
--- a/components/translate/content/renderer/translate_helper.cc
|
||||||
|
+++ b/components/translate/content/renderer/translate_helper.cc
|
||||||
|
@@ -74,7 +74,9 @@ TranslateHelper::TranslateHelper(content::RenderFrame* render_frame,
|
||||||
|
world_id_(world_id),
|
||||||
|
extension_scheme_(extension_scheme),
|
||||||
|
binding_(this),
|
||||||
|
- weak_method_factory_(this) {}
|
||||||
|
+ weak_method_factory_(this) {
|
||||||
|
+ CancelPendingTranslation();
|
||||||
|
+}
|
||||||
|
|
||||||
|
TranslateHelper::~TranslateHelper() {
|
||||||
|
}
|
||||||
|
diff --git a/components/translate/core/browser/translate_manager.cc b/components/translate/core/browser/translate_manager.cc
|
||||||
|
--- a/components/translate/core/browser/translate_manager.cc
|
||||||
|
+++ b/components/translate/core/browser/translate_manager.cc
|
||||||
|
@@ -102,7 +102,7 @@ void TranslateManager::InitiateTranslation(const std::string& page_lang) {
|
||||||
|
if (net::NetworkChangeNotifier::IsOffline())
|
||||||
|
return;
|
||||||
|
|
||||||
|
- if (!ignore_missing_key_for_testing_ && !::google_apis::HasKeysConfigured()) {
|
||||||
|
+ if (true) {
|
||||||
|
// Without an API key, translate won't work, so don't offer to translate in
|
||||||
|
// the first place. Leave prefs::kOfferTranslateEnabled on, though, because
|
||||||
|
// that settings syncs and we don't want to turn off translate everywhere
|
||||||
|
diff --git a/components/translate/core/browser/translate_script.cc b/components/translate/core/browser/translate_script.cc
|
||||||
|
--- a/components/translate/core/browser/translate_script.cc
|
||||||
|
+++ b/components/translate/core/browser/translate_script.cc
|
||||||
|
@@ -149,9 +149,8 @@ void TranslateScript::OnScriptFetchComplete(
|
||||||
|
base::StringAppendF(&data_, "var serverParams = '%s';\n",
|
||||||
|
server_params.c_str());
|
||||||
|
|
||||||
|
- GURL security_origin = translate::GetTranslateSecurityOrigin();
|
||||||
|
base::StringAppendF(
|
||||||
|
- &data_, "var securityOrigin = '%s';", security_origin.spec().c_str());
|
||||||
|
+ &data_, "var securityOrigin = '';");
|
||||||
|
|
||||||
|
// Append embedded translate.js and a remote element library.
|
||||||
|
base::StringPiece str =
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Mon Feb 12 21:29:30 2018 +0100
|
||||||
|
|
||||||
|
ungoogled-chromium: Disable profile avatar downloading
|
||||||
|
Stop downloading profile avatar
|
||||||
|
|
||||||
|
diff --git a/chrome/browser/profiles/profile_avatar_downloader.cc b/chrome/browser/profiles/profile_avatar_downloader.cc
|
||||||
|
--- a/chrome/browser/profiles/profile_avatar_downloader.cc
|
||||||
|
+++ b/chrome/browser/profiles/profile_avatar_downloader.cc
|
||||||
|
@@ -16,19 +16,13 @@
|
||||||
|
#include "net/traffic_annotation/network_traffic_annotation.h"
|
||||||
|
#include "ui/gfx/image/image.h"
|
||||||
|
|
||||||
|
-namespace {
|
||||||
|
-const char kHighResAvatarDownloadUrlPrefix[] =
|
||||||
|
- "https://www.gstatic.com/chrome/profile_avatars/";
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
ProfileAvatarDownloader::ProfileAvatarDownloader(
|
||||||
|
size_t icon_index,
|
||||||
|
const FetchCompleteCallback& callback)
|
||||||
|
: icon_index_(icon_index),
|
||||||
|
callback_(callback) {
|
||||||
|
DCHECK(!callback_.is_null());
|
||||||
|
- GURL url(std::string(kHighResAvatarDownloadUrlPrefix) +
|
||||||
|
- profiles::GetDefaultAvatarIconFileNameAtIndex(icon_index));
|
||||||
|
+ GURL url(std::string("about:blank"));
|
||||||
|
net::NetworkTrafficAnnotationTag traffic_annotation =
|
||||||
|
net::DefineNetworkTrafficAnnotation("profile_avatar", R"(
|
||||||
|
semantics {
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Mon Feb 12 21:30:30 2018 +0100
|
||||||
|
|
||||||
|
ungoogled-chromium: Disable intranet redirect detector
|
||||||
|
Disables the intranet redirect detector. It generates extra DNS requests and the functionality using this is disabled
|
||||||
|
See this page for more information: https://mikewest.org/2012/02/chrome-connects-to-three-random-domains-at-startup
|
||||||
|
|
||||||
|
diff --git a/chrome/browser/intranet_redirect_detector.cc b/chrome/browser/intranet_redirect_detector.cc
|
||||||
|
--- a/chrome/browser/intranet_redirect_detector.cc
|
||||||
|
+++ b/chrome/browser/intranet_redirect_detector.cc
|
||||||
|
@@ -72,9 +72,7 @@ void IntranetRedirectDetector::FinishSleep() {
|
||||||
|
fetchers_.clear();
|
||||||
|
resulting_origins_.clear();
|
||||||
|
|
||||||
|
- const base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess();
|
||||||
|
- if (cmd_line->HasSwitch(switches::kDisableBackgroundNetworking))
|
||||||
|
- return;
|
||||||
|
+ return;
|
||||||
|
|
||||||
|
DCHECK(fetchers_.empty() && resulting_origins_.empty());
|
||||||
|
|
||||||
@@ -0,0 +1,363 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Mon Feb 12 21:36:33 2018 +0100
|
||||||
|
|
||||||
|
ungoogled-chromium: Disable Google host detection
|
||||||
|
Disables various detections of Google hosts and functionality specific to them
|
||||||
|
|
||||||
|
diff --git a/chrome/browser/page_load_metrics/page_load_metrics_util.cc b/chrome/browser/page_load_metrics/page_load_metrics_util.cc
|
||||||
|
--- a/chrome/browser/page_load_metrics/page_load_metrics_util.cc
|
||||||
|
+++ b/chrome/browser/page_load_metrics/page_load_metrics_util.cc
|
||||||
|
@@ -169,9 +169,7 @@ bool DidObserveLoadingBehaviorInAnyFrame(
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IsGoogleSearchHostname(const GURL& url) {
|
||||||
|
- base::Optional<std::string> result =
|
||||||
|
- page_load_metrics::GetGoogleHostnamePrefix(url);
|
||||||
|
- return result && result.value() == "www";
|
||||||
|
+ return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IsGoogleSearchResultUrl(const GURL& url) {
|
||||||
|
diff --git a/chrome/common/page_load_metrics/page_load_metrics_util.cc b/chrome/common/page_load_metrics/page_load_metrics_util.cc
|
||||||
|
--- a/chrome/common/page_load_metrics/page_load_metrics_util.cc
|
||||||
|
+++ b/chrome/common/page_load_metrics/page_load_metrics_util.cc
|
||||||
|
@@ -12,38 +12,7 @@
|
||||||
|
namespace page_load_metrics {
|
||||||
|
|
||||||
|
base::Optional<std::string> GetGoogleHostnamePrefix(const GURL& url) {
|
||||||
|
- const size_t registry_length =
|
||||||
|
- net::registry_controlled_domains::GetRegistryLength(
|
||||||
|
- url,
|
||||||
|
-
|
||||||
|
- // Do not include unknown registries (registries that don't have any
|
||||||
|
- // matches in effective TLD names).
|
||||||
|
- net::registry_controlled_domains::EXCLUDE_UNKNOWN_REGISTRIES,
|
||||||
|
-
|
||||||
|
- // Do not include private registries, such as appspot.com. We don't
|
||||||
|
- // want to match URLs like www.google.appspot.com.
|
||||||
|
- net::registry_controlled_domains::EXCLUDE_PRIVATE_REGISTRIES);
|
||||||
|
-
|
||||||
|
- const base::StringPiece hostname = url.host_piece();
|
||||||
|
- if (registry_length == 0 || registry_length == std::string::npos ||
|
||||||
|
- registry_length >= hostname.length()) {
|
||||||
|
- return base::Optional<std::string>();
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- // Removes the tld and the preceding dot.
|
||||||
|
- const base::StringPiece hostname_minus_registry =
|
||||||
|
- hostname.substr(0, hostname.length() - (registry_length + 1));
|
||||||
|
-
|
||||||
|
- if (hostname_minus_registry == "google")
|
||||||
|
- return std::string("");
|
||||||
|
-
|
||||||
|
- if (!base::EndsWith(hostname_minus_registry, ".google",
|
||||||
|
- base::CompareCase::INSENSITIVE_ASCII)) {
|
||||||
|
- return base::Optional<std::string>();
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- return std::string(hostname_minus_registry.substr(
|
||||||
|
- 0, hostname_minus_registry.length() - strlen(".google")));
|
||||||
|
+ return base::Optional<std::string>();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IsGoogleHostname(const GURL& url) {
|
||||||
|
diff --git a/components/google/core/browser/google_util.cc b/components/google/core/browser/google_util.cc
|
||||||
|
--- a/components/google/core/browser/google_util.cc
|
||||||
|
+++ b/components/google/core/browser/google_util.cc
|
||||||
|
@@ -41,118 +41,16 @@ namespace {
|
||||||
|
|
||||||
|
bool gUseMockLinkDoctorBaseURLForTesting = false;
|
||||||
|
|
||||||
|
-bool IsPathHomePageBase(base::StringPiece path) {
|
||||||
|
- return (path == "/") || (path == "/webhp");
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-// Removes a single trailing dot if present in |host|.
|
||||||
|
-void StripTrailingDot(base::StringPiece* host) {
|
||||||
|
- if (host->ends_with("."))
|
||||||
|
- host->remove_suffix(1);
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-// True if the given canonical |host| is "[www.]<domain_in_lower_case>.<TLD>"
|
||||||
|
-// with a valid TLD. If |subdomain_permission| is ALLOW_SUBDOMAIN, we check
|
||||||
|
-// against host "*.<domain_in_lower_case>.<TLD>" instead. Will return the TLD
|
||||||
|
-// string in |tld|, if specified and the |host| can be parsed.
|
||||||
|
-bool IsValidHostName(base::StringPiece host,
|
||||||
|
- base::StringPiece domain_in_lower_case,
|
||||||
|
- SubdomainPermission subdomain_permission,
|
||||||
|
- base::StringPiece* tld) {
|
||||||
|
- // Fast path to avoid searching the registry set.
|
||||||
|
- if (host.find(domain_in_lower_case) == base::StringPiece::npos)
|
||||||
|
- return false;
|
||||||
|
-
|
||||||
|
- size_t tld_length =
|
||||||
|
- net::registry_controlled_domains::GetCanonicalHostRegistryLength(
|
||||||
|
- host, net::registry_controlled_domains::EXCLUDE_UNKNOWN_REGISTRIES,
|
||||||
|
- net::registry_controlled_domains::EXCLUDE_PRIVATE_REGISTRIES);
|
||||||
|
- if ((tld_length == 0) || (tld_length == std::string::npos))
|
||||||
|
- return false;
|
||||||
|
-
|
||||||
|
- // Removes the tld and the preceding dot.
|
||||||
|
- base::StringPiece host_minus_tld =
|
||||||
|
- host.substr(0, host.length() - tld_length - 1);
|
||||||
|
-
|
||||||
|
- if (tld)
|
||||||
|
- *tld = host.substr(host.length() - tld_length);
|
||||||
|
-
|
||||||
|
- if (base::LowerCaseEqualsASCII(host_minus_tld, domain_in_lower_case))
|
||||||
|
- return true;
|
||||||
|
-
|
||||||
|
- if (subdomain_permission == ALLOW_SUBDOMAIN) {
|
||||||
|
- std::string dot_domain(".");
|
||||||
|
- domain_in_lower_case.AppendToString(&dot_domain);
|
||||||
|
- return base::EndsWith(host_minus_tld, dot_domain,
|
||||||
|
- base::CompareCase::INSENSITIVE_ASCII);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- std::string www_domain("www.");
|
||||||
|
- domain_in_lower_case.AppendToString(&www_domain);
|
||||||
|
- return base::LowerCaseEqualsASCII(host_minus_tld, www_domain);
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-// True if |url| is a valid URL with HTTP or HTTPS scheme. If |port_permission|
|
||||||
|
-// is DISALLOW_NON_STANDARD_PORTS, this also requires |url| to use the standard
|
||||||
|
-// port for its scheme (80 for HTTP, 443 for HTTPS).
|
||||||
|
-bool IsValidURL(const GURL& url, PortPermission port_permission) {
|
||||||
|
- return url.is_valid() && url.SchemeIsHTTPOrHTTPS() &&
|
||||||
|
- (url.port().empty() || (port_permission == ALLOW_NON_STANDARD_PORTS));
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-bool IsCanonicalHostGoogleHostname(base::StringPiece canonical_host,
|
||||||
|
- SubdomainPermission subdomain_permission) {
|
||||||
|
- const GURL& base_url(CommandLineGoogleBaseURL());
|
||||||
|
- if (base_url.is_valid() && (canonical_host == base_url.host_piece()))
|
||||||
|
- return true;
|
||||||
|
-
|
||||||
|
- base::StringPiece tld;
|
||||||
|
- if (!IsValidHostName(canonical_host, "google", subdomain_permission, &tld))
|
||||||
|
- return false;
|
||||||
|
-
|
||||||
|
- // Remove the trailing dot from tld if present, as for google domain it's the
|
||||||
|
- // same page.
|
||||||
|
- StripTrailingDot(&tld);
|
||||||
|
-
|
||||||
|
- CR_DEFINE_STATIC_LOCAL(std::set<std::string>, google_tlds,
|
||||||
|
- ({GOOGLE_TLD_LIST}));
|
||||||
|
- return base::ContainsKey(google_tlds, tld.as_string());
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-// True if |url| is a valid URL with a host that is in the static list of
|
||||||
|
-// Google subdomains for google search, and an HTTP or HTTPS scheme. Requires
|
||||||
|
-// |url| to use the standard port for its scheme (80 for HTTP, 443 for HTTPS).
|
||||||
|
-bool IsGoogleSearchSubdomainUrl(const GURL& url) {
|
||||||
|
- if (!IsValidURL(url, PortPermission::DISALLOW_NON_STANDARD_PORTS))
|
||||||
|
- return false;
|
||||||
|
-
|
||||||
|
- base::StringPiece host(url.host_piece());
|
||||||
|
- StripTrailingDot(&host);
|
||||||
|
-
|
||||||
|
- CR_DEFINE_STATIC_LOCAL(std::set<std::string>, google_subdomains,
|
||||||
|
- ({"ipv4.google.com", "ipv6.google.com"}));
|
||||||
|
-
|
||||||
|
- return base::ContainsKey(google_subdomains, host.as_string());
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
} // namespace
|
||||||
|
|
||||||
|
// Global functions -----------------------------------------------------------
|
||||||
|
|
||||||
|
bool HasGoogleSearchQueryParam(base::StringPiece str) {
|
||||||
|
- url::Component query(0, static_cast<int>(str.length())), key, value;
|
||||||
|
- while (url::ExtractQueryKeyValue(str.data(), &query, &key, &value)) {
|
||||||
|
- base::StringPiece key_str = str.substr(key.begin, key.len);
|
||||||
|
- if (key_str == "q" || key_str == "as_q")
|
||||||
|
- return true;
|
||||||
|
- }
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
GURL LinkDoctorBaseURL() {
|
||||||
|
- if (gUseMockLinkDoctorBaseURLForTesting)
|
||||||
|
- return GURL("http://mock.linkdoctor.url/for?testing");
|
||||||
|
- return GURL(LINKDOCTOR_SERVER_REQUEST_URL);
|
||||||
|
+ return GURL();
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetMockLinkDoctorBaseURLForTesting() {
|
||||||
|
@@ -166,119 +64,50 @@ std::string GetGoogleLocale(const std::string& application_locale) {
|
||||||
|
|
||||||
|
GURL AppendGoogleLocaleParam(const GURL& url,
|
||||||
|
const std::string& application_locale) {
|
||||||
|
- return net::AppendQueryParameter(
|
||||||
|
- url, "hl", GetGoogleLocale(application_locale));
|
||||||
|
+ return url;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string GetGoogleCountryCode(const GURL& google_homepage_url) {
|
||||||
|
- base::StringPiece google_hostname = google_homepage_url.host_piece();
|
||||||
|
- // TODO(igorcov): This needs a fix for case when the host has a trailing dot,
|
||||||
|
- // like "google.com./". https://crbug.com/720295.
|
||||||
|
- const size_t last_dot = google_hostname.find_last_of('.');
|
||||||
|
- DCHECK_NE(std::string::npos, last_dot);
|
||||||
|
- base::StringPiece country_code = google_hostname.substr(last_dot + 1);
|
||||||
|
- // Assume the com TLD implies the US.
|
||||||
|
- if (country_code == "com")
|
||||||
|
- return "us";
|
||||||
|
- // Google uses the Unicode Common Locale Data Repository (CLDR), and the CLDR
|
||||||
|
- // code for the UK is "gb".
|
||||||
|
- if (country_code == "uk")
|
||||||
|
- return "gb";
|
||||||
|
- // Catalonia does not have a CLDR country code, since it's a region in Spain,
|
||||||
|
- // so use Spain instead.
|
||||||
|
- if (country_code == "cat")
|
||||||
|
- return "es";
|
||||||
|
- return country_code.as_string();
|
||||||
|
+ return "nolocale";
|
||||||
|
}
|
||||||
|
|
||||||
|
GURL GetGoogleSearchURL(const GURL& google_homepage_url) {
|
||||||
|
- // To transform the homepage URL into the corresponding search URL, add the
|
||||||
|
- // "search" and the "q=" query string.
|
||||||
|
- GURL::Replacements replacements;
|
||||||
|
- replacements.SetPathStr("search");
|
||||||
|
- replacements.SetQueryStr("q=");
|
||||||
|
- return google_homepage_url.ReplaceComponents(replacements);
|
||||||
|
+ return google_homepage_url;
|
||||||
|
}
|
||||||
|
|
||||||
|
const GURL& CommandLineGoogleBaseURL() {
|
||||||
|
- // Unit tests may add command-line flags after the first call to this
|
||||||
|
- // function, so we don't simply initialize a static |base_url| directly and
|
||||||
|
- // then unconditionally return it.
|
||||||
|
- CR_DEFINE_STATIC_LOCAL(std::string, switch_value, ());
|
||||||
|
CR_DEFINE_STATIC_LOCAL(GURL, base_url, ());
|
||||||
|
- std::string current_switch_value(
|
||||||
|
- base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
|
||||||
|
- switches::kGoogleBaseURL));
|
||||||
|
- if (current_switch_value != switch_value) {
|
||||||
|
- switch_value = current_switch_value;
|
||||||
|
- base_url = url_formatter::FixupURL(switch_value, std::string());
|
||||||
|
- if (!base_url.is_valid() || base_url.has_query() || base_url.has_ref())
|
||||||
|
- base_url = GURL();
|
||||||
|
- }
|
||||||
|
+ base_url = GURL();
|
||||||
|
return base_url;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool StartsWithCommandLineGoogleBaseURL(const GURL& url) {
|
||||||
|
- const GURL& base_url(CommandLineGoogleBaseURL());
|
||||||
|
- return base_url.is_valid() &&
|
||||||
|
- base::StartsWith(url.possibly_invalid_spec(), base_url.spec(),
|
||||||
|
- base::CompareCase::SENSITIVE);
|
||||||
|
+ return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IsGoogleHostname(base::StringPiece host,
|
||||||
|
SubdomainPermission subdomain_permission) {
|
||||||
|
- url::CanonHostInfo host_info;
|
||||||
|
- return IsCanonicalHostGoogleHostname(net::CanonicalizeHost(host, &host_info),
|
||||||
|
- subdomain_permission);
|
||||||
|
+ return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IsGoogleDomainUrl(const GURL& url,
|
||||||
|
SubdomainPermission subdomain_permission,
|
||||||
|
PortPermission port_permission) {
|
||||||
|
- return IsValidURL(url, port_permission) &&
|
||||||
|
- IsCanonicalHostGoogleHostname(url.host_piece(), subdomain_permission);
|
||||||
|
+ return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IsGoogleHomePageUrl(const GURL& url) {
|
||||||
|
- // First check to see if this has a Google domain.
|
||||||
|
- if (!IsGoogleDomainUrl(url, DISALLOW_SUBDOMAIN,
|
||||||
|
- DISALLOW_NON_STANDARD_PORTS) &&
|
||||||
|
- !IsGoogleSearchSubdomainUrl(url)) {
|
||||||
|
- return false;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- // Make sure the path is a known home page path.
|
||||||
|
- base::StringPiece path(url.path_piece());
|
||||||
|
- return IsPathHomePageBase(path) ||
|
||||||
|
- base::StartsWith(path, "/ig", base::CompareCase::INSENSITIVE_ASCII);
|
||||||
|
+ return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IsGoogleSearchUrl(const GURL& url) {
|
||||||
|
- // First check to see if this has a Google domain.
|
||||||
|
- if (!IsGoogleDomainUrl(url, DISALLOW_SUBDOMAIN,
|
||||||
|
- DISALLOW_NON_STANDARD_PORTS) &&
|
||||||
|
- !IsGoogleSearchSubdomainUrl(url)) {
|
||||||
|
- return false;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- // Make sure the path is a known search path.
|
||||||
|
- base::StringPiece path(url.path_piece());
|
||||||
|
- bool is_home_page_base = IsPathHomePageBase(path);
|
||||||
|
- if (!is_home_page_base && (path != "/search"))
|
||||||
|
- return false;
|
||||||
|
-
|
||||||
|
- // Check for query parameter in URL parameter and hash fragment, depending on
|
||||||
|
- // the path type.
|
||||||
|
- return HasGoogleSearchQueryParam(url.ref_piece()) ||
|
||||||
|
- (!is_home_page_base && HasGoogleSearchQueryParam(url.query_piece()));
|
||||||
|
+ return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IsYoutubeDomainUrl(const GURL& url,
|
||||||
|
SubdomainPermission subdomain_permission,
|
||||||
|
PortPermission port_permission) {
|
||||||
|
- return IsValidURL(url, port_permission) &&
|
||||||
|
- IsValidHostName(url.host_piece(), "youtube", subdomain_permission,
|
||||||
|
- nullptr);
|
||||||
|
+ return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const std::vector<std::string>& GetGoogleRegistrableDomains() {
|
||||||
|
diff --git a/components/search_engines/template_url.cc b/components/search_engines/template_url.cc
|
||||||
|
--- a/components/search_engines/template_url.cc
|
||||||
|
+++ b/components/search_engines/template_url.cc
|
||||||
|
@@ -510,11 +510,6 @@ base::string16 TemplateURLRef::SearchTermToString16(
|
||||||
|
bool TemplateURLRef::HasGoogleBaseURLs(
|
||||||
|
const SearchTermsData& search_terms_data) const {
|
||||||
|
ParseIfNecessary(search_terms_data);
|
||||||
|
- for (size_t i = 0; i < replacements_.size(); ++i) {
|
||||||
|
- if ((replacements_[i].type == GOOGLE_BASE_URL) ||
|
||||||
|
- (replacements_[i].type == GOOGLE_BASE_SUGGEST_URL))
|
||||||
|
- return true;
|
||||||
|
- }
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/net/base/url_util.cc b/net/base/url_util.cc
|
||||||
|
--- a/net/base/url_util.cc
|
||||||
|
+++ b/net/base/url_util.cc
|
||||||
|
@@ -397,28 +397,6 @@ void GetIdentityFromURL(const GURL& url,
|
||||||
|
}
|
||||||
|
|
||||||
|
bool HasGoogleHost(const GURL& url) {
|
||||||
|
- static const char* kGoogleHostSuffixes[] = {
|
||||||
|
- ".google.com",
|
||||||
|
- ".youtube.com",
|
||||||
|
- ".gmail.com",
|
||||||
|
- ".doubleclick.net",
|
||||||
|
- ".gstatic.com",
|
||||||
|
- ".googlevideo.com",
|
||||||
|
- ".googleusercontent.com",
|
||||||
|
- ".googlesyndication.com",
|
||||||
|
- ".google-analytics.com",
|
||||||
|
- ".googleadservices.com",
|
||||||
|
- ".googleapis.com",
|
||||||
|
- ".ytimg.com",
|
||||||
|
- };
|
||||||
|
- base::StringPiece host = url.host_piece();
|
||||||
|
- for (const char* suffix : kGoogleHostSuffixes) {
|
||||||
|
- // Here it's possible to get away with faster case-sensitive comparisons
|
||||||
|
- // because the list above is all lowercase, and a GURL's host name will
|
||||||
|
- // always be canonicalized to lowercase as well.
|
||||||
|
- if (base::EndsWith(host, suffix, base::CompareCase::SENSITIVE))
|
||||||
|
- return true;
|
||||||
|
- }
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Mon Feb 12 21:37:10 2018 +0100
|
||||||
|
|
||||||
|
ungoogled-chromium: Disable GCM
|
||||||
|
Disable Google Cloud Messaging (GCM) client
|
||||||
|
|
||||||
|
diff --git a/components/gcm_driver/gcm_client_impl.cc b/components/gcm_driver/gcm_client_impl.cc
|
||||||
|
--- a/components/gcm_driver/gcm_client_impl.cc
|
||||||
|
+++ b/components/gcm_driver/gcm_client_impl.cc
|
||||||
|
@@ -502,6 +502,7 @@ void GCMClientImpl::StartGCM() {
|
||||||
|
}
|
||||||
|
|
||||||
|
void GCMClientImpl::InitializeMCSClient() {
|
||||||
|
+ return;
|
||||||
|
std::vector<GURL> endpoints;
|
||||||
|
endpoints.push_back(gservices_settings_.GetMCSMainEndpoint());
|
||||||
|
GURL fallback_endpoint = gservices_settings_.GetMCSFallbackEndpoint();
|
||||||
|
@@ -699,6 +700,7 @@ void GCMClientImpl::RemoveHeartbeatInterval(const std::string& scope) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void GCMClientImpl::StartCheckin() {
|
||||||
|
+ return;
|
||||||
|
// Make sure no checkin is in progress.
|
||||||
|
if (checkin_request_.get())
|
||||||
|
return;
|
||||||
|
@@ -777,6 +779,7 @@ void GCMClientImpl::SetGServicesSettingsCallback(bool success) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void GCMClientImpl::SchedulePeriodicCheckin() {
|
||||||
|
+ return;
|
||||||
|
// Make sure no checkin is in progress.
|
||||||
|
if (checkin_request_.get() || !device_checkin_info_.accounts_set)
|
||||||
|
return;
|
||||||
@@ -0,0 +1,121 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Mon Feb 12 21:37:52 2018 +0100
|
||||||
|
|
||||||
|
ungoogled-chromium: Disable Gaia
|
||||||
|
Disables Gaia code
|
||||||
|
Somehow it is still activated even without being signed-in: https://github.com/Eloston/ungoogled-chromium/issues/104
|
||||||
|
|
||||||
|
diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resources.grd
|
||||||
|
--- a/chrome/browser/browser_resources.grd
|
||||||
|
+++ b/chrome/browser/browser_resources.grd
|
||||||
|
@@ -301,7 +301,6 @@
|
||||||
|
<include name="IDR_INLINE_LOGIN_HTML" file="resources\inline_login\inline_login.html" flattenhtml="true" allowexternalscript="true" type="BINDATA" />
|
||||||
|
<include name="IDR_INLINE_LOGIN_CSS" file="resources\inline_login\inline_login.css" flattenhtml="true" type="BINDATA" />
|
||||||
|
<include name="IDR_INLINE_LOGIN_JS" file="resources\inline_login\inline_login.js" flattenhtml="true" type="BINDATA" />
|
||||||
|
- <include name="IDR_GAIA_AUTH_AUTHENTICATOR_JS" file="resources\gaia_auth_host\authenticator.js" flattenhtml="true" type="BINDATA" />
|
||||||
|
<include name="IDR_INSPECT_CSS" file="resources\inspect\inspect.css" flattenhtml="true" type="BINDATA" />
|
||||||
|
<include name="IDR_INSPECT_HTML" file="resources\inspect\inspect.html" flattenhtml="true" allowexternalscript="true" type="BINDATA" />
|
||||||
|
<include name="IDR_INSPECT_JS" file="resources\inspect\inspect.js" flattenhtml="true" type="BINDATA" />
|
||||||
|
@@ -437,7 +436,6 @@
|
||||||
|
</if>
|
||||||
|
<include name="IDR_WEBSTORE_MANIFEST" file="resources\webstore_app\manifest.json" type="BINDATA" />
|
||||||
|
<include name="IDR_CRYPTOTOKEN_MANIFEST" file="resources\cryptotoken\manifest.json" type="BINDATA" />
|
||||||
|
- <include name="IDR_GAIA_AUTH_MANIFEST" file="resources\gaia_auth\manifest.json" type="BINDATA" />
|
||||||
|
<if expr="chromeos">
|
||||||
|
<if expr="optimize_webui">
|
||||||
|
<then>
|
||||||
|
diff --git a/chrome/browser/extensions/component_extensions_whitelist/whitelist.cc b/chrome/browser/extensions/component_extensions_whitelist/whitelist.cc
|
||||||
|
--- a/chrome/browser/extensions/component_extensions_whitelist/whitelist.cc
|
||||||
|
+++ b/chrome/browser/extensions/component_extensions_whitelist/whitelist.cc
|
||||||
|
@@ -68,7 +68,6 @@ bool IsComponentExtensionWhitelisted(int manifest_resource_id) {
|
||||||
|
#endif
|
||||||
|
case IDR_CRYPTOTOKEN_MANIFEST:
|
||||||
|
case IDR_FEEDBACK_MANIFEST:
|
||||||
|
- case IDR_GAIA_AUTH_MANIFEST:
|
||||||
|
#if BUILDFLAG(ENABLE_HANGOUT_SERVICES_EXTENSION)
|
||||||
|
case IDR_HANGOUT_SERVICES_MANIFEST:
|
||||||
|
#endif
|
||||||
|
diff --git a/chrome/browser/extensions/signin/gaia_auth_extension_loader.cc b/chrome/browser/extensions/signin/gaia_auth_extension_loader.cc
|
||||||
|
--- a/chrome/browser/extensions/signin/gaia_auth_extension_loader.cc
|
||||||
|
+++ b/chrome/browser/extensions/signin/gaia_auth_extension_loader.cc
|
||||||
|
@@ -42,18 +42,11 @@ extensions::ComponentLoader* GetComponentLoader(BrowserContext* context) {
|
||||||
|
void LoadGaiaAuthExtension(BrowserContext* context) {
|
||||||
|
DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
||||||
|
|
||||||
|
- extensions::ComponentLoader* component_loader = GetComponentLoader(context);
|
||||||
|
const base::CommandLine* command_line =
|
||||||
|
base::CommandLine::ForCurrentProcess();
|
||||||
|
if (command_line->HasSwitch(switches::kAuthExtensionPath)) {
|
||||||
|
- base::FilePath auth_extension_path =
|
||||||
|
- command_line->GetSwitchValuePath(switches::kAuthExtensionPath);
|
||||||
|
- component_loader->Add(IDR_GAIA_AUTH_MANIFEST, auth_extension_path);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
-
|
||||||
|
- component_loader->Add(IDR_GAIA_AUTH_MANIFEST,
|
||||||
|
- base::FilePath(FILE_PATH_LITERAL("gaia_auth")));
|
||||||
|
}
|
||||||
|
|
||||||
|
void UnloadGaiaAuthExtension(BrowserContext* context) {
|
||||||
|
diff --git a/chrome/browser/resources/component_extension_resources.grd b/chrome/browser/resources/component_extension_resources.grd
|
||||||
|
--- a/chrome/browser/resources/component_extension_resources.grd
|
||||||
|
+++ b/chrome/browser/resources/component_extension_resources.grd
|
||||||
|
@@ -40,8 +40,6 @@
|
||||||
|
<include name="IDR_BOOKMARK_MANAGER_BOOKMARK_BMM_JS" file="bookmark_manager/js/bmm.js" type="BINDATA" />
|
||||||
|
<!-- Material Design Bookmarks -->
|
||||||
|
<include name="IDR_COMPONENT_MD_BOOKMARKS_BOOKMARKS_HTML" file="md_bookmarks/bookmarks.html" type="BINDATA" />
|
||||||
|
- <!-- Gaia auth extension -->
|
||||||
|
- <include name="IDR_GAIA_AUTH_SUCCESS" file="gaia_auth/success.html" allowexternalscript="true" type="BINDATA" />
|
||||||
|
<!-- Hangout Services extension, included in Google Chrome builds only. -->
|
||||||
|
<if expr="_google_chrome or enable_hangout_services_extension">
|
||||||
|
<include name="IDR_HANGOUT_SERVICES_BACKGROUND_HTML" file="hangout_services/background.html" type="BINDATA" />
|
||||||
|
diff --git a/chrome/browser/ui/webui/signin/inline_login_ui.cc b/chrome/browser/ui/webui/signin/inline_login_ui.cc
|
||||||
|
--- a/chrome/browser/ui/webui/signin/inline_login_ui.cc
|
||||||
|
+++ b/chrome/browser/ui/webui/signin/inline_login_ui.cc
|
||||||
|
@@ -44,7 +44,6 @@ content::WebUIDataSource* CreateWebUIDataSource() {
|
||||||
|
|
||||||
|
source->AddResourcePath("inline_login.css", IDR_INLINE_LOGIN_CSS);
|
||||||
|
source->AddResourcePath("inline_login.js", IDR_INLINE_LOGIN_JS);
|
||||||
|
- source->AddResourcePath("gaia_auth_host.js", IDR_GAIA_AUTH_AUTHENTICATOR_JS);
|
||||||
|
|
||||||
|
source->AddLocalizedString("title", IDS_CHROME_SIGNIN_TITLE);
|
||||||
|
source->AddLocalizedString(
|
||||||
|
diff --git a/google_apis/gaia/gaia_auth_fetcher.cc b/google_apis/gaia/gaia_auth_fetcher.cc
|
||||||
|
--- a/google_apis/gaia/gaia_auth_fetcher.cc
|
||||||
|
+++ b/google_apis/gaia/gaia_auth_fetcher.cc
|
||||||
|
@@ -219,35 +219,6 @@ void GaiaAuthFetcher::CreateAndStartGaiaFetcher(
|
||||||
|
int load_flags,
|
||||||
|
const net::NetworkTrafficAnnotationTag& traffic_annotation) {
|
||||||
|
DCHECK(!fetch_pending_) << "Tried to fetch two things at once!";
|
||||||
|
- fetcher_ = net::URLFetcher::Create(
|
||||||
|
- 0, gaia_gurl, body.empty() ? net::URLFetcher::GET : net::URLFetcher::POST,
|
||||||
|
- this, traffic_annotation);
|
||||||
|
- fetcher_->SetRequestContext(getter_);
|
||||||
|
- fetcher_->SetUploadData("application/x-www-form-urlencoded", body);
|
||||||
|
- gaia::MarkURLFetcherAsGaia(fetcher_.get());
|
||||||
|
-
|
||||||
|
- VLOG(2) << "Gaia fetcher URL: " << gaia_gurl.spec();
|
||||||
|
- VLOG(2) << "Gaia fetcher headers: " << headers;
|
||||||
|
- VLOG(2) << "Gaia fetcher body: " << body;
|
||||||
|
-
|
||||||
|
- // The Gaia token exchange requests do not require any cookie-based
|
||||||
|
- // identification as part of requests. We suppress sending any cookies to
|
||||||
|
- // maintain a separation between the user's browsing and Chrome's internal
|
||||||
|
- // services. Where such mixing is desired (MergeSession or OAuthLogin), it
|
||||||
|
- // will be done explicitly.
|
||||||
|
- fetcher_->SetLoadFlags(load_flags);
|
||||||
|
-
|
||||||
|
- // Fetchers are sometimes cancelled because a network change was detected,
|
||||||
|
- // especially at startup and after sign-in on ChromeOS. Retrying once should
|
||||||
|
- // be enough in those cases; let the fetcher retry up to 3 times just in case.
|
||||||
|
- // http://crbug.com/163710
|
||||||
|
- fetcher_->SetAutomaticallyRetryOnNetworkChanges(3);
|
||||||
|
-
|
||||||
|
- if (!headers.empty())
|
||||||
|
- fetcher_->SetExtraRequestHeaders(headers);
|
||||||
|
-
|
||||||
|
- fetch_pending_ = true;
|
||||||
|
- fetcher_->Start();
|
||||||
|
}
|
||||||
|
|
||||||
|
// static
|
||||||
@@ -0,0 +1,166 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Mon Feb 12 21:45:21 2018 +0100
|
||||||
|
|
||||||
|
ungoogled-chromium: Clear HTTP cache menu item
|
||||||
|
Adds a menu item under "More tools" to clear the HTTP authentication cache on demand
|
||||||
|
|
||||||
|
diff --git a/chrome/app/chrome_command_ids.h b/chrome/app/chrome_command_ids.h
|
||||||
|
--- a/chrome/app/chrome_command_ids.h
|
||||||
|
+++ b/chrome/app/chrome_command_ids.h
|
||||||
|
@@ -148,6 +148,7 @@
|
||||||
|
#define IDC_DEV_TOOLS_INSPECT 40023
|
||||||
|
#define IDC_UPGRADE_DIALOG 40024
|
||||||
|
#define IDC_VIEW_INCOMPATIBILITIES 40025
|
||||||
|
+#define IDC_CLEAR_HTTP_AUTH_CACHE 40026
|
||||||
|
#define IDC_SHOW_KEYBOARD_OVERLAY 40027
|
||||||
|
#define IDC_PROFILING_ENABLED 40028
|
||||||
|
#define IDC_BOOKMARKS_MENU 40029
|
||||||
|
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
|
||||||
|
--- a/chrome/app/generated_resources.grd
|
||||||
|
+++ b/chrome/app/generated_resources.grd
|
||||||
|
@@ -1067,6 +1067,9 @@ are declared in build/common.gypi.
|
||||||
|
<message name="IDS_CLEAR_BROWSING_DATA" desc="The text label for the menu item for clearing of browsing data">
|
||||||
|
&Clear browsing data...
|
||||||
|
</message>
|
||||||
|
+ <message name="IDS_CLEAR_HTTP_AUTH_CACHE" desc="The text label for the menu item for clearing the HTTP authentication cache">
|
||||||
|
+ Clear &HTTP auth cache
|
||||||
|
+ </message>
|
||||||
|
<message name="IDS_SHOW_DOWNLOADS" desc="The show downloads menu in the app menu">
|
||||||
|
&Downloads
|
||||||
|
</message>
|
||||||
|
@@ -1105,6 +1108,9 @@ are declared in build/common.gypi.
|
||||||
|
<message name="IDS_CLEAR_BROWSING_DATA" desc="In Title Case: The text label for the menu item for clearing of browsing data">
|
||||||
|
&Clear Browsing Data...
|
||||||
|
</message>
|
||||||
|
+ <message name="IDS_CLEAR_HTTP_AUTH_CACHE" desc="In Title Case: The text label for the menu item for clearing the HTTP authentication cache">
|
||||||
|
+ Clear &HTTP Auth Cache
|
||||||
|
+ </message>
|
||||||
|
<message name="IDS_SHOW_DOWNLOADS" desc="In Title Case: The show downloads menu in the app menu">
|
||||||
|
&Downloads
|
||||||
|
</message>
|
||||||
|
diff --git a/chrome/browser/ui/browser_command_controller.cc b/chrome/browser/ui/browser_command_controller.cc
|
||||||
|
--- a/chrome/browser/ui/browser_command_controller.cc
|
||||||
|
+++ b/chrome/browser/ui/browser_command_controller.cc
|
||||||
|
@@ -58,6 +58,9 @@
|
||||||
|
#include "extensions/browser/extension_system.h"
|
||||||
|
#include "printing/features/features.h"
|
||||||
|
#include "ui/events/keycodes/keyboard_codes.h"
|
||||||
|
+#include "net/url_request/url_request_context.h"
|
||||||
|
+#include "net/url_request/url_request_context_getter.h"
|
||||||
|
+#include "net/http/http_transaction_factory.h"
|
||||||
|
|
||||||
|
#if defined(OS_MACOSX)
|
||||||
|
#include "chrome/browser/ui/browser_commands_mac.h"
|
||||||
|
@@ -625,6 +628,9 @@ bool BrowserCommandController::ExecuteCommandWithDisposition(
|
||||||
|
case IDC_CLEAR_BROWSING_DATA:
|
||||||
|
ShowClearBrowsingDataDialog(browser_);
|
||||||
|
break;
|
||||||
|
+ case IDC_CLEAR_HTTP_AUTH_CACHE:
|
||||||
|
+ profile()->GetRequestContext()->GetURLRequestContext()->http_transaction_factory()->GetSession()->http_auth_cache()->Clear();
|
||||||
|
+ break;
|
||||||
|
case IDC_IMPORT_SETTINGS:
|
||||||
|
ShowImportDialog(browser_);
|
||||||
|
break;
|
||||||
|
@@ -867,6 +873,7 @@ void BrowserCommandController::InitCommandState() {
|
||||||
|
!profile()->IsOffTheRecord());
|
||||||
|
command_updater_.UpdateCommandEnabled(IDC_CLEAR_BROWSING_DATA,
|
||||||
|
!guest_session);
|
||||||
|
+ command_updater_.UpdateCommandEnabled(IDC_CLEAR_HTTP_AUTH_CACHE, true);
|
||||||
|
#if defined(OS_CHROMEOS)
|
||||||
|
command_updater_.UpdateCommandEnabled(IDC_TAKE_SCREENSHOT, true);
|
||||||
|
#else
|
||||||
|
diff --git a/chrome/browser/ui/toolbar/app_menu_model.cc b/chrome/browser/ui/toolbar/app_menu_model.cc
|
||||||
|
--- a/chrome/browser/ui/toolbar/app_menu_model.cc
|
||||||
|
+++ b/chrome/browser/ui/toolbar/app_menu_model.cc
|
||||||
|
@@ -215,6 +215,7 @@ void ToolsMenuModel::Build(Browser* browser) {
|
||||||
|
|
||||||
|
AddSeparator(ui::NORMAL_SEPARATOR);
|
||||||
|
AddItemWithStringId(IDC_CLEAR_BROWSING_DATA, IDS_CLEAR_BROWSING_DATA);
|
||||||
|
+ AddItemWithStringId(IDC_CLEAR_HTTP_AUTH_CACHE, IDS_CLEAR_HTTP_AUTH_CACHE);
|
||||||
|
AddItemWithStringId(IDC_MANAGE_EXTENSIONS, IDS_SHOW_EXTENSIONS);
|
||||||
|
if (chrome::CanOpenTaskManager())
|
||||||
|
AddItemWithStringId(IDC_TASK_MANAGER, IDS_TASK_MANAGER);
|
||||||
|
@@ -475,6 +476,13 @@ void AppMenuModel::LogMenuMetrics(int command_id) {
|
||||||
|
}
|
||||||
|
LogMenuAction(MENU_ACTION_CLEAR_BROWSING_DATA);
|
||||||
|
break;
|
||||||
|
+ case IDC_CLEAR_HTTP_AUTH_CACHE:
|
||||||
|
+ if (!uma_action_recorded_) {
|
||||||
|
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.ClearHttpAuthCache",
|
||||||
|
+ delta);
|
||||||
|
+ }
|
||||||
|
+ LogMenuAction(MENU_ACTION_CLEAR_HTTP_AUTH_CACHE);
|
||||||
|
+ break;
|
||||||
|
case IDC_VIEW_SOURCE:
|
||||||
|
if (!uma_action_recorded_)
|
||||||
|
UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.ViewSource", delta);
|
||||||
|
diff --git a/chrome/browser/ui/toolbar/app_menu_model.h b/chrome/browser/ui/toolbar/app_menu_model.h
|
||||||
|
--- a/chrome/browser/ui/toolbar/app_menu_model.h
|
||||||
|
+++ b/chrome/browser/ui/toolbar/app_menu_model.h
|
||||||
|
@@ -76,6 +76,7 @@ enum AppMenuAction {
|
||||||
|
MENU_ACTION_OPEN_IN_CHROME = 48,
|
||||||
|
MENU_ACTION_SITE_SETTINGS = 49,
|
||||||
|
MENU_ACTION_APP_INFO = 50,
|
||||||
|
+ MENU_ACTION_CLEAR_HTTP_AUTH_CACHE = 51,
|
||||||
|
LIMIT_MENU_ACTION
|
||||||
|
};
|
||||||
|
|
||||||
|
diff --git a/chrome/browser/ui/views/frame/global_menu_bar_x11.cc b/chrome/browser/ui/views/frame/global_menu_bar_x11.cc
|
||||||
|
--- a/chrome/browser/ui/views/frame/global_menu_bar_x11.cc
|
||||||
|
+++ b/chrome/browser/ui/views/frame/global_menu_bar_x11.cc
|
||||||
|
@@ -225,6 +225,7 @@ GlobalMenuBarCommand tools_menu[] = {
|
||||||
|
|
||||||
|
{IDS_TASK_MANAGER, IDC_TASK_MANAGER},
|
||||||
|
{IDS_CLEAR_BROWSING_DATA, IDC_CLEAR_BROWSING_DATA},
|
||||||
|
+ {IDS_CLEAR_HTTP_AUTH_CACHE, IDC_CLEAR_HTTP_AUTH_CACHE},
|
||||||
|
|
||||||
|
{MENU_SEPARATOR, MENU_SEPARATOR},
|
||||||
|
|
||||||
|
diff --git a/net/http/http_auth_cache.cc b/net/http/http_auth_cache.cc
|
||||||
|
--- a/net/http/http_auth_cache.cc
|
||||||
|
+++ b/net/http/http_auth_cache.cc
|
||||||
|
@@ -250,6 +250,10 @@ bool HttpAuthCache::Remove(const GURL& origin,
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
+void HttpAuthCache::Clear() {
|
||||||
|
+ entries_.clear();
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
void HttpAuthCache::ClearEntriesAddedWithin(base::TimeDelta duration) {
|
||||||
|
base::TimeTicks begin_time = base::TimeTicks::Now() - duration;
|
||||||
|
base::EraseIf(entries_, [begin_time](const Entry& entry) {
|
||||||
|
diff --git a/net/http/http_auth_cache.h b/net/http/http_auth_cache.h
|
||||||
|
--- a/net/http/http_auth_cache.h
|
||||||
|
+++ b/net/http/http_auth_cache.h
|
||||||
|
@@ -166,6 +166,8 @@ class NET_EXPORT HttpAuthCache {
|
||||||
|
HttpAuth::Scheme scheme,
|
||||||
|
const AuthCredentials& credentials);
|
||||||
|
|
||||||
|
+ void Clear();
|
||||||
|
+
|
||||||
|
// Clears cache entries created within |duration| of base::TimeTicks::Now().
|
||||||
|
void ClearEntriesAddedWithin(base::TimeDelta duration);
|
||||||
|
|
||||||
|
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
|
||||||
|
--- a/tools/metrics/histograms/enums.xml
|
||||||
|
+++ b/tools/metrics/histograms/enums.xml
|
||||||
|
@@ -46546,6 +46546,7 @@ Called by update_traffic_annotation_histograms.py.-->
|
||||||
|
<int value="48" label="Open in Chrome"/>
|
||||||
|
<int value="49" label="Site Settings"/>
|
||||||
|
<int value="50" label="App Info"/>
|
||||||
|
+ <int value="51" label="Clear HTTP auth cache"/>
|
||||||
|
</enum>
|
||||||
|
|
||||||
|
<enum name="XFrameOptions">
|
||||||
|
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
|
||||||
|
--- a/tools/metrics/histograms/histograms.xml
|
||||||
|
+++ b/tools/metrics/histograms/histograms.xml
|
||||||
|
@@ -103687,6 +103687,7 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
|
||||||
|
<suffix name="Overestimate"
|
||||||
|
label="Tracks when the compositor's estimates were too high and by how
|
||||||
|
much."/>
|
||||||
|
+ <suffix name="ClearHttpAuthCache" label="Clear HTTP authentication cache"/>
|
||||||
|
<suffix name="Underestimate"
|
||||||
|
label="Tracks when the compositor's estimates were too low and by how
|
||||||
|
much."/>
|
||||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,70 @@
|
|||||||
|
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||||
|
Date: Sun Feb 18 22:15:25 2018 +0100
|
||||||
|
|
||||||
|
Play videos in background
|
||||||
|
Break Page Visibility API and Fullscreen API for youtube.com and vimeo.com
|
||||||
|
Original Javascript code by timdream
|
||||||
|
|
||||||
|
diff --git a/third_party/WebKit/Source/core/dom/BUILD.gn b/third_party/WebKit/Source/core/dom/BUILD.gn
|
||||||
|
--- a/third_party/WebKit/Source/core/dom/BUILD.gn
|
||||||
|
+++ b/third_party/WebKit/Source/core/dom/BUILD.gn
|
||||||
|
@@ -302,6 +302,7 @@ blink_core_sources("dom") {
|
||||||
|
"events/WindowEventContext.cpp",
|
||||||
|
"events/WindowEventContext.h",
|
||||||
|
"extensions/dont-track-me.h",
|
||||||
|
+ "extensions/video-bg-play.h",
|
||||||
|
"ng/flat_tree_traversal_ng.cc",
|
||||||
|
"ng/flat_tree_traversal_ng.h",
|
||||||
|
"trustedtypes/TrustedHTML.cpp",
|
||||||
|
diff --git a/third_party/WebKit/Source/core/dom/Document.cpp b/third_party/WebKit/Source/core/dom/Document.cpp
|
||||||
|
--- a/third_party/WebKit/Source/core/dom/Document.cpp
|
||||||
|
+++ b/third_party/WebKit/Source/core/dom/Document.cpp
|
||||||
|
@@ -222,6 +222,7 @@
|
||||||
|
#include "core/xml_names.h"
|
||||||
|
#include "core/xmlns_names.h"
|
||||||
|
#include "extensions/dont-track-me.h"
|
||||||
|
+#include "extensions/video-bg-play.h"
|
||||||
|
#include "platform/CrossThreadFunctional.h"
|
||||||
|
#include "platform/DateComponents.h"
|
||||||
|
#include "platform/EventDispatchForbiddenScope.h"
|
||||||
|
@@ -5794,17 +5795,25 @@ void Document::FinishedParsing() {
|
||||||
|
|
||||||
|
// determine whether this is a Google search results page
|
||||||
|
const SecurityOrigin *origin = GetSecurityOrigin();
|
||||||
|
- if (origin) {
|
||||||
|
+ auto* bodyElement = body();
|
||||||
|
+ if (origin && bodyElement) {
|
||||||
|
WTF::String domain = origin->Domain();
|
||||||
|
size_t pos = domain.Find(".google.");
|
||||||
|
- auto* bodyElement = body();
|
||||||
|
- if (bodyElement && (pos != WTF::kNotFound) && (domain.length() - pos - 8 < 4)) {
|
||||||
|
+ if ((pos != WTF::kNotFound) && (domain.length() - pos - 8 < 4)) {
|
||||||
|
LOG(INFO) << "injecting dont-track-me Javascript payload";
|
||||||
|
HTMLScriptElement* e = HTMLScriptElement::Create(*this, CreateElementFlags());
|
||||||
|
e->setText(DONT_TRACK_ME_JS);
|
||||||
|
bodyElement->AppendChild(e);
|
||||||
|
}
|
||||||
|
- }
|
||||||
|
+
|
||||||
|
+ // check for eligibility of the video bg fix
|
||||||
|
+ if ((WTF::kNotFound != domain.Find("youtube.com")) || (WTF::kNotFound != domain.Find("vimeo.com"))) {
|
||||||
|
+ LOG(INFO) << "injecting video-bg-play Javascript payload";
|
||||||
|
+ HTMLScriptElement* e = HTMLScriptElement::Create(*this, CreateElementFlags());
|
||||||
|
+ e->setText(VIDEO_BG_PLAY_JS);
|
||||||
|
+ bodyElement->AppendChild(e);
|
||||||
|
+ }
|
||||||
|
+ } // has origin and body element
|
||||||
|
}
|
||||||
|
|
||||||
|
void Document::ElementDataCacheClearTimerFired(TimerBase*) {
|
||||||
|
diff --git a/third_party/WebKit/Source/core/dom/extensions/video-bg-play.h b/third_party/WebKit/Source/core/dom/extensions/video-bg-play.h
|
||||||
|
new file mode 100644
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/third_party/WebKit/Source/core/dom/extensions/video-bg-play.h
|
||||||
|
@@ -0,0 +1,6 @@
|
||||||
|
+#ifndef video_bg_play_h
|
||||||
|
+#define video_bg_play_h
|
||||||
|
+
|
||||||
|
+#define VIDEO_BG_PLAY_JS "'use strict';\n\n/* video background play fix - original version by timdream */\ndocument.videoBGFix = {};\n\n// Page Visibility API\nObject.defineProperties(document.videoBGFix,\n { 'hidden': {value: false}, 'visibilityState': {value: 'visible'} });\n\nwindow.addEventListener(\n 'visibilitychange', evt => evt.stopImmediatePropagation(), true);\nwindow.addEventListener(\n 'blur', evt => evt.stopImmediatePropagation(), true);\n\n// Fullscreen API\nwindow.addEventListener('fullscreenchange', evt => {\n Object.defineProperties(document.videoBGFix,\n { 'fullscreenEnabled': {value: true},\n 'fullscreen': {value: true},\n 'fullscreenElement': {value: document.fullscreenElement.videoBGFix}});\n window.addEventListener(\n 'fullscreenchange', evt => evt.stopImmediatePropagation(), true);\n}, { capture: true, once: true });\n"
|
||||||
|
+
|
||||||
|
+#endif // video_bg_play_h
|
||||||
Reference in New Issue
Block a user