mirror of
https://codeberg.org/kiss-community/repo
synced 2025-03-02 10:29:55 -07:00
testing: Move chromium out of tree.
This commit is contained in:
parent
3aecb17979
commit
9b4a63a0de
@ -1,5 +0,0 @@
|
||||
#!/bin/sh -e
|
||||
|
||||
install -D cdefs.h "$1/usr/include/sys/cdefs.h"
|
||||
install -D queue.h "$1/usr/include/sys/queue.h"
|
||||
install -D tree.h "$1/usr/include/sys/tree.h"
|
@ -1,3 +0,0 @@
|
||||
30bb6d7e0e0b61fcd95d830c376c829a614bce4683c1b97e06c201ec2c6e839a cdefs.h
|
||||
c13407edd0e33be73cae72514cb234f8612e1c0e54401c9448daffd3a240158b queue.h
|
||||
e1e498a79bf160a5766fa560f2b07b206fe89fe21a62600c77d72e00a6992f92 tree.h
|
@ -1,26 +0,0 @@
|
||||
#warning usage of non-standard #include <sys/cdefs.h> is deprecated
|
||||
|
||||
#undef __P
|
||||
#undef __PMT
|
||||
|
||||
#define __P(args) args
|
||||
#define __PMT(args) args
|
||||
|
||||
#define __CONCAT(x,y) x ## y
|
||||
#define __STRING(x) #x
|
||||
|
||||
#ifdef __cplusplus
|
||||
# define __BEGIN_DECLS extern "C" {
|
||||
# define __END_DECLS }
|
||||
#else
|
||||
# define __BEGIN_DECLS
|
||||
# define __END_DECLS
|
||||
#endif
|
||||
|
||||
#if defined(__GNUC__) && !defined(__cplusplus)
|
||||
# define __THROW __attribute__ ((__nothrow__))
|
||||
# define __NTH(fct) __attribute__ ((__nothrow__)) fct
|
||||
#else
|
||||
# define __THROW
|
||||
# define __NTH(fct) fct
|
||||
#endif
|
@ -1,846 +0,0 @@
|
||||
/* $NetBSD: queue.h,v 1.70 2015/11/02 15:21:23 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1991, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)queue.h 8.5 (Berkeley) 8/20/94
|
||||
*/
|
||||
|
||||
#ifndef _SYS_QUEUE_H_
|
||||
#define _SYS_QUEUE_H_
|
||||
|
||||
/*
|
||||
* This file defines five types of data structures: singly-linked lists,
|
||||
* lists, simple queues, tail queues, and circular queues.
|
||||
*
|
||||
* A singly-linked list is headed by a single forward pointer. The
|
||||
* elements are singly linked for minimum space and pointer manipulation
|
||||
* overhead at the expense of O(n) removal for arbitrary elements. New
|
||||
* elements can be added to the list after an existing element or at the
|
||||
* head of the list. Elements being removed from the head of the list
|
||||
* should use the explicit macro for this purpose for optimum
|
||||
* efficiency. A singly-linked list may only be traversed in the forward
|
||||
* direction. Singly-linked lists are ideal for applications with large
|
||||
* datasets and few or no removals or for implementing a LIFO queue.
|
||||
*
|
||||
* A list is headed by a single forward pointer (or an array of forward
|
||||
* pointers for a hash table header). The elements are doubly linked
|
||||
* so that an arbitrary element can be removed without a need to
|
||||
* traverse the list. New elements can be added to the list before
|
||||
* or after an existing element or at the head of the list. A list
|
||||
* may only be traversed in the forward direction.
|
||||
*
|
||||
* A simple queue is headed by a pair of pointers, one the head of the
|
||||
* list and the other to the tail of the list. The elements are singly
|
||||
* linked to save space, so elements can only be removed from the
|
||||
* head of the list. New elements can be added to the list after
|
||||
* an existing element, at the head of the list, or at the end of the
|
||||
* list. A simple queue may only be traversed in the forward direction.
|
||||
*
|
||||
* A tail queue is headed by a pair of pointers, one to the head of the
|
||||
* list and the other to the tail of the list. The elements are doubly
|
||||
* linked so that an arbitrary element can be removed without a need to
|
||||
* traverse the list. New elements can be added to the list before or
|
||||
* after an existing element, at the head of the list, or at the end of
|
||||
* the list. A tail queue may be traversed in either direction.
|
||||
*
|
||||
* A circle queue is headed by a pair of pointers, one to the head of the
|
||||
* list and the other to the tail of the list. The elements are doubly
|
||||
* linked so that an arbitrary element can be removed without a need to
|
||||
* traverse the list. New elements can be added to the list before or after
|
||||
* an existing element, at the head of the list, or at the end of the list.
|
||||
* A circle queue may be traversed in either direction, but has a more
|
||||
* complex end of list detection.
|
||||
*
|
||||
* For details on the use of these macros, see the queue(3) manual page.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include the definition of NULL only on NetBSD because sys/null.h
|
||||
* is not available elsewhere. This conditional makes the header
|
||||
* portable and it can simply be dropped verbatim into any system.
|
||||
* The caveat is that on other systems some other header
|
||||
* must provide NULL before the macros can be used.
|
||||
*/
|
||||
#ifdef __NetBSD__
|
||||
#include <sys/null.h>
|
||||
#endif
|
||||
|
||||
#if defined(QUEUEDEBUG)
|
||||
# if defined(_KERNEL)
|
||||
# define QUEUEDEBUG_ABORT(...) panic(__VA_ARGS__)
|
||||
# else
|
||||
# include <err.h>
|
||||
# define QUEUEDEBUG_ABORT(...) err(1, __VA_ARGS__)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Singly-linked List definitions.
|
||||
*/
|
||||
#define SLIST_HEAD(name, type) \
|
||||
struct name { \
|
||||
struct type *slh_first; /* first element */ \
|
||||
}
|
||||
|
||||
#define SLIST_HEAD_INITIALIZER(head) \
|
||||
{ NULL }
|
||||
|
||||
#define SLIST_ENTRY(type) \
|
||||
struct { \
|
||||
struct type *sle_next; /* next element */ \
|
||||
}
|
||||
|
||||
/*
|
||||
* Singly-linked List access methods.
|
||||
*/
|
||||
#define SLIST_FIRST(head) ((head)->slh_first)
|
||||
#define SLIST_END(head) NULL
|
||||
#define SLIST_EMPTY(head) ((head)->slh_first == NULL)
|
||||
#define SLIST_NEXT(elm, field) ((elm)->field.sle_next)
|
||||
|
||||
#define SLIST_FOREACH(var, head, field) \
|
||||
for((var) = (head)->slh_first; \
|
||||
(var) != SLIST_END(head); \
|
||||
(var) = (var)->field.sle_next)
|
||||
|
||||
#define SLIST_FOREACH_SAFE(var, head, field, tvar) \
|
||||
for ((var) = SLIST_FIRST((head)); \
|
||||
(var) != SLIST_END(head) && \
|
||||
((tvar) = SLIST_NEXT((var), field), 1); \
|
||||
(var) = (tvar))
|
||||
|
||||
/*
|
||||
* Singly-linked List functions.
|
||||
*/
|
||||
#define SLIST_INIT(head) do { \
|
||||
(head)->slh_first = SLIST_END(head); \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define SLIST_INSERT_AFTER(slistelm, elm, field) do { \
|
||||
(elm)->field.sle_next = (slistelm)->field.sle_next; \
|
||||
(slistelm)->field.sle_next = (elm); \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define SLIST_INSERT_HEAD(head, elm, field) do { \
|
||||
(elm)->field.sle_next = (head)->slh_first; \
|
||||
(head)->slh_first = (elm); \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define SLIST_REMOVE_AFTER(slistelm, field) do { \
|
||||
(slistelm)->field.sle_next = \
|
||||
SLIST_NEXT(SLIST_NEXT((slistelm), field), field); \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define SLIST_REMOVE_HEAD(head, field) do { \
|
||||
(head)->slh_first = (head)->slh_first->field.sle_next; \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define SLIST_REMOVE(head, elm, type, field) do { \
|
||||
if ((head)->slh_first == (elm)) { \
|
||||
SLIST_REMOVE_HEAD((head), field); \
|
||||
} \
|
||||
else { \
|
||||
struct type *curelm = (head)->slh_first; \
|
||||
while(curelm->field.sle_next != (elm)) \
|
||||
curelm = curelm->field.sle_next; \
|
||||
curelm->field.sle_next = \
|
||||
curelm->field.sle_next->field.sle_next; \
|
||||
} \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
|
||||
/*
|
||||
* List definitions.
|
||||
*/
|
||||
#define LIST_HEAD(name, type) \
|
||||
struct name { \
|
||||
struct type *lh_first; /* first element */ \
|
||||
}
|
||||
|
||||
#define LIST_HEAD_INITIALIZER(head) \
|
||||
{ NULL }
|
||||
|
||||
#define LIST_ENTRY(type) \
|
||||
struct { \
|
||||
struct type *le_next; /* next element */ \
|
||||
struct type **le_prev; /* address of previous next element */ \
|
||||
}
|
||||
|
||||
/*
|
||||
* List access methods.
|
||||
*/
|
||||
#define LIST_FIRST(head) ((head)->lh_first)
|
||||
#define LIST_END(head) NULL
|
||||
#define LIST_EMPTY(head) ((head)->lh_first == LIST_END(head))
|
||||
#define LIST_NEXT(elm, field) ((elm)->field.le_next)
|
||||
|
||||
#define LIST_FOREACH(var, head, field) \
|
||||
for ((var) = ((head)->lh_first); \
|
||||
(var) != LIST_END(head); \
|
||||
(var) = ((var)->field.le_next))
|
||||
|
||||
#define LIST_FOREACH_SAFE(var, head, field, tvar) \
|
||||
for ((var) = LIST_FIRST((head)); \
|
||||
(var) != LIST_END(head) && \
|
||||
((tvar) = LIST_NEXT((var), field), 1); \
|
||||
(var) = (tvar))
|
||||
|
||||
#define LIST_MOVE(head1, head2) do { \
|
||||
LIST_INIT((head2)); \
|
||||
if (!LIST_EMPTY((head1))) { \
|
||||
(head2)->lh_first = (head1)->lh_first; \
|
||||
LIST_INIT((head1)); \
|
||||
} \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
/*
|
||||
* List functions.
|
||||
*/
|
||||
#if defined(QUEUEDEBUG)
|
||||
#define QUEUEDEBUG_LIST_INSERT_HEAD(head, elm, field) \
|
||||
if ((head)->lh_first && \
|
||||
(head)->lh_first->field.le_prev != &(head)->lh_first) \
|
||||
QUEUEDEBUG_ABORT("LIST_INSERT_HEAD %p %s:%d", (head), \
|
||||
__FILE__, __LINE__);
|
||||
#define QUEUEDEBUG_LIST_OP(elm, field) \
|
||||
if ((elm)->field.le_next && \
|
||||
(elm)->field.le_next->field.le_prev != \
|
||||
&(elm)->field.le_next) \
|
||||
QUEUEDEBUG_ABORT("LIST_* forw %p %s:%d", (elm), \
|
||||
__FILE__, __LINE__); \
|
||||
if (*(elm)->field.le_prev != (elm)) \
|
||||
QUEUEDEBUG_ABORT("LIST_* back %p %s:%d", (elm), \
|
||||
__FILE__, __LINE__);
|
||||
#define QUEUEDEBUG_LIST_POSTREMOVE(elm, field) \
|
||||
(elm)->field.le_next = (void *)1L; \
|
||||
(elm)->field.le_prev = (void *)1L;
|
||||
#else
|
||||
#define QUEUEDEBUG_LIST_INSERT_HEAD(head, elm, field)
|
||||
#define QUEUEDEBUG_LIST_OP(elm, field)
|
||||
#define QUEUEDEBUG_LIST_POSTREMOVE(elm, field)
|
||||
#endif
|
||||
|
||||
#define LIST_INIT(head) do { \
|
||||
(head)->lh_first = LIST_END(head); \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define LIST_INSERT_AFTER(listelm, elm, field) do { \
|
||||
QUEUEDEBUG_LIST_OP((listelm), field) \
|
||||
if (((elm)->field.le_next = (listelm)->field.le_next) != \
|
||||
LIST_END(head)) \
|
||||
(listelm)->field.le_next->field.le_prev = \
|
||||
&(elm)->field.le_next; \
|
||||
(listelm)->field.le_next = (elm); \
|
||||
(elm)->field.le_prev = &(listelm)->field.le_next; \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define LIST_INSERT_BEFORE(listelm, elm, field) do { \
|
||||
QUEUEDEBUG_LIST_OP((listelm), field) \
|
||||
(elm)->field.le_prev = (listelm)->field.le_prev; \
|
||||
(elm)->field.le_next = (listelm); \
|
||||
*(listelm)->field.le_prev = (elm); \
|
||||
(listelm)->field.le_prev = &(elm)->field.le_next; \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define LIST_INSERT_HEAD(head, elm, field) do { \
|
||||
QUEUEDEBUG_LIST_INSERT_HEAD((head), (elm), field) \
|
||||
if (((elm)->field.le_next = (head)->lh_first) != LIST_END(head))\
|
||||
(head)->lh_first->field.le_prev = &(elm)->field.le_next;\
|
||||
(head)->lh_first = (elm); \
|
||||
(elm)->field.le_prev = &(head)->lh_first; \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define LIST_REMOVE(elm, field) do { \
|
||||
QUEUEDEBUG_LIST_OP((elm), field) \
|
||||
if ((elm)->field.le_next != NULL) \
|
||||
(elm)->field.le_next->field.le_prev = \
|
||||
(elm)->field.le_prev; \
|
||||
*(elm)->field.le_prev = (elm)->field.le_next; \
|
||||
QUEUEDEBUG_LIST_POSTREMOVE((elm), field) \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define LIST_REPLACE(elm, elm2, field) do { \
|
||||
if (((elm2)->field.le_next = (elm)->field.le_next) != NULL) \
|
||||
(elm2)->field.le_next->field.le_prev = \
|
||||
&(elm2)->field.le_next; \
|
||||
(elm2)->field.le_prev = (elm)->field.le_prev; \
|
||||
*(elm2)->field.le_prev = (elm2); \
|
||||
QUEUEDEBUG_LIST_POSTREMOVE((elm), field) \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
/*
|
||||
* Simple queue definitions.
|
||||
*/
|
||||
#define SIMPLEQ_HEAD(name, type) \
|
||||
struct name { \
|
||||
struct type *sqh_first; /* first element */ \
|
||||
struct type **sqh_last; /* addr of last next element */ \
|
||||
}
|
||||
|
||||
#define SIMPLEQ_HEAD_INITIALIZER(head) \
|
||||
{ NULL, &(head).sqh_first }
|
||||
|
||||
#define SIMPLEQ_ENTRY(type) \
|
||||
struct { \
|
||||
struct type *sqe_next; /* next element */ \
|
||||
}
|
||||
|
||||
/*
|
||||
* Simple queue access methods.
|
||||
*/
|
||||
#define SIMPLEQ_FIRST(head) ((head)->sqh_first)
|
||||
#define SIMPLEQ_END(head) NULL
|
||||
#define SIMPLEQ_EMPTY(head) ((head)->sqh_first == SIMPLEQ_END(head))
|
||||
#define SIMPLEQ_NEXT(elm, field) ((elm)->field.sqe_next)
|
||||
|
||||
#define SIMPLEQ_FOREACH(var, head, field) \
|
||||
for ((var) = ((head)->sqh_first); \
|
||||
(var) != SIMPLEQ_END(head); \
|
||||
(var) = ((var)->field.sqe_next))
|
||||
|
||||
#define SIMPLEQ_FOREACH_SAFE(var, head, field, next) \
|
||||
for ((var) = ((head)->sqh_first); \
|
||||
(var) != SIMPLEQ_END(head) && \
|
||||
((next = ((var)->field.sqe_next)), 1); \
|
||||
(var) = (next))
|
||||
|
||||
/*
|
||||
* Simple queue functions.
|
||||
*/
|
||||
#define SIMPLEQ_INIT(head) do { \
|
||||
(head)->sqh_first = NULL; \
|
||||
(head)->sqh_last = &(head)->sqh_first; \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define SIMPLEQ_INSERT_HEAD(head, elm, field) do { \
|
||||
if (((elm)->field.sqe_next = (head)->sqh_first) == NULL) \
|
||||
(head)->sqh_last = &(elm)->field.sqe_next; \
|
||||
(head)->sqh_first = (elm); \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define SIMPLEQ_INSERT_TAIL(head, elm, field) do { \
|
||||
(elm)->field.sqe_next = NULL; \
|
||||
*(head)->sqh_last = (elm); \
|
||||
(head)->sqh_last = &(elm)->field.sqe_next; \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define SIMPLEQ_INSERT_AFTER(head, listelm, elm, field) do { \
|
||||
if (((elm)->field.sqe_next = (listelm)->field.sqe_next) == NULL)\
|
||||
(head)->sqh_last = &(elm)->field.sqe_next; \
|
||||
(listelm)->field.sqe_next = (elm); \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define SIMPLEQ_REMOVE_HEAD(head, field) do { \
|
||||
if (((head)->sqh_first = (head)->sqh_first->field.sqe_next) == NULL) \
|
||||
(head)->sqh_last = &(head)->sqh_first; \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define SIMPLEQ_REMOVE_AFTER(head, elm, field) do { \
|
||||
if (((elm)->field.sqe_next = (elm)->field.sqe_next->field.sqe_next) \
|
||||
== NULL) \
|
||||
(head)->sqh_last = &(elm)->field.sqe_next; \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define SIMPLEQ_REMOVE(head, elm, type, field) do { \
|
||||
if ((head)->sqh_first == (elm)) { \
|
||||
SIMPLEQ_REMOVE_HEAD((head), field); \
|
||||
} else { \
|
||||
struct type *curelm = (head)->sqh_first; \
|
||||
while (curelm->field.sqe_next != (elm)) \
|
||||
curelm = curelm->field.sqe_next; \
|
||||
if ((curelm->field.sqe_next = \
|
||||
curelm->field.sqe_next->field.sqe_next) == NULL) \
|
||||
(head)->sqh_last = &(curelm)->field.sqe_next; \
|
||||
} \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define SIMPLEQ_CONCAT(head1, head2) do { \
|
||||
if (!SIMPLEQ_EMPTY((head2))) { \
|
||||
*(head1)->sqh_last = (head2)->sqh_first; \
|
||||
(head1)->sqh_last = (head2)->sqh_last; \
|
||||
SIMPLEQ_INIT((head2)); \
|
||||
} \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define SIMPLEQ_LAST(head, type, field) \
|
||||
(SIMPLEQ_EMPTY((head)) ? \
|
||||
NULL : \
|
||||
((struct type *)(void *) \
|
||||
((char *)((head)->sqh_last) - offsetof(struct type, field))))
|
||||
|
||||
/*
|
||||
* Tail queue definitions.
|
||||
*/
|
||||
#define _TAILQ_HEAD(name, type, qual) \
|
||||
struct name { \
|
||||
qual type *tqh_first; /* first element */ \
|
||||
qual type *qual *tqh_last; /* addr of last next element */ \
|
||||
}
|
||||
#define TAILQ_HEAD(name, type) _TAILQ_HEAD(name, struct type,)
|
||||
|
||||
#define TAILQ_HEAD_INITIALIZER(head) \
|
||||
{ TAILQ_END(head), &(head).tqh_first }
|
||||
|
||||
#define _TAILQ_ENTRY(type, qual) \
|
||||
struct { \
|
||||
qual type *tqe_next; /* next element */ \
|
||||
qual type *qual *tqe_prev; /* address of previous next element */\
|
||||
}
|
||||
#define TAILQ_ENTRY(type) _TAILQ_ENTRY(struct type,)
|
||||
|
||||
/*
|
||||
* Tail queue access methods.
|
||||
*/
|
||||
#define TAILQ_FIRST(head) ((head)->tqh_first)
|
||||
#define TAILQ_END(head) (NULL)
|
||||
#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next)
|
||||
#define TAILQ_LAST(head, headname) \
|
||||
(*(((struct headname *)(void *)((head)->tqh_last))->tqh_last))
|
||||
#define TAILQ_PREV(elm, headname, field) \
|
||||
(*(((struct headname *)(void *)((elm)->field.tqe_prev))->tqh_last))
|
||||
#define TAILQ_EMPTY(head) (TAILQ_FIRST(head) == TAILQ_END(head))
|
||||
|
||||
|
||||
#define TAILQ_FOREACH(var, head, field) \
|
||||
for ((var) = ((head)->tqh_first); \
|
||||
(var) != TAILQ_END(head); \
|
||||
(var) = ((var)->field.tqe_next))
|
||||
|
||||
#define TAILQ_FOREACH_SAFE(var, head, field, next) \
|
||||
for ((var) = ((head)->tqh_first); \
|
||||
(var) != TAILQ_END(head) && \
|
||||
((next) = TAILQ_NEXT(var, field), 1); (var) = (next))
|
||||
|
||||
#define TAILQ_FOREACH_REVERSE(var, head, headname, field) \
|
||||
for ((var) = TAILQ_LAST((head), headname); \
|
||||
(var) != TAILQ_END(head); \
|
||||
(var) = TAILQ_PREV((var), headname, field))
|
||||
|
||||
#define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, prev) \
|
||||
for ((var) = TAILQ_LAST((head), headname); \
|
||||
(var) != TAILQ_END(head) && \
|
||||
((prev) = TAILQ_PREV((var), headname, field), 1); (var) = (prev))
|
||||
|
||||
/*
|
||||
* Tail queue functions.
|
||||
*/
|
||||
#if defined(QUEUEDEBUG)
|
||||
#define QUEUEDEBUG_TAILQ_INSERT_HEAD(head, elm, field) \
|
||||
if ((head)->tqh_first && \
|
||||
(head)->tqh_first->field.tqe_prev != &(head)->tqh_first) \
|
||||
QUEUEDEBUG_ABORT("TAILQ_INSERT_HEAD %p %s:%d", (head), \
|
||||
__FILE__, __LINE__);
|
||||
#define QUEUEDEBUG_TAILQ_INSERT_TAIL(head, elm, field) \
|
||||
if (*(head)->tqh_last != NULL) \
|
||||
QUEUEDEBUG_ABORT("TAILQ_INSERT_TAIL %p %s:%d", (head), \
|
||||
__FILE__, __LINE__);
|
||||
#define QUEUEDEBUG_TAILQ_OP(elm, field) \
|
||||
if ((elm)->field.tqe_next && \
|
||||
(elm)->field.tqe_next->field.tqe_prev != \
|
||||
&(elm)->field.tqe_next) \
|
||||
QUEUEDEBUG_ABORT("TAILQ_* forw %p %s:%d", (elm), \
|
||||
__FILE__, __LINE__); \
|
||||
if (*(elm)->field.tqe_prev != (elm)) \
|
||||
QUEUEDEBUG_ABORT("TAILQ_* back %p %s:%d", (elm), \
|
||||
__FILE__, __LINE__);
|
||||
#define QUEUEDEBUG_TAILQ_PREREMOVE(head, elm, field) \
|
||||
if ((elm)->field.tqe_next == NULL && \
|
||||
(head)->tqh_last != &(elm)->field.tqe_next) \
|
||||
QUEUEDEBUG_ABORT("TAILQ_PREREMOVE head %p elm %p %s:%d",\
|
||||
(head), (elm), __FILE__, __LINE__);
|
||||
#define QUEUEDEBUG_TAILQ_POSTREMOVE(elm, field) \
|
||||
(elm)->field.tqe_next = (void *)1L; \
|
||||
(elm)->field.tqe_prev = (void *)1L;
|
||||
#else
|
||||
#define QUEUEDEBUG_TAILQ_INSERT_HEAD(head, elm, field)
|
||||
#define QUEUEDEBUG_TAILQ_INSERT_TAIL(head, elm, field)
|
||||
#define QUEUEDEBUG_TAILQ_OP(elm, field)
|
||||
#define QUEUEDEBUG_TAILQ_PREREMOVE(head, elm, field)
|
||||
#define QUEUEDEBUG_TAILQ_POSTREMOVE(elm, field)
|
||||
#endif
|
||||
|
||||
#define TAILQ_INIT(head) do { \
|
||||
(head)->tqh_first = TAILQ_END(head); \
|
||||
(head)->tqh_last = &(head)->tqh_first; \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define TAILQ_INSERT_HEAD(head, elm, field) do { \
|
||||
QUEUEDEBUG_TAILQ_INSERT_HEAD((head), (elm), field) \
|
||||
if (((elm)->field.tqe_next = (head)->tqh_first) != TAILQ_END(head))\
|
||||
(head)->tqh_first->field.tqe_prev = \
|
||||
&(elm)->field.tqe_next; \
|
||||
else \
|
||||
(head)->tqh_last = &(elm)->field.tqe_next; \
|
||||
(head)->tqh_first = (elm); \
|
||||
(elm)->field.tqe_prev = &(head)->tqh_first; \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define TAILQ_INSERT_TAIL(head, elm, field) do { \
|
||||
QUEUEDEBUG_TAILQ_INSERT_TAIL((head), (elm), field) \
|
||||
(elm)->field.tqe_next = TAILQ_END(head); \
|
||||
(elm)->field.tqe_prev = (head)->tqh_last; \
|
||||
*(head)->tqh_last = (elm); \
|
||||
(head)->tqh_last = &(elm)->field.tqe_next; \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \
|
||||
QUEUEDEBUG_TAILQ_OP((listelm), field) \
|
||||
if (((elm)->field.tqe_next = (listelm)->field.tqe_next) != \
|
||||
TAILQ_END(head)) \
|
||||
(elm)->field.tqe_next->field.tqe_prev = \
|
||||
&(elm)->field.tqe_next; \
|
||||
else \
|
||||
(head)->tqh_last = &(elm)->field.tqe_next; \
|
||||
(listelm)->field.tqe_next = (elm); \
|
||||
(elm)->field.tqe_prev = &(listelm)->field.tqe_next; \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define TAILQ_INSERT_BEFORE(listelm, elm, field) do { \
|
||||
QUEUEDEBUG_TAILQ_OP((listelm), field) \
|
||||
(elm)->field.tqe_prev = (listelm)->field.tqe_prev; \
|
||||
(elm)->field.tqe_next = (listelm); \
|
||||
*(listelm)->field.tqe_prev = (elm); \
|
||||
(listelm)->field.tqe_prev = &(elm)->field.tqe_next; \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define TAILQ_REMOVE(head, elm, field) do { \
|
||||
QUEUEDEBUG_TAILQ_PREREMOVE((head), (elm), field) \
|
||||
QUEUEDEBUG_TAILQ_OP((elm), field) \
|
||||
if (((elm)->field.tqe_next) != TAILQ_END(head)) \
|
||||
(elm)->field.tqe_next->field.tqe_prev = \
|
||||
(elm)->field.tqe_prev; \
|
||||
else \
|
||||
(head)->tqh_last = (elm)->field.tqe_prev; \
|
||||
*(elm)->field.tqe_prev = (elm)->field.tqe_next; \
|
||||
QUEUEDEBUG_TAILQ_POSTREMOVE((elm), field); \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define TAILQ_REPLACE(head, elm, elm2, field) do { \
|
||||
if (((elm2)->field.tqe_next = (elm)->field.tqe_next) != \
|
||||
TAILQ_END(head)) \
|
||||
(elm2)->field.tqe_next->field.tqe_prev = \
|
||||
&(elm2)->field.tqe_next; \
|
||||
else \
|
||||
(head)->tqh_last = &(elm2)->field.tqe_next; \
|
||||
(elm2)->field.tqe_prev = (elm)->field.tqe_prev; \
|
||||
*(elm2)->field.tqe_prev = (elm2); \
|
||||
QUEUEDEBUG_TAILQ_POSTREMOVE((elm), field); \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define TAILQ_CONCAT(head1, head2, field) do { \
|
||||
if (!TAILQ_EMPTY(head2)) { \
|
||||
*(head1)->tqh_last = (head2)->tqh_first; \
|
||||
(head2)->tqh_first->field.tqe_prev = (head1)->tqh_last; \
|
||||
(head1)->tqh_last = (head2)->tqh_last; \
|
||||
TAILQ_INIT((head2)); \
|
||||
} \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
/*
|
||||
* Singly-linked Tail queue declarations.
|
||||
*/
|
||||
#define STAILQ_HEAD(name, type) \
|
||||
struct name { \
|
||||
struct type *stqh_first; /* first element */ \
|
||||
struct type **stqh_last; /* addr of last next element */ \
|
||||
}
|
||||
|
||||
#define STAILQ_HEAD_INITIALIZER(head) \
|
||||
{ NULL, &(head).stqh_first }
|
||||
|
||||
#define STAILQ_ENTRY(type) \
|
||||
struct { \
|
||||
struct type *stqe_next; /* next element */ \
|
||||
}
|
||||
|
||||
/*
|
||||
* Singly-linked Tail queue access methods.
|
||||
*/
|
||||
#define STAILQ_FIRST(head) ((head)->stqh_first)
|
||||
#define STAILQ_END(head) NULL
|
||||
#define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next)
|
||||
#define STAILQ_EMPTY(head) (STAILQ_FIRST(head) == STAILQ_END(head))
|
||||
|
||||
/*
|
||||
* Singly-linked Tail queue functions.
|
||||
*/
|
||||
#define STAILQ_INIT(head) do { \
|
||||
(head)->stqh_first = NULL; \
|
||||
(head)->stqh_last = &(head)->stqh_first; \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define STAILQ_INSERT_HEAD(head, elm, field) do { \
|
||||
if (((elm)->field.stqe_next = (head)->stqh_first) == NULL) \
|
||||
(head)->stqh_last = &(elm)->field.stqe_next; \
|
||||
(head)->stqh_first = (elm); \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define STAILQ_INSERT_TAIL(head, elm, field) do { \
|
||||
(elm)->field.stqe_next = NULL; \
|
||||
*(head)->stqh_last = (elm); \
|
||||
(head)->stqh_last = &(elm)->field.stqe_next; \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define STAILQ_INSERT_AFTER(head, listelm, elm, field) do { \
|
||||
if (((elm)->field.stqe_next = (listelm)->field.stqe_next) == NULL)\
|
||||
(head)->stqh_last = &(elm)->field.stqe_next; \
|
||||
(listelm)->field.stqe_next = (elm); \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define STAILQ_REMOVE_HEAD(head, field) do { \
|
||||
if (((head)->stqh_first = (head)->stqh_first->field.stqe_next) == NULL) \
|
||||
(head)->stqh_last = &(head)->stqh_first; \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define STAILQ_REMOVE(head, elm, type, field) do { \
|
||||
if ((head)->stqh_first == (elm)) { \
|
||||
STAILQ_REMOVE_HEAD((head), field); \
|
||||
} else { \
|
||||
struct type *curelm = (head)->stqh_first; \
|
||||
while (curelm->field.stqe_next != (elm)) \
|
||||
curelm = curelm->field.stqe_next; \
|
||||
if ((curelm->field.stqe_next = \
|
||||
curelm->field.stqe_next->field.stqe_next) == NULL) \
|
||||
(head)->stqh_last = &(curelm)->field.stqe_next; \
|
||||
} \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define STAILQ_FOREACH(var, head, field) \
|
||||
for ((var) = ((head)->stqh_first); \
|
||||
(var); \
|
||||
(var) = ((var)->field.stqe_next))
|
||||
|
||||
#define STAILQ_FOREACH_SAFE(var, head, field, tvar) \
|
||||
for ((var) = STAILQ_FIRST((head)); \
|
||||
(var) && ((tvar) = STAILQ_NEXT((var), field), 1); \
|
||||
(var) = (tvar))
|
||||
|
||||
#define STAILQ_CONCAT(head1, head2) do { \
|
||||
if (!STAILQ_EMPTY((head2))) { \
|
||||
*(head1)->stqh_last = (head2)->stqh_first; \
|
||||
(head1)->stqh_last = (head2)->stqh_last; \
|
||||
STAILQ_INIT((head2)); \
|
||||
} \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define STAILQ_LAST(head, type, field) \
|
||||
(STAILQ_EMPTY((head)) ? \
|
||||
NULL : \
|
||||
((struct type *)(void *) \
|
||||
((char *)((head)->stqh_last) - offsetof(struct type, field))))
|
||||
|
||||
|
||||
#ifndef _KERNEL
|
||||
/*
|
||||
* Circular queue definitions. Do not use. We still keep the macros
|
||||
* for compatibility but because of pointer aliasing issues their use
|
||||
* is discouraged!
|
||||
*/
|
||||
|
||||
/*
|
||||
* __launder_type(): We use this ugly hack to work around the the compiler
|
||||
* noticing that two types may not alias each other and elide tests in code.
|
||||
* We hit this in the CIRCLEQ macros when comparing 'struct name *' and
|
||||
* 'struct type *' (see CIRCLEQ_HEAD()). Modern compilers (such as GCC
|
||||
* 4.8) declare these comparisons as always false, causing the code to
|
||||
* not run as designed.
|
||||
*
|
||||
* This hack is only to be used for comparisons and thus can be fully const.
|
||||
* Do not use for assignment.
|
||||
*
|
||||
* If we ever choose to change the ABI of the CIRCLEQ macros, we could fix
|
||||
* this by changing the head/tail sentinal values, but see the note above
|
||||
* this one.
|
||||
*/
|
||||
static __inline const void * __launder_type(const void *);
|
||||
static __inline const void *
|
||||
__launder_type(const void *__x)
|
||||
{
|
||||
__asm __volatile("" : "+r" (__x));
|
||||
return __x;
|
||||
}
|
||||
|
||||
#if defined(QUEUEDEBUG)
|
||||
#define QUEUEDEBUG_CIRCLEQ_HEAD(head, field) \
|
||||
if ((head)->cqh_first != CIRCLEQ_ENDC(head) && \
|
||||
(head)->cqh_first->field.cqe_prev != CIRCLEQ_ENDC(head)) \
|
||||
QUEUEDEBUG_ABORT("CIRCLEQ head forw %p %s:%d", (head), \
|
||||
__FILE__, __LINE__); \
|
||||
if ((head)->cqh_last != CIRCLEQ_ENDC(head) && \
|
||||
(head)->cqh_last->field.cqe_next != CIRCLEQ_ENDC(head)) \
|
||||
QUEUEDEBUG_ABORT("CIRCLEQ head back %p %s:%d", (head), \
|
||||
__FILE__, __LINE__);
|
||||
#define QUEUEDEBUG_CIRCLEQ_ELM(head, elm, field) \
|
||||
if ((elm)->field.cqe_next == CIRCLEQ_ENDC(head)) { \
|
||||
if ((head)->cqh_last != (elm)) \
|
||||
QUEUEDEBUG_ABORT("CIRCLEQ elm last %p %s:%d", \
|
||||
(elm), __FILE__, __LINE__); \
|
||||
} else { \
|
||||
if ((elm)->field.cqe_next->field.cqe_prev != (elm)) \
|
||||
QUEUEDEBUG_ABORT("CIRCLEQ elm forw %p %s:%d", \
|
||||
(elm), __FILE__, __LINE__); \
|
||||
} \
|
||||
if ((elm)->field.cqe_prev == CIRCLEQ_ENDC(head)) { \
|
||||
if ((head)->cqh_first != (elm)) \
|
||||
QUEUEDEBUG_ABORT("CIRCLEQ elm first %p %s:%d", \
|
||||
(elm), __FILE__, __LINE__); \
|
||||
} else { \
|
||||
if ((elm)->field.cqe_prev->field.cqe_next != (elm)) \
|
||||
QUEUEDEBUG_ABORT("CIRCLEQ elm prev %p %s:%d", \
|
||||
(elm), __FILE__, __LINE__); \
|
||||
}
|
||||
#define QUEUEDEBUG_CIRCLEQ_POSTREMOVE(elm, field) \
|
||||
(elm)->field.cqe_next = (void *)1L; \
|
||||
(elm)->field.cqe_prev = (void *)1L;
|
||||
#else
|
||||
#define QUEUEDEBUG_CIRCLEQ_HEAD(head, field)
|
||||
#define QUEUEDEBUG_CIRCLEQ_ELM(head, elm, field)
|
||||
#define QUEUEDEBUG_CIRCLEQ_POSTREMOVE(elm, field)
|
||||
#endif
|
||||
|
||||
#define CIRCLEQ_HEAD(name, type) \
|
||||
struct name { \
|
||||
struct type *cqh_first; /* first element */ \
|
||||
struct type *cqh_last; /* last element */ \
|
||||
}
|
||||
|
||||
#define CIRCLEQ_HEAD_INITIALIZER(head) \
|
||||
{ CIRCLEQ_END(&head), CIRCLEQ_END(&head) }
|
||||
|
||||
#define CIRCLEQ_ENTRY(type) \
|
||||
struct { \
|
||||
struct type *cqe_next; /* next element */ \
|
||||
struct type *cqe_prev; /* previous element */ \
|
||||
}
|
||||
|
||||
/*
|
||||
* Circular queue functions.
|
||||
*/
|
||||
#define CIRCLEQ_INIT(head) do { \
|
||||
(head)->cqh_first = CIRCLEQ_END(head); \
|
||||
(head)->cqh_last = CIRCLEQ_END(head); \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define CIRCLEQ_INSERT_AFTER(head, listelm, elm, field) do { \
|
||||
QUEUEDEBUG_CIRCLEQ_HEAD((head), field) \
|
||||
QUEUEDEBUG_CIRCLEQ_ELM((head), (listelm), field) \
|
||||
(elm)->field.cqe_next = (listelm)->field.cqe_next; \
|
||||
(elm)->field.cqe_prev = (listelm); \
|
||||
if ((listelm)->field.cqe_next == CIRCLEQ_ENDC(head)) \
|
||||
(head)->cqh_last = (elm); \
|
||||
else \
|
||||
(listelm)->field.cqe_next->field.cqe_prev = (elm); \
|
||||
(listelm)->field.cqe_next = (elm); \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define CIRCLEQ_INSERT_BEFORE(head, listelm, elm, field) do { \
|
||||
QUEUEDEBUG_CIRCLEQ_HEAD((head), field) \
|
||||
QUEUEDEBUG_CIRCLEQ_ELM((head), (listelm), field) \
|
||||
(elm)->field.cqe_next = (listelm); \
|
||||
(elm)->field.cqe_prev = (listelm)->field.cqe_prev; \
|
||||
if ((listelm)->field.cqe_prev == CIRCLEQ_ENDC(head)) \
|
||||
(head)->cqh_first = (elm); \
|
||||
else \
|
||||
(listelm)->field.cqe_prev->field.cqe_next = (elm); \
|
||||
(listelm)->field.cqe_prev = (elm); \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define CIRCLEQ_INSERT_HEAD(head, elm, field) do { \
|
||||
QUEUEDEBUG_CIRCLEQ_HEAD((head), field) \
|
||||
(elm)->field.cqe_next = (head)->cqh_first; \
|
||||
(elm)->field.cqe_prev = CIRCLEQ_END(head); \
|
||||
if ((head)->cqh_last == CIRCLEQ_ENDC(head)) \
|
||||
(head)->cqh_last = (elm); \
|
||||
else \
|
||||
(head)->cqh_first->field.cqe_prev = (elm); \
|
||||
(head)->cqh_first = (elm); \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define CIRCLEQ_INSERT_TAIL(head, elm, field) do { \
|
||||
QUEUEDEBUG_CIRCLEQ_HEAD((head), field) \
|
||||
(elm)->field.cqe_next = CIRCLEQ_END(head); \
|
||||
(elm)->field.cqe_prev = (head)->cqh_last; \
|
||||
if ((head)->cqh_first == CIRCLEQ_ENDC(head)) \
|
||||
(head)->cqh_first = (elm); \
|
||||
else \
|
||||
(head)->cqh_last->field.cqe_next = (elm); \
|
||||
(head)->cqh_last = (elm); \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define CIRCLEQ_REMOVE(head, elm, field) do { \
|
||||
QUEUEDEBUG_CIRCLEQ_HEAD((head), field) \
|
||||
QUEUEDEBUG_CIRCLEQ_ELM((head), (elm), field) \
|
||||
if ((elm)->field.cqe_next == CIRCLEQ_ENDC(head)) \
|
||||
(head)->cqh_last = (elm)->field.cqe_prev; \
|
||||
else \
|
||||
(elm)->field.cqe_next->field.cqe_prev = \
|
||||
(elm)->field.cqe_prev; \
|
||||
if ((elm)->field.cqe_prev == CIRCLEQ_ENDC(head)) \
|
||||
(head)->cqh_first = (elm)->field.cqe_next; \
|
||||
else \
|
||||
(elm)->field.cqe_prev->field.cqe_next = \
|
||||
(elm)->field.cqe_next; \
|
||||
QUEUEDEBUG_CIRCLEQ_POSTREMOVE((elm), field) \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
#define CIRCLEQ_FOREACH(var, head, field) \
|
||||
for ((var) = ((head)->cqh_first); \
|
||||
(var) != CIRCLEQ_ENDC(head); \
|
||||
(var) = ((var)->field.cqe_next))
|
||||
|
||||
#define CIRCLEQ_FOREACH_REVERSE(var, head, field) \
|
||||
for ((var) = ((head)->cqh_last); \
|
||||
(var) != CIRCLEQ_ENDC(head); \
|
||||
(var) = ((var)->field.cqe_prev))
|
||||
|
||||
/*
|
||||
* Circular queue access methods.
|
||||
*/
|
||||
#define CIRCLEQ_FIRST(head) ((head)->cqh_first)
|
||||
#define CIRCLEQ_LAST(head) ((head)->cqh_last)
|
||||
/* For comparisons */
|
||||
#define CIRCLEQ_ENDC(head) (__launder_type(head))
|
||||
/* For assignments */
|
||||
#define CIRCLEQ_END(head) ((void *)(head))
|
||||
#define CIRCLEQ_NEXT(elm, field) ((elm)->field.cqe_next)
|
||||
#define CIRCLEQ_PREV(elm, field) ((elm)->field.cqe_prev)
|
||||
#define CIRCLEQ_EMPTY(head) \
|
||||
(CIRCLEQ_FIRST(head) == CIRCLEQ_ENDC(head))
|
||||
|
||||
#define CIRCLEQ_LOOP_NEXT(head, elm, field) \
|
||||
(((elm)->field.cqe_next == CIRCLEQ_ENDC(head)) \
|
||||
? ((head)->cqh_first) \
|
||||
: (elm->field.cqe_next))
|
||||
#define CIRCLEQ_LOOP_PREV(head, elm, field) \
|
||||
(((elm)->field.cqe_prev == CIRCLEQ_ENDC(head)) \
|
||||
? ((head)->cqh_last) \
|
||||
: (elm->field.cqe_prev))
|
||||
#endif /* !_KERNEL */
|
||||
|
||||
#endif /* !_SYS_QUEUE_H_ */
|
@ -1,761 +0,0 @@
|
||||
/* $NetBSD: tree.h,v 1.20 2013/09/14 13:20:45 joerg Exp $ */
|
||||
/* $OpenBSD: tree.h,v 1.13 2011/07/09 00:19:45 pirofti Exp $ */
|
||||
/*
|
||||
* Copyright 2002 Niels Provos <provos@citi.umich.edu>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef _SYS_TREE_H_
|
||||
#define _SYS_TREE_H_
|
||||
|
||||
/*
|
||||
* This file defines data structures for different types of trees:
|
||||
* splay trees and red-black trees.
|
||||
*
|
||||
* A splay tree is a self-organizing data structure. Every operation
|
||||
* on the tree causes a splay to happen. The splay moves the requested
|
||||
* node to the root of the tree and partly rebalances it.
|
||||
*
|
||||
* This has the benefit that request locality causes faster lookups as
|
||||
* the requested nodes move to the top of the tree. On the other hand,
|
||||
* every lookup causes memory writes.
|
||||
*
|
||||
* The Balance Theorem bounds the total access time for m operations
|
||||
* and n inserts on an initially empty tree as O((m + n)lg n). The
|
||||
* amortized cost for a sequence of m accesses to a splay tree is O(lg n);
|
||||
*
|
||||
* A red-black tree is a binary search tree with the node color as an
|
||||
* extra attribute. It fulfills a set of conditions:
|
||||
* - every search path from the root to a leaf consists of the
|
||||
* same number of black nodes,
|
||||
* - each red node (except for the root) has a black parent,
|
||||
* - each leaf node is black.
|
||||
*
|
||||
* Every operation on a red-black tree is bounded as O(lg n).
|
||||
* The maximum height of a red-black tree is 2lg (n+1).
|
||||
*/
|
||||
|
||||
#define SPLAY_HEAD(name, type) \
|
||||
struct name { \
|
||||
struct type *sph_root; /* root of the tree */ \
|
||||
}
|
||||
|
||||
#define SPLAY_INITIALIZER(root) \
|
||||
{ NULL }
|
||||
|
||||
#define SPLAY_INIT(root) do { \
|
||||
(root)->sph_root = NULL; \
|
||||
} while (/*CONSTCOND*/ 0)
|
||||
|
||||
#define SPLAY_ENTRY(type) \
|
||||
struct { \
|
||||
struct type *spe_left; /* left element */ \
|
||||
struct type *spe_right; /* right element */ \
|
||||
}
|
||||
|
||||
#define SPLAY_LEFT(elm, field) (elm)->field.spe_left
|
||||
#define SPLAY_RIGHT(elm, field) (elm)->field.spe_right
|
||||
#define SPLAY_ROOT(head) (head)->sph_root
|
||||
#define SPLAY_EMPTY(head) (SPLAY_ROOT(head) == NULL)
|
||||
|
||||
/* SPLAY_ROTATE_{LEFT,RIGHT} expect that tmp hold SPLAY_{RIGHT,LEFT} */
|
||||
#define SPLAY_ROTATE_RIGHT(head, tmp, field) do { \
|
||||
SPLAY_LEFT((head)->sph_root, field) = SPLAY_RIGHT(tmp, field); \
|
||||
SPLAY_RIGHT(tmp, field) = (head)->sph_root; \
|
||||
(head)->sph_root = tmp; \
|
||||
} while (/*CONSTCOND*/ 0)
|
||||
|
||||
#define SPLAY_ROTATE_LEFT(head, tmp, field) do { \
|
||||
SPLAY_RIGHT((head)->sph_root, field) = SPLAY_LEFT(tmp, field); \
|
||||
SPLAY_LEFT(tmp, field) = (head)->sph_root; \
|
||||
(head)->sph_root = tmp; \
|
||||
} while (/*CONSTCOND*/ 0)
|
||||
|
||||
#define SPLAY_LINKLEFT(head, tmp, field) do { \
|
||||
SPLAY_LEFT(tmp, field) = (head)->sph_root; \
|
||||
tmp = (head)->sph_root; \
|
||||
(head)->sph_root = SPLAY_LEFT((head)->sph_root, field); \
|
||||
} while (/*CONSTCOND*/ 0)
|
||||
|
||||
#define SPLAY_LINKRIGHT(head, tmp, field) do { \
|
||||
SPLAY_RIGHT(tmp, field) = (head)->sph_root; \
|
||||
tmp = (head)->sph_root; \
|
||||
(head)->sph_root = SPLAY_RIGHT((head)->sph_root, field); \
|
||||
} while (/*CONSTCOND*/ 0)
|
||||
|
||||
#define SPLAY_ASSEMBLE(head, node, left, right, field) do { \
|
||||
SPLAY_RIGHT(left, field) = SPLAY_LEFT((head)->sph_root, field); \
|
||||
SPLAY_LEFT(right, field) = SPLAY_RIGHT((head)->sph_root, field);\
|
||||
SPLAY_LEFT((head)->sph_root, field) = SPLAY_RIGHT(node, field); \
|
||||
SPLAY_RIGHT((head)->sph_root, field) = SPLAY_LEFT(node, field); \
|
||||
} while (/*CONSTCOND*/ 0)
|
||||
|
||||
/* Generates prototypes and inline functions */
|
||||
|
||||
#define SPLAY_PROTOTYPE(name, type, field, cmp) \
|
||||
void name##_SPLAY(struct name *, struct type *); \
|
||||
void name##_SPLAY_MINMAX(struct name *, int); \
|
||||
struct type *name##_SPLAY_INSERT(struct name *, struct type *); \
|
||||
struct type *name##_SPLAY_REMOVE(struct name *, struct type *); \
|
||||
\
|
||||
/* Finds the node with the same key as elm */ \
|
||||
static __inline struct type * \
|
||||
name##_SPLAY_FIND(struct name *head, struct type *elm) \
|
||||
{ \
|
||||
if (SPLAY_EMPTY(head)) \
|
||||
return(NULL); \
|
||||
name##_SPLAY(head, elm); \
|
||||
if ((cmp)(elm, (head)->sph_root) == 0) \
|
||||
return (head->sph_root); \
|
||||
return (NULL); \
|
||||
} \
|
||||
\
|
||||
static __inline __unused struct type * \
|
||||
name##_SPLAY_NEXT(struct name *head, struct type *elm) \
|
||||
{ \
|
||||
name##_SPLAY(head, elm); \
|
||||
if (SPLAY_RIGHT(elm, field) != NULL) { \
|
||||
elm = SPLAY_RIGHT(elm, field); \
|
||||
while (SPLAY_LEFT(elm, field) != NULL) { \
|
||||
elm = SPLAY_LEFT(elm, field); \
|
||||
} \
|
||||
} else \
|
||||
elm = NULL; \
|
||||
return (elm); \
|
||||
} \
|
||||
\
|
||||
static __unused __inline struct type * \
|
||||
name##_SPLAY_MIN_MAX(struct name *head, int val) \
|
||||
{ \
|
||||
name##_SPLAY_MINMAX(head, val); \
|
||||
return (SPLAY_ROOT(head)); \
|
||||
}
|
||||
|
||||
/* Main splay operation.
|
||||
* Moves node close to the key of elm to top
|
||||
*/
|
||||
#define SPLAY_GENERATE(name, type, field, cmp) \
|
||||
struct type * \
|
||||
name##_SPLAY_INSERT(struct name *head, struct type *elm) \
|
||||
{ \
|
||||
if (SPLAY_EMPTY(head)) { \
|
||||
SPLAY_LEFT(elm, field) = SPLAY_RIGHT(elm, field) = NULL; \
|
||||
} else { \
|
||||
int __comp; \
|
||||
name##_SPLAY(head, elm); \
|
||||
__comp = (cmp)(elm, (head)->sph_root); \
|
||||
if(__comp < 0) { \
|
||||
SPLAY_LEFT(elm, field) = SPLAY_LEFT((head)->sph_root, field);\
|
||||
SPLAY_RIGHT(elm, field) = (head)->sph_root; \
|
||||
SPLAY_LEFT((head)->sph_root, field) = NULL; \
|
||||
} else if (__comp > 0) { \
|
||||
SPLAY_RIGHT(elm, field) = SPLAY_RIGHT((head)->sph_root, field);\
|
||||
SPLAY_LEFT(elm, field) = (head)->sph_root; \
|
||||
SPLAY_RIGHT((head)->sph_root, field) = NULL; \
|
||||
} else \
|
||||
return ((head)->sph_root); \
|
||||
} \
|
||||
(head)->sph_root = (elm); \
|
||||
return (NULL); \
|
||||
} \
|
||||
\
|
||||
struct type * \
|
||||
name##_SPLAY_REMOVE(struct name *head, struct type *elm) \
|
||||
{ \
|
||||
struct type *__tmp; \
|
||||
if (SPLAY_EMPTY(head)) \
|
||||
return (NULL); \
|
||||
name##_SPLAY(head, elm); \
|
||||
if ((cmp)(elm, (head)->sph_root) == 0) { \
|
||||
if (SPLAY_LEFT((head)->sph_root, field) == NULL) { \
|
||||
(head)->sph_root = SPLAY_RIGHT((head)->sph_root, field);\
|
||||
} else { \
|
||||
__tmp = SPLAY_RIGHT((head)->sph_root, field); \
|
||||
(head)->sph_root = SPLAY_LEFT((head)->sph_root, field);\
|
||||
name##_SPLAY(head, elm); \
|
||||
SPLAY_RIGHT((head)->sph_root, field) = __tmp; \
|
||||
} \
|
||||
return (elm); \
|
||||
} \
|
||||
return (NULL); \
|
||||
} \
|
||||
\
|
||||
void \
|
||||
name##_SPLAY(struct name *head, struct type *elm) \
|
||||
{ \
|
||||
struct type __node, *__left, *__right, *__tmp; \
|
||||
int __comp; \
|
||||
\
|
||||
SPLAY_LEFT(&__node, field) = SPLAY_RIGHT(&__node, field) = NULL;\
|
||||
__left = __right = &__node; \
|
||||
\
|
||||
while ((__comp = (cmp)(elm, (head)->sph_root)) != 0) { \
|
||||
if (__comp < 0) { \
|
||||
__tmp = SPLAY_LEFT((head)->sph_root, field); \
|
||||
if (__tmp == NULL) \
|
||||
break; \
|
||||
if ((cmp)(elm, __tmp) < 0){ \
|
||||
SPLAY_ROTATE_RIGHT(head, __tmp, field); \
|
||||
if (SPLAY_LEFT((head)->sph_root, field) == NULL)\
|
||||
break; \
|
||||
} \
|
||||
SPLAY_LINKLEFT(head, __right, field); \
|
||||
} else if (__comp > 0) { \
|
||||
__tmp = SPLAY_RIGHT((head)->sph_root, field); \
|
||||
if (__tmp == NULL) \
|
||||
break; \
|
||||
if ((cmp)(elm, __tmp) > 0){ \
|
||||
SPLAY_ROTATE_LEFT(head, __tmp, field); \
|
||||
if (SPLAY_RIGHT((head)->sph_root, field) == NULL)\
|
||||
break; \
|
||||
} \
|
||||
SPLAY_LINKRIGHT(head, __left, field); \
|
||||
} \
|
||||
} \
|
||||
SPLAY_ASSEMBLE(head, &__node, __left, __right, field); \
|
||||
} \
|
||||
\
|
||||
/* Splay with either the minimum or the maximum element \
|
||||
* Used to find minimum or maximum element in tree. \
|
||||
*/ \
|
||||
void name##_SPLAY_MINMAX(struct name *head, int __comp) \
|
||||
{ \
|
||||
struct type __node, *__left, *__right, *__tmp; \
|
||||
\
|
||||
SPLAY_LEFT(&__node, field) = SPLAY_RIGHT(&__node, field) = NULL;\
|
||||
__left = __right = &__node; \
|
||||
\
|
||||
while (1) { \
|
||||
if (__comp < 0) { \
|
||||
__tmp = SPLAY_LEFT((head)->sph_root, field); \
|
||||
if (__tmp == NULL) \
|
||||
break; \
|
||||
if (__comp < 0){ \
|
||||
SPLAY_ROTATE_RIGHT(head, __tmp, field); \
|
||||
if (SPLAY_LEFT((head)->sph_root, field) == NULL)\
|
||||
break; \
|
||||
} \
|
||||
SPLAY_LINKLEFT(head, __right, field); \
|
||||
} else if (__comp > 0) { \
|
||||
__tmp = SPLAY_RIGHT((head)->sph_root, field); \
|
||||
if (__tmp == NULL) \
|
||||
break; \
|
||||
if (__comp > 0) { \
|
||||
SPLAY_ROTATE_LEFT(head, __tmp, field); \
|
||||
if (SPLAY_RIGHT((head)->sph_root, field) == NULL)\
|
||||
break; \
|
||||
} \
|
||||
SPLAY_LINKRIGHT(head, __left, field); \
|
||||
} \
|
||||
} \
|
||||
SPLAY_ASSEMBLE(head, &__node, __left, __right, field); \
|
||||
}
|
||||
|
||||
#define SPLAY_NEGINF -1
|
||||
#define SPLAY_INF 1
|
||||
|
||||
#define SPLAY_INSERT(name, x, y) name##_SPLAY_INSERT(x, y)
|
||||
#define SPLAY_REMOVE(name, x, y) name##_SPLAY_REMOVE(x, y)
|
||||
#define SPLAY_FIND(name, x, y) name##_SPLAY_FIND(x, y)
|
||||
#define SPLAY_NEXT(name, x, y) name##_SPLAY_NEXT(x, y)
|
||||
#define SPLAY_MIN(name, x) (SPLAY_EMPTY(x) ? NULL \
|
||||
: name##_SPLAY_MIN_MAX(x, SPLAY_NEGINF))
|
||||
#define SPLAY_MAX(name, x) (SPLAY_EMPTY(x) ? NULL \
|
||||
: name##_SPLAY_MIN_MAX(x, SPLAY_INF))
|
||||
|
||||
#define SPLAY_FOREACH(x, name, head) \
|
||||
for ((x) = SPLAY_MIN(name, head); \
|
||||
(x) != NULL; \
|
||||
(x) = SPLAY_NEXT(name, head, x))
|
||||
|
||||
/* Macros that define a red-black tree */
|
||||
#define RB_HEAD(name, type) \
|
||||
struct name { \
|
||||
struct type *rbh_root; /* root of the tree */ \
|
||||
}
|
||||
|
||||
#define RB_INITIALIZER(root) \
|
||||
{ NULL }
|
||||
|
||||
#define RB_INIT(root) do { \
|
||||
(root)->rbh_root = NULL; \
|
||||
} while (/*CONSTCOND*/ 0)
|
||||
|
||||
#define RB_BLACK 0
|
||||
#define RB_RED 1
|
||||
#define RB_ENTRY(type) \
|
||||
struct { \
|
||||
struct type *rbe_left; /* left element */ \
|
||||
struct type *rbe_right; /* right element */ \
|
||||
struct type *rbe_parent; /* parent element */ \
|
||||
int rbe_color; /* node color */ \
|
||||
}
|
||||
|
||||
#define RB_LEFT(elm, field) (elm)->field.rbe_left
|
||||
#define RB_RIGHT(elm, field) (elm)->field.rbe_right
|
||||
#define RB_PARENT(elm, field) (elm)->field.rbe_parent
|
||||
#define RB_COLOR(elm, field) (elm)->field.rbe_color
|
||||
#define RB_ROOT(head) (head)->rbh_root
|
||||
#define RB_EMPTY(head) (RB_ROOT(head) == NULL)
|
||||
|
||||
#define RB_SET(elm, parent, field) do { \
|
||||
RB_PARENT(elm, field) = parent; \
|
||||
RB_LEFT(elm, field) = RB_RIGHT(elm, field) = NULL; \
|
||||
RB_COLOR(elm, field) = RB_RED; \
|
||||
} while (/*CONSTCOND*/ 0)
|
||||
|
||||
#define RB_SET_BLACKRED(black, red, field) do { \
|
||||
RB_COLOR(black, field) = RB_BLACK; \
|
||||
RB_COLOR(red, field) = RB_RED; \
|
||||
} while (/*CONSTCOND*/ 0)
|
||||
|
||||
#ifndef RB_AUGMENT
|
||||
#define RB_AUGMENT(x) do {} while (/*CONSTCOND*/ 0)
|
||||
#endif
|
||||
|
||||
#define RB_ROTATE_LEFT(head, elm, tmp, field) do { \
|
||||
(tmp) = RB_RIGHT(elm, field); \
|
||||
if ((RB_RIGHT(elm, field) = RB_LEFT(tmp, field)) != NULL) { \
|
||||
RB_PARENT(RB_LEFT(tmp, field), field) = (elm); \
|
||||
} \
|
||||
RB_AUGMENT(elm); \
|
||||
if ((RB_PARENT(tmp, field) = RB_PARENT(elm, field)) != NULL) { \
|
||||
if ((elm) == RB_LEFT(RB_PARENT(elm, field), field)) \
|
||||
RB_LEFT(RB_PARENT(elm, field), field) = (tmp); \
|
||||
else \
|
||||
RB_RIGHT(RB_PARENT(elm, field), field) = (tmp); \
|
||||
} else \
|
||||
(head)->rbh_root = (tmp); \
|
||||
RB_LEFT(tmp, field) = (elm); \
|
||||
RB_PARENT(elm, field) = (tmp); \
|
||||
RB_AUGMENT(tmp); \
|
||||
if ((RB_PARENT(tmp, field))) \
|
||||
RB_AUGMENT(RB_PARENT(tmp, field)); \
|
||||
} while (/*CONSTCOND*/ 0)
|
||||
|
||||
#define RB_ROTATE_RIGHT(head, elm, tmp, field) do { \
|
||||
(tmp) = RB_LEFT(elm, field); \
|
||||
if ((RB_LEFT(elm, field) = RB_RIGHT(tmp, field)) != NULL) { \
|
||||
RB_PARENT(RB_RIGHT(tmp, field), field) = (elm); \
|
||||
} \
|
||||
RB_AUGMENT(elm); \
|
||||
if ((RB_PARENT(tmp, field) = RB_PARENT(elm, field)) != NULL) { \
|
||||
if ((elm) == RB_LEFT(RB_PARENT(elm, field), field)) \
|
||||
RB_LEFT(RB_PARENT(elm, field), field) = (tmp); \
|
||||
else \
|
||||
RB_RIGHT(RB_PARENT(elm, field), field) = (tmp); \
|
||||
} else \
|
||||
(head)->rbh_root = (tmp); \
|
||||
RB_RIGHT(tmp, field) = (elm); \
|
||||
RB_PARENT(elm, field) = (tmp); \
|
||||
RB_AUGMENT(tmp); \
|
||||
if ((RB_PARENT(tmp, field))) \
|
||||
RB_AUGMENT(RB_PARENT(tmp, field)); \
|
||||
} while (/*CONSTCOND*/ 0)
|
||||
|
||||
/* Generates prototypes and inline functions */
|
||||
#define RB_PROTOTYPE(name, type, field, cmp) \
|
||||
RB_PROTOTYPE_INTERNAL(name, type, field, cmp,)
|
||||
#define RB_PROTOTYPE_STATIC(name, type, field, cmp) \
|
||||
RB_PROTOTYPE_INTERNAL(name, type, field, cmp, __unused static)
|
||||
#define RB_PROTOTYPE_INTERNAL(name, type, field, cmp, attr) \
|
||||
attr void name##_RB_INSERT_COLOR(struct name *, struct type *); \
|
||||
attr void name##_RB_REMOVE_COLOR(struct name *, struct type *, struct type *);\
|
||||
attr struct type *name##_RB_REMOVE(struct name *, struct type *); \
|
||||
attr struct type *name##_RB_INSERT(struct name *, struct type *); \
|
||||
attr struct type *name##_RB_FIND(struct name *, struct type *); \
|
||||
attr struct type *name##_RB_NFIND(struct name *, struct type *); \
|
||||
attr struct type *name##_RB_NEXT(struct type *); \
|
||||
attr struct type *name##_RB_PREV(struct type *); \
|
||||
attr struct type *name##_RB_MINMAX(struct name *, int); \
|
||||
\
|
||||
|
||||
/* Main rb operation.
|
||||
* Moves node close to the key of elm to top
|
||||
*/
|
||||
#define RB_GENERATE(name, type, field, cmp) \
|
||||
RB_GENERATE_INTERNAL(name, type, field, cmp,)
|
||||
#define RB_GENERATE_STATIC(name, type, field, cmp) \
|
||||
RB_GENERATE_INTERNAL(name, type, field, cmp, __unused static)
|
||||
#define RB_GENERATE_INTERNAL(name, type, field, cmp, attr) \
|
||||
attr void \
|
||||
name##_RB_INSERT_COLOR(struct name *head, struct type *elm) \
|
||||
{ \
|
||||
struct type *parent, *gparent, *tmp; \
|
||||
while ((parent = RB_PARENT(elm, field)) != NULL && \
|
||||
RB_COLOR(parent, field) == RB_RED) { \
|
||||
gparent = RB_PARENT(parent, field); \
|
||||
if (parent == RB_LEFT(gparent, field)) { \
|
||||
tmp = RB_RIGHT(gparent, field); \
|
||||
if (tmp && RB_COLOR(tmp, field) == RB_RED) { \
|
||||
RB_COLOR(tmp, field) = RB_BLACK; \
|
||||
RB_SET_BLACKRED(parent, gparent, field);\
|
||||
elm = gparent; \
|
||||
continue; \
|
||||
} \
|
||||
if (RB_RIGHT(parent, field) == elm) { \
|
||||
RB_ROTATE_LEFT(head, parent, tmp, field);\
|
||||
tmp = parent; \
|
||||
parent = elm; \
|
||||
elm = tmp; \
|
||||
} \
|
||||
RB_SET_BLACKRED(parent, gparent, field); \
|
||||
RB_ROTATE_RIGHT(head, gparent, tmp, field); \
|
||||
} else { \
|
||||
tmp = RB_LEFT(gparent, field); \
|
||||
if (tmp && RB_COLOR(tmp, field) == RB_RED) { \
|
||||
RB_COLOR(tmp, field) = RB_BLACK; \
|
||||
RB_SET_BLACKRED(parent, gparent, field);\
|
||||
elm = gparent; \
|
||||
continue; \
|
||||
} \
|
||||
if (RB_LEFT(parent, field) == elm) { \
|
||||
RB_ROTATE_RIGHT(head, parent, tmp, field);\
|
||||
tmp = parent; \
|
||||
parent = elm; \
|
||||
elm = tmp; \
|
||||
} \
|
||||
RB_SET_BLACKRED(parent, gparent, field); \
|
||||
RB_ROTATE_LEFT(head, gparent, tmp, field); \
|
||||
} \
|
||||
} \
|
||||
RB_COLOR(head->rbh_root, field) = RB_BLACK; \
|
||||
} \
|
||||
\
|
||||
attr void \
|
||||
name##_RB_REMOVE_COLOR(struct name *head, struct type *parent, struct type *elm) \
|
||||
{ \
|
||||
struct type *tmp; \
|
||||
while ((elm == NULL || RB_COLOR(elm, field) == RB_BLACK) && \
|
||||
elm != RB_ROOT(head)) { \
|
||||
if (RB_LEFT(parent, field) == elm) { \
|
||||
tmp = RB_RIGHT(parent, field); \
|
||||
if (RB_COLOR(tmp, field) == RB_RED) { \
|
||||
RB_SET_BLACKRED(tmp, parent, field); \
|
||||
RB_ROTATE_LEFT(head, parent, tmp, field);\
|
||||
tmp = RB_RIGHT(parent, field); \
|
||||
} \
|
||||
if ((RB_LEFT(tmp, field) == NULL || \
|
||||
RB_COLOR(RB_LEFT(tmp, field), field) == RB_BLACK) &&\
|
||||
(RB_RIGHT(tmp, field) == NULL || \
|
||||
RB_COLOR(RB_RIGHT(tmp, field), field) == RB_BLACK)) {\
|
||||
RB_COLOR(tmp, field) = RB_RED; \
|
||||
elm = parent; \
|
||||
parent = RB_PARENT(elm, field); \
|
||||
} else { \
|
||||
if (RB_RIGHT(tmp, field) == NULL || \
|
||||
RB_COLOR(RB_RIGHT(tmp, field), field) == RB_BLACK) {\
|
||||
struct type *oleft; \
|
||||
if ((oleft = RB_LEFT(tmp, field)) \
|
||||
!= NULL) \
|
||||
RB_COLOR(oleft, field) = RB_BLACK;\
|
||||
RB_COLOR(tmp, field) = RB_RED; \
|
||||
RB_ROTATE_RIGHT(head, tmp, oleft, field);\
|
||||
tmp = RB_RIGHT(parent, field); \
|
||||
} \
|
||||
RB_COLOR(tmp, field) = RB_COLOR(parent, field);\
|
||||
RB_COLOR(parent, field) = RB_BLACK; \
|
||||
if (RB_RIGHT(tmp, field)) \
|
||||
RB_COLOR(RB_RIGHT(tmp, field), field) = RB_BLACK;\
|
||||
RB_ROTATE_LEFT(head, parent, tmp, field);\
|
||||
elm = RB_ROOT(head); \
|
||||
break; \
|
||||
} \
|
||||
} else { \
|
||||
tmp = RB_LEFT(parent, field); \
|
||||
if (RB_COLOR(tmp, field) == RB_RED) { \
|
||||
RB_SET_BLACKRED(tmp, parent, field); \
|
||||
RB_ROTATE_RIGHT(head, parent, tmp, field);\
|
||||
tmp = RB_LEFT(parent, field); \
|
||||
} \
|
||||
if ((RB_LEFT(tmp, field) == NULL || \
|
||||
RB_COLOR(RB_LEFT(tmp, field), field) == RB_BLACK) &&\
|
||||
(RB_RIGHT(tmp, field) == NULL || \
|
||||
RB_COLOR(RB_RIGHT(tmp, field), field) == RB_BLACK)) {\
|
||||
RB_COLOR(tmp, field) = RB_RED; \
|
||||
elm = parent; \
|
||||
parent = RB_PARENT(elm, field); \
|
||||
} else { \
|
||||
if (RB_LEFT(tmp, field) == NULL || \
|
||||
RB_COLOR(RB_LEFT(tmp, field), field) == RB_BLACK) {\
|
||||
struct type *oright; \
|
||||
if ((oright = RB_RIGHT(tmp, field)) \
|
||||
!= NULL) \
|
||||
RB_COLOR(oright, field) = RB_BLACK;\
|
||||
RB_COLOR(tmp, field) = RB_RED; \
|
||||
RB_ROTATE_LEFT(head, tmp, oright, field);\
|
||||
tmp = RB_LEFT(parent, field); \
|
||||
} \
|
||||
RB_COLOR(tmp, field) = RB_COLOR(parent, field);\
|
||||
RB_COLOR(parent, field) = RB_BLACK; \
|
||||
if (RB_LEFT(tmp, field)) \
|
||||
RB_COLOR(RB_LEFT(tmp, field), field) = RB_BLACK;\
|
||||
RB_ROTATE_RIGHT(head, parent, tmp, field);\
|
||||
elm = RB_ROOT(head); \
|
||||
break; \
|
||||
} \
|
||||
} \
|
||||
} \
|
||||
if (elm) \
|
||||
RB_COLOR(elm, field) = RB_BLACK; \
|
||||
} \
|
||||
\
|
||||
attr struct type * \
|
||||
name##_RB_REMOVE(struct name *head, struct type *elm) \
|
||||
{ \
|
||||
struct type *child, *parent, *old = elm; \
|
||||
int color; \
|
||||
if (RB_LEFT(elm, field) == NULL) \
|
||||
child = RB_RIGHT(elm, field); \
|
||||
else if (RB_RIGHT(elm, field) == NULL) \
|
||||
child = RB_LEFT(elm, field); \
|
||||
else { \
|
||||
struct type *left; \
|
||||
elm = RB_RIGHT(elm, field); \
|
||||
while ((left = RB_LEFT(elm, field)) != NULL) \
|
||||
elm = left; \
|
||||
child = RB_RIGHT(elm, field); \
|
||||
parent = RB_PARENT(elm, field); \
|
||||
color = RB_COLOR(elm, field); \
|
||||
if (child) \
|
||||
RB_PARENT(child, field) = parent; \
|
||||
if (parent) { \
|
||||
if (RB_LEFT(parent, field) == elm) \
|
||||
RB_LEFT(parent, field) = child; \
|
||||
else \
|
||||
RB_RIGHT(parent, field) = child; \
|
||||
RB_AUGMENT(parent); \
|
||||
} else \
|
||||
RB_ROOT(head) = child; \
|
||||
if (RB_PARENT(elm, field) == old) \
|
||||
parent = elm; \
|
||||
(elm)->field = (old)->field; \
|
||||
if (RB_PARENT(old, field)) { \
|
||||
if (RB_LEFT(RB_PARENT(old, field), field) == old)\
|
||||
RB_LEFT(RB_PARENT(old, field), field) = elm;\
|
||||
else \
|
||||
RB_RIGHT(RB_PARENT(old, field), field) = elm;\
|
||||
RB_AUGMENT(RB_PARENT(old, field)); \
|
||||
} else \
|
||||
RB_ROOT(head) = elm; \
|
||||
RB_PARENT(RB_LEFT(old, field), field) = elm; \
|
||||
if (RB_RIGHT(old, field)) \
|
||||
RB_PARENT(RB_RIGHT(old, field), field) = elm; \
|
||||
if (parent) { \
|
||||
left = parent; \
|
||||
do { \
|
||||
RB_AUGMENT(left); \
|
||||
} while ((left = RB_PARENT(left, field)) != NULL); \
|
||||
} \
|
||||
goto color; \
|
||||
} \
|
||||
parent = RB_PARENT(elm, field); \
|
||||
color = RB_COLOR(elm, field); \
|
||||
if (child) \
|
||||
RB_PARENT(child, field) = parent; \
|
||||
if (parent) { \
|
||||
if (RB_LEFT(parent, field) == elm) \
|
||||
RB_LEFT(parent, field) = child; \
|
||||
else \
|
||||
RB_RIGHT(parent, field) = child; \
|
||||
RB_AUGMENT(parent); \
|
||||
} else \
|
||||
RB_ROOT(head) = child; \
|
||||
color: \
|
||||
if (color == RB_BLACK) \
|
||||
name##_RB_REMOVE_COLOR(head, parent, child); \
|
||||
return (old); \
|
||||
} \
|
||||
\
|
||||
/* Inserts a node into the RB tree */ \
|
||||
attr struct type * \
|
||||
name##_RB_INSERT(struct name *head, struct type *elm) \
|
||||
{ \
|
||||
struct type *tmp; \
|
||||
struct type *parent = NULL; \
|
||||
int comp = 0; \
|
||||
tmp = RB_ROOT(head); \
|
||||
while (tmp) { \
|
||||
parent = tmp; \
|
||||
comp = (cmp)(elm, parent); \
|
||||
if (comp < 0) \
|
||||
tmp = RB_LEFT(tmp, field); \
|
||||
else if (comp > 0) \
|
||||
tmp = RB_RIGHT(tmp, field); \
|
||||
else \
|
||||
return (tmp); \
|
||||
} \
|
||||
RB_SET(elm, parent, field); \
|
||||
if (parent != NULL) { \
|
||||
if (comp < 0) \
|
||||
RB_LEFT(parent, field) = elm; \
|
||||
else \
|
||||
RB_RIGHT(parent, field) = elm; \
|
||||
RB_AUGMENT(parent); \
|
||||
} else \
|
||||
RB_ROOT(head) = elm; \
|
||||
name##_RB_INSERT_COLOR(head, elm); \
|
||||
return (NULL); \
|
||||
} \
|
||||
\
|
||||
/* Finds the node with the same key as elm */ \
|
||||
attr struct type * \
|
||||
name##_RB_FIND(struct name *head, struct type *elm) \
|
||||
{ \
|
||||
struct type *tmp = RB_ROOT(head); \
|
||||
int comp; \
|
||||
while (tmp) { \
|
||||
comp = cmp(elm, tmp); \
|
||||
if (comp < 0) \
|
||||
tmp = RB_LEFT(tmp, field); \
|
||||
else if (comp > 0) \
|
||||
tmp = RB_RIGHT(tmp, field); \
|
||||
else \
|
||||
return (tmp); \
|
||||
} \
|
||||
return (NULL); \
|
||||
} \
|
||||
\
|
||||
/* Finds the first node greater than or equal to the search key */ \
|
||||
attr struct type * \
|
||||
name##_RB_NFIND(struct name *head, struct type *elm) \
|
||||
{ \
|
||||
struct type *tmp = RB_ROOT(head); \
|
||||
struct type *res = NULL; \
|
||||
int comp; \
|
||||
while (tmp) { \
|
||||
comp = cmp(elm, tmp); \
|
||||
if (comp < 0) { \
|
||||
res = tmp; \
|
||||
tmp = RB_LEFT(tmp, field); \
|
||||
} \
|
||||
else if (comp > 0) \
|
||||
tmp = RB_RIGHT(tmp, field); \
|
||||
else \
|
||||
return (tmp); \
|
||||
} \
|
||||
return (res); \
|
||||
} \
|
||||
\
|
||||
/* ARGSUSED */ \
|
||||
attr struct type * \
|
||||
name##_RB_NEXT(struct type *elm) \
|
||||
{ \
|
||||
if (RB_RIGHT(elm, field)) { \
|
||||
elm = RB_RIGHT(elm, field); \
|
||||
while (RB_LEFT(elm, field)) \
|
||||
elm = RB_LEFT(elm, field); \
|
||||
} else { \
|
||||
if (RB_PARENT(elm, field) && \
|
||||
(elm == RB_LEFT(RB_PARENT(elm, field), field))) \
|
||||
elm = RB_PARENT(elm, field); \
|
||||
else { \
|
||||
while (RB_PARENT(elm, field) && \
|
||||
(elm == RB_RIGHT(RB_PARENT(elm, field), field)))\
|
||||
elm = RB_PARENT(elm, field); \
|
||||
elm = RB_PARENT(elm, field); \
|
||||
} \
|
||||
} \
|
||||
return (elm); \
|
||||
} \
|
||||
\
|
||||
/* ARGSUSED */ \
|
||||
attr struct type * \
|
||||
name##_RB_PREV(struct type *elm) \
|
||||
{ \
|
||||
if (RB_LEFT(elm, field)) { \
|
||||
elm = RB_LEFT(elm, field); \
|
||||
while (RB_RIGHT(elm, field)) \
|
||||
elm = RB_RIGHT(elm, field); \
|
||||
} else { \
|
||||
if (RB_PARENT(elm, field) && \
|
||||
(elm == RB_RIGHT(RB_PARENT(elm, field), field))) \
|
||||
elm = RB_PARENT(elm, field); \
|
||||
else { \
|
||||
while (RB_PARENT(elm, field) && \
|
||||
(elm == RB_LEFT(RB_PARENT(elm, field), field)))\
|
||||
elm = RB_PARENT(elm, field); \
|
||||
elm = RB_PARENT(elm, field); \
|
||||
} \
|
||||
} \
|
||||
return (elm); \
|
||||
} \
|
||||
\
|
||||
attr struct type * \
|
||||
name##_RB_MINMAX(struct name *head, int val) \
|
||||
{ \
|
||||
struct type *tmp = RB_ROOT(head); \
|
||||
struct type *parent = NULL; \
|
||||
while (tmp) { \
|
||||
parent = tmp; \
|
||||
if (val < 0) \
|
||||
tmp = RB_LEFT(tmp, field); \
|
||||
else \
|
||||
tmp = RB_RIGHT(tmp, field); \
|
||||
} \
|
||||
return (parent); \
|
||||
}
|
||||
|
||||
#define RB_NEGINF -1
|
||||
#define RB_INF 1
|
||||
|
||||
#define RB_INSERT(name, x, y) name##_RB_INSERT(x, y)
|
||||
#define RB_REMOVE(name, x, y) name##_RB_REMOVE(x, y)
|
||||
#define RB_FIND(name, x, y) name##_RB_FIND(x, y)
|
||||
#define RB_NFIND(name, x, y) name##_RB_NFIND(x, y)
|
||||
#define RB_NEXT(name, x, y) name##_RB_NEXT(y)
|
||||
#define RB_PREV(name, x, y) name##_RB_PREV(y)
|
||||
#define RB_MIN(name, x) name##_RB_MINMAX(x, RB_NEGINF)
|
||||
#define RB_MAX(name, x) name##_RB_MINMAX(x, RB_INF)
|
||||
|
||||
#define RB_FOREACH(x, name, head) \
|
||||
for ((x) = RB_MIN(name, head); \
|
||||
(x) != NULL; \
|
||||
(x) = name##_RB_NEXT(x))
|
||||
|
||||
#define RB_FOREACH_FROM(x, name, y) \
|
||||
for ((x) = (y); \
|
||||
((x) != NULL) && ((y) = name##_RB_NEXT(x), (x) != NULL); \
|
||||
(x) = (y))
|
||||
|
||||
#define RB_FOREACH_SAFE(x, name, head, y) \
|
||||
for ((x) = RB_MIN(name, head); \
|
||||
((x) != NULL) && ((y) = name##_RB_NEXT(x), (x) != NULL); \
|
||||
(x) = (y))
|
||||
|
||||
#define RB_FOREACH_REVERSE(x, name, head) \
|
||||
for ((x) = RB_MAX(name, head); \
|
||||
(x) != NULL; \
|
||||
(x) = name##_RB_PREV(x))
|
||||
|
||||
#define RB_FOREACH_REVERSE_FROM(x, name, y) \
|
||||
for ((x) = (y); \
|
||||
((x) != NULL) && ((y) = name##_RB_PREV(x), (x) != NULL); \
|
||||
(x) = (y))
|
||||
|
||||
#define RB_FOREACH_REVERSE_SAFE(x, name, head, y) \
|
||||
for ((x) = RB_MAX(name, head); \
|
||||
((x) != NULL) && ((y) = name##_RB_PREV(x), (x) != NULL); \
|
||||
(x) = (y))
|
||||
|
||||
#endif /* _SYS_TREE_H_ */
|
@ -1,3 +0,0 @@
|
||||
files/cdefs.h
|
||||
files/queue.h
|
||||
files/tree.h
|
@ -1 +0,0 @@
|
||||
0.7.1 1
|
@ -1,101 +0,0 @@
|
||||
#!/bin/sh -e
|
||||
|
||||
pkg_dir=$1
|
||||
|
||||
set -- \
|
||||
blink_symbol_level=0 \
|
||||
clang_use_chrome_plugins=false \
|
||||
closure_compile=false \
|
||||
custom_toolchain=\"//build/toolchain/linux/unbundle:default\" \
|
||||
enable_ipc_logging=false \
|
||||
enable_iterator_debugging=false \
|
||||
enable_nacl=false \
|
||||
enable_nacl_nonsfi=false \
|
||||
enable_native_notifications=false \
|
||||
enable_service_discovery=false \
|
||||
enable_swiftshader=false \
|
||||
fatal_linker_warnings=false \
|
||||
fieldtrial_testing_like_official_build=true \
|
||||
host_toolchain=\"//build/toolchain/linux/unbundle:default\" \
|
||||
icu_use_data_file=true \
|
||||
is_clang=true \
|
||||
is_component_build=false \
|
||||
is_debug=false \
|
||||
linux_use_bundled_binutils=false \
|
||||
proprietary_codecs=false \
|
||||
safe_browsing_mode=0 \
|
||||
symbol_level=0 \
|
||||
treat_warnings_as_errors=false \
|
||||
use_allocator=\"none\" \
|
||||
use_allocator_shim=false \
|
||||
use_atk=false \
|
||||
use_cups=false \
|
||||
use_custom_libcxx=false \
|
||||
use_dbus=false \
|
||||
use_gnome_keyring=false \
|
||||
use_official_google_api_keys=false \
|
||||
use_pulseaudio=false \
|
||||
use_sysroot=false \
|
||||
use_system_harfbuzz=true \
|
||||
rtc_use_pipewire = false
|
||||
|
||||
for patch in *.patch; do
|
||||
patch -p1 < "$patch"
|
||||
done
|
||||
|
||||
# Use 'clang' instead of 'gcc'.
|
||||
# Clang is the officially supported compiler and builds chromium faster.
|
||||
export CC=clang CXX=clang++ AR=llvm-ar NM=llvm-nm LD=clang++
|
||||
export PATH=$PWD/fix-python-bin:$PATH
|
||||
|
||||
# Make a temporary script to cause 'python' to resolve to python 2 and not 3.
|
||||
mkdir -p fix-python-bin
|
||||
cat << EOF > ./fix-python-bin/python
|
||||
#!/bin/sh
|
||||
exec python2 "\$@"
|
||||
EOF
|
||||
chmod +x ./fix-python-bin/python
|
||||
|
||||
# Use system nodejs.
|
||||
mkdir -p third_party/node/linux/node-linux-x64/bin
|
||||
ln -s /usr/bin/node third_party/node/linux/node-linux-x64/bin/
|
||||
|
||||
# Use system libraries.
|
||||
for dep in fontconfig harfbuzz-ng libdrm libevent libjpeg \
|
||||
libpng libwebp libxml libxslt opus re2 snappy yasm; do
|
||||
find . -type f -path "*third_party/$dep/*" \
|
||||
\! -path "*third_party/$dep/chromium/*" \
|
||||
\! -path "*third_party/$dep/google/*" \
|
||||
\! -path './base/third_party/icu/*' \
|
||||
\! -path './third_party/pdfium/third_party/freetype/include/pstables.h' \
|
||||
\! -path './third_party/yasm/run_yasm.py' \
|
||||
\! -regex '.*\.\(gn\|gni\|isolate\|py\)' \
|
||||
-delete
|
||||
done
|
||||
|
||||
# Switch to system provided dependencies.
|
||||
python2 build/linux/unbundle/replace_gn_files.py \
|
||||
--system-libraries fontconfig harfbuzz-ng libdrm libevent \
|
||||
libjpeg libpng libwebp libxml libxslt opus re2 \
|
||||
snappy yasm
|
||||
|
||||
python2 tools/gn/bootstrap/bootstrap.py -s -v --gn-gen-args "$*"
|
||||
|
||||
# All shells seem to support this despite the lack of a POSIX spec for it.
|
||||
# shellcheck disable=2039
|
||||
ulimit -n 4096 ||:
|
||||
|
||||
out/Release/gn gen out/Release \
|
||||
--script-executable=/usr/bin/python2
|
||||
|
||||
ninja -C out/Release chrome chromedriver
|
||||
|
||||
cd out/Release
|
||||
|
||||
for bin in chrome chromedriver *.bin; do
|
||||
install -Dm755 "$bin" "$pkg_dir/usr/lib/chromium/$bin"
|
||||
done
|
||||
|
||||
mkdir -p "$pkg_dir/usr/bin"
|
||||
ln -s /usr/lib/chromium/chrome "$pkg_dir/usr/bin/chrome"
|
||||
ln -s /usr/lib/chromium/chromedriver "$pkg_dir/usr/bin/chromedriver"
|
@ -1,74 +0,0 @@
|
||||
510e6ca7ccc218b401b375c13656f6aecab196b03142026dc3602b9d1804a5ac chromium-75.0.3770.142.tar.xz
|
||||
8f53e2516ae830db656cbeb13bab3ace3df6c15494ac3df94a4b5c0f78dadf31 0000-build.patch
|
||||
6cb02c710eee5c2a0b67b8ff48ee1328f9db3d1f430cb4c213887f1860720f32 0001-fix-building-without-safebrowsing.patch
|
||||
25d80d8cdb4143e0d96fe2b748340bcdf21055b1c7cbd5529fc630eea48875b0 0001-simd.patch
|
||||
62293ec9232bf68362c33135739623dc432c04e54842425b7b1a5d5646975e95 0002-uninitializedcheck.patch
|
||||
bc2a44c2f3574f5997e54e4088e1644bcffaa6f541cd729a32bf94ea05dd10bb 0003-disable-autofill-download-manager.patch
|
||||
4a27dea88e61e1ba607cc9868ecba60882759ea608299c42ce59b821f0e17d8a 0004-disable-google-url-tracker.patch
|
||||
1dc7e3f22cd81ca85ea9f3240cc6adb90f111477c9cc05efcfe4943a2dcf9f6e 0005-disable-default-extensions.patch
|
||||
a15de5b30ad7d77358116faf1e40a82dec2f43da25f51a44e8e265b161ab8da0 0006-modify-default-prefs.patch
|
||||
22cc3b5e1032a170c958213f546a1dc48fd9433823767b0159d40f930a0b3029 0007-disable-web-resource-service.patch
|
||||
a7728ea22805f69ce9a16a35ae067fe570825e8154bdb66b18bb072289c5589e 0008-restore-classic-ntp.patch
|
||||
e7d182028feb9d6790e7a849671c4c79a833909fdb2c48f3b11272ea53c127cc 0009-disable-google-ipv6-probes.patch
|
||||
3f40d4f1a0f7a03945c80e6ffd417ca93e4f7f22ee09faaa71a058e6e246786f 0010-disable-gcm-status-check.patch
|
||||
52dc08f76953323413eefded936b7fa3e3bc69ba75e2a74b80455d3da5e708a8 0014-disable-translation-lang-fetch.patch
|
||||
b5e0f354ebf44075899d3161f808e2e070194377c7f801935e49200ca4bae9c0 0015-disable-update-pings.patch
|
||||
ed7c8ebaa0ee44d4775c0bfb097a22340e30d2d78546f223fbc8e8da4e457686 0019-disable-battery-status-service.patch
|
||||
80e6512b928082a0b59465e1dcbab5e6284b545933f42d262194b1a86811a243 0021-disable-rlz.patch
|
||||
45e970e285ceb599c15aa7184f6f86061abd4de6c58a985678bfb6cc68464c77 android.patch
|
||||
ece2d462169429541a7fa1cc7f3f72698e883292500dde6f1c64ce165dd6abd9 chromium-75-fix-gn-gen.patch
|
||||
b386cb54d0229c640cc44012a9dbb0b822c979810a62be92dc44e1a3c8a457d3 chromium-75-gcc-angle-fix.patch
|
||||
1830b37534e2adf7fd22569c1bbe10eb29bcf85bd9437dc5039c91e7097dc627 chromium-75-llvm8.patch
|
||||
3376f7868124a45a8ee325b1fbd607aabdfd86adba6b77d49b1399dcddc70605 chromium-75-lss.patch
|
||||
a53cf274de7b13ab06fb7867b45b4bfdb1229c5686f3874b2854e3172824ce19 chromium-75-noexcept.patch
|
||||
788ad2094f5c6991c3c4514000d153a1ecb3a23767594092748b6e85a367ddbd chromium-75-pure-virtual.patch
|
||||
762f707ebd9397e7be2ba47bc106911dc2535ff82f37dbbeeded683b66bffa32 chromium-75-unique_ptr.patch
|
||||
365e1a76dc3e508846a221d4490d134ed7fa3d36a3a28ce0b03f5d66c1503778 chromium-compiler-r9.patch
|
||||
daa26bab3a3a9f8b8539dffefa7a07f6d7ac07476d7ae762e3f0169985e429ff chromium-fix-char_traits.patch
|
||||
75c31df557238c5bdc2b91401b13b381b68c812594d89f8f053e0e489d4991c2 chromium-optional-atk-r1.patch
|
||||
6592a17ac557d4cdd5dbb9cd2445c95c1668f17d8c95a7f5ebf42ebbde35430e chromium-optional-dbus-r5.patch
|
||||
f0e59aee57bffc87ab8d51f1f893ec8ed561769328352a9124f717e886b8054f chromium-url-formatter.patch
|
||||
8c6ecc26aab9f4acc911350d9bb1e40f32cad144b6a08c9d7b188e9598d0f2de chromium-widevine-r4.patch
|
||||
85f819beee54b6a87d63d59dd0094885dccf0b7cbed7efe6b90b9f6b5cbb78e9 device-notifications.patch
|
||||
2907556a180098f02e945ee4f8dce1f0ff6f84362328700a4a23fb195b324266 disable-crash-reporter.patch
|
||||
13ee937555d20af557a18029a7cfde0f387c542f2bfe75bdb9b9b85187cec9ee disable-domain-reliability.patch
|
||||
a1422d23da46e2dc39974dbe25787e5040e0dd1104806a796d5776af80cf0bb4 disable-download-quarantine.patch
|
||||
cba503f5d3d776c951c5ee20eaa0a17d48fb5981823dd8118f9d48e61b42d411 disable-fetching-field-trials.patch
|
||||
3ab3ef00886f89da2802b16ad8cebde881b26dbcbb0f1b1b6563dcede0a627d3 disable-fonts-googleapis-references.patch
|
||||
39ea6f6e39f91249f5a89324f083863b934171eeb67667e26a2863e91af2b578 disable-gaia.patch
|
||||
64d6c33f565c6fc1702fcc97af56ecbc3564fa8b5591d73f554ec48d97fc73fd disable-gcm.patch
|
||||
ef924778ebfc2462b8b12f49e32dff00adc2883af344c3895e5026b11d36c4f1 disable-google-host-detection.patch
|
||||
ce6a00f2c31dfc6b06154ca9db9ccda5b42bc9965f861d9978bc202ee2549c01 disable-mei-preload.patch
|
||||
599ba1f2bb26b6afd81fc207181dfd95368ad10992b40a6752999fe12f7ea837 disable-network-time-tracker.patch
|
||||
a4d5cc75a9979d13a368d22c8281c80a2c025629b6145ee0aacafef56da4c5d9 disable-webrtc-log-uploader.patch
|
||||
9058162657672162964d2f35431c208d1cfae12325858ff636044d667e9dcaf5 disable_swiftshader.patch
|
||||
d0059ab268e3d2030f9e2d2b36b16f3e68bdb3353a98b07f974d3c353fa7238f fix-building-without-mdns-and-service-discovery.patch
|
||||
5b698ada72c4afe56271d6397c49367ec8614c664fd294cc7d43705eb4306ac6 fix-building-without-safebrowsing.patch
|
||||
760a9fd65492138fa9ccf57aa5579f8f66d0e593582ac930dcc0cbe54076b166 fuzzers.patch
|
||||
9248bae6df77f701afc9ecd36a6e2901649a4a5edf106475e4f26f623cd31892 google-api-warning.patch
|
||||
6d921355eaef7101a0713e0e7a88b7a7c4e8aa28391325399fdd0a59f2358d13 musl-cdefs-r2.patch
|
||||
fec5590225bf3d0238ee45f8f67fcb032946abe351383653c3026ce4e706d48f musl-dlopen.patch
|
||||
f1375a3acd205ee46dd5d7c729e09d19982833f71e5eb1fb9c3ec5d3de5ffe90 musl-dns-r2.patch
|
||||
f1f414b16acc1986eca620c264fffc1a73e6468e4d8ae076b8ab7c2266c66c58 musl-execinfo-r8.patch
|
||||
49537286728fe29d2e9d3e9040480576aa13be862fb68596fb9629462aab30c1 musl-fpstate-r1.patch
|
||||
f2f8d67f26dc69e050950b522410cab6ab8ee4170ad810f15ed75ce30fe0ae8d musl-headers-r1.patch
|
||||
a7bffd948d4f55c7d57985f85b6fbbbbea3a6638be223b6b7863008dd1b72006 musl-libcpp.patch
|
||||
50505f127d17e25c298848b8a02664fd03083ebbd33e3318f818cd4657a51fee musl-mallinfo-r7.patch
|
||||
2fbc6fba166788e5f6d8a4846fcffc00f703f47b37f16a5e832132e01cc8c565 musl-pthread-r5.patch
|
||||
375df387335a82bea9362f819a93575877de94eae96528347726e6b5d9c4a4cd musl-ptrace.patch
|
||||
c8dac5abf0cd34f1eee71c6c1bce619ec213d9d2f9511654ccc947a2ad0e6850 musl-realpath.patch
|
||||
ebde3be74f0db9486cf99cd7faafb29f1472f432046b8801c494cff5713c8d94 musl-sandbox-r3.patch
|
||||
8b183ce939a5ec37dee6af3e473ce71bd86c9cf1e647a667b4a3f760b56404de musl-secure_getenv-r1.patch
|
||||
3ff4f1eb041048efe9ff8ce5d91fcb092d2fc06e373459ca2d9d590ee176dfb9 musl-siginfo.patch
|
||||
675c056977f396ec135c50b25601cf10b545c357e5a21baf7e0e4fe71e3ecdf1 musl-socket.patch
|
||||
5813a3031e97178a3e36fe48b24f3ddec934f43505819b66dcea5c0dd340644c musl-stacksize-r3.patch
|
||||
4e96a1204c6cc0d9ab38a7232121709b48ed1704391c30ed3ba7b22bc0881b92 musl-stacktrace-r2.patch
|
||||
1f10590d5322968667874c4aa5a4314e9dc5f659091de67f032ebe9654cd5482 musl-syscall.patch
|
||||
a4b0374c536128483cdaeb706f2b1a7144168ae6e44d9ca2df7445d1be780afc musl-ucontext-r1.patch
|
||||
72d806af57a729d36b1eb482419245fba4c58d035fc20e58dbbcf88c35d50e97 musl-v8-monotonic-pthread-cont_timedwait.patch
|
||||
e191334207865e43b831492913d58cae4c89449d32b362b9f9aa7e1d196837a9 musl-wordsize-r1.patch
|
||||
b07a4903f150da643320012880622b6d52c0ccf1e85d3425240188277ee546ef perfetto.patch
|
||||
77ece26615320e5ffbda4ba2dcfc3a184cba923a1be19fc031fa5edb56e59632 safe_browsing-disable-incident-reporting.patch
|
||||
5f8d6876420bd9a5c208d432a82a4faa78f43d24fe5b425a8f6a0a475bc4e8dd safe_browsing-disable-reporting-of-safebrowsing-over.patch
|
||||
3f55f3ed81f4d967b8eb45655ddbdd3a59da3d69dbf1999a9335b199c84d1c9d unrar.patch
|
||||
815a2a41003747bb6b44df192af4650e9ea0fe2dc87bb689a9bbb6e7a2c3eddd welcome-page.patch
|
@ -1,40 +0,0 @@
|
||||
alsa-lib make
|
||||
bison make
|
||||
bsd-compat-headers make
|
||||
clang make
|
||||
lld make
|
||||
ffmpeg make
|
||||
fontconfig make
|
||||
freetype make
|
||||
git make
|
||||
glib make
|
||||
gperf make
|
||||
gtk+3 make
|
||||
gzip make
|
||||
json-c make
|
||||
jsoncpp make
|
||||
libXScrnSaver make
|
||||
libXcomposite make
|
||||
libXcursor make
|
||||
libXdamage make
|
||||
libXi make
|
||||
libXrandr make
|
||||
libXtst make
|
||||
libcap make
|
||||
libevent make
|
||||
libjpeg-turbo make
|
||||
libwebp make
|
||||
libxml2 make
|
||||
libxslt make
|
||||
minizip make
|
||||
ninja make
|
||||
nodejs make
|
||||
nss make
|
||||
pango make
|
||||
pciutils make
|
||||
perl make
|
||||
python2 make
|
||||
re2 make
|
||||
snappy make
|
||||
yasm make
|
||||
zlib make
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
||||
RnJvbSAxYTAzZTdhZWM5NWQ4OWM2NTlmZDkxZjE5NWI5OTg5M2I2NDU4Y2Q3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBZGVuaWxzb24gQ2F2YWxjYW50aSA8YWRlbmlsc29uLmNhdmFsY2FudGlAYXJtLmNvbT4KRGF0ZTogV2VkLCAyNyBTZXAgMjAxNyAxMzo1OTowNCAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFpsaWIgcGF0Y2g6IHByZXZlbnQgdW5pbml0aWFsaXplZCB1c2Ugb2Ygc3RhdGUtPmNoZWNrCgpObyBuZWVkIHRvIGNhbGwgdGhlIEFkbGVyMzIgY2hlY2tzdW0gZnVuY3Rpb24sIGp1c3Qgc2V0CnRoZSBzdHJ1Y3QgZmllbGQgdG8gdGhlIGV4cGVjdGVkIHZhbHVlLgoKVXBzdHJlYW0gYnVnOiBtYWRsZXIvemxpYiMyNDUKLS0tCiB0aGlyZF9wYXJ0eS96bGliL2luZmxhdGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogMSBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCB0aGlyZF9wYXJ0eS96bGliL3BhdGNoZXMvMDAwMi11bmluaXRpYWxpemVkY2hlY2sucGF0Y2gKCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS96bGliL2luZmxhdGUuYyBiL3RoaXJkX3BhcnR5L3psaWIvaW5mbGF0ZS5jCmluZGV4IGJlYzk0OTcuLjVjNDBjZjEgMTAwNjQ0Ci0tLSBhL3RoaXJkX3BhcnR5L3psaWIvaW5mbGF0ZS5jCisrKyBiL3RoaXJkX3BhcnR5L3psaWIvaW5mbGF0ZS5jCkBAIC0yMjgsNyArMjI4LDcgQEAgaW50IHN0cmVhbV9zaXplOwogICAgIHN0YXRlLT5zdHJtID0gc3RybTsKICAgICBzdGF0ZS0+d2luZG93ID0gWl9OVUxMOwogICAgIHN0YXRlLT5tb2RlID0gSEVBRDsgICAgIC8qIHRvIHBhc3Mgc3RhdGUgdGVzdCBpbiBpbmZsYXRlUmVzZXQyKCkgKi8KLSAgICBzdGF0ZS0+Y2hlY2sgPSBhZGxlcjMyKDBMLCBaX05VTEwsIDApOworICAgIHN0YXRlLT5jaGVjayA9IDFMOyAgICAgIC8qIDFMIGlzIHRoZSByZXN1bHQgb2YgYWRsZXIzMigpIHplcm8gbGVuZ3RoIGRhdGEgKi8KICAgICByZXQgPSBpbmZsYXRlUmVzZXQyKHN0cm0sIHdpbmRvd0JpdHMpOwogICAgIGlmIChyZXQgIT0gWl9PSykgewogICAgICAgICBaRlJFRShzdHJtLCBzdGF0ZSk7Cg==
|
@ -1,73 +0,0 @@
|
||||
--- a/components/autofill/core/browser/autofill_download_manager.cc
|
||||
+++ b/components/autofill/core/browser/autofill_download_manager.cc
|
||||
@@ -703,70 +703,6 @@ AutofillDownloadManager::GetRequestURLAn
|
||||
}
|
||||
|
||||
bool AutofillDownloadManager::StartRequest(FormRequestData request_data) {
|
||||
- scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory =
|
||||
- driver_->GetURLLoaderFactory();
|
||||
- DCHECK(url_loader_factory);
|
||||
-
|
||||
- // Get the URL and method to use for this request.
|
||||
- std::string method;
|
||||
- GURL request_url;
|
||||
- std::tie(request_url, method) =
|
||||
- UseApi() ? GetRequestURLAndMethodForApi(request_data)
|
||||
- : GetRequestURLAndMethod(request_data);
|
||||
-
|
||||
- auto resource_request = std::make_unique<network::ResourceRequest>();
|
||||
- resource_request->url = request_url;
|
||||
- resource_request->load_flags =
|
||||
- net::LOAD_DO_NOT_SEND_COOKIES | net::LOAD_DO_NOT_SAVE_COOKIES;
|
||||
- resource_request->method = method;
|
||||
-
|
||||
- // Add Chrome experiment state to the request headers.
|
||||
- variations::AppendVariationsHeaderUnknownSignedIn(
|
||||
- request_url,
|
||||
- driver_->IsIncognito() ? variations::InIncognito::kYes
|
||||
- : variations::InIncognito::kNo,
|
||||
- resource_request.get());
|
||||
-
|
||||
- // Set headers specific to the API if using it.
|
||||
- if (UseApi())
|
||||
- // Encode response serialized proto in base64 for safety.
|
||||
- resource_request->headers.SetHeader(kGoogEncodeResponseIfExecutable,
|
||||
- "base64");
|
||||
-
|
||||
- // Put API key in request's header if a key exists, and the endpoint is
|
||||
- // trusted by Google.
|
||||
- if (!api_key_.empty() && request_url.SchemeIs(url::kHttpsScheme) &&
|
||||
- google_util::IsGoogleAssociatedDomainUrl(request_url)) {
|
||||
- resource_request->headers.SetHeader(kGoogApiKey, api_key_);
|
||||
- }
|
||||
-
|
||||
- auto simple_loader = network::SimpleURLLoader::Create(
|
||||
- std::move(resource_request),
|
||||
- GetNetworkTrafficAnnotation(request_data.request_type));
|
||||
-
|
||||
- // This allows reading the error message within the API response when status
|
||||
- // is not 200 (e.g., 400). Otherwise, URL loader will not give any content in
|
||||
- // the response when there is a failure, which makes debugging hard.
|
||||
- simple_loader->SetAllowHttpErrorResults(true);
|
||||
-
|
||||
- if (method == "POST") {
|
||||
- const std::string content_type =
|
||||
- UseApi() ? "application/x-protobuf" : "text/proto";
|
||||
- // Attach payload data and add data format header.
|
||||
- simple_loader->AttachStringForUpload(request_data.payload, content_type);
|
||||
- }
|
||||
-
|
||||
- // Transfer ownership of the loader into url_loaders_. Temporarily hang
|
||||
- // onto the raw pointer to use it as a key and to kick off the request;
|
||||
- // transferring ownership (std::move) invalidates the |simple_loader|
|
||||
- // variable.
|
||||
- auto* raw_simple_loader = simple_loader.get();
|
||||
- url_loaders_.push_back(std::move(simple_loader));
|
||||
- raw_simple_loader->DownloadToStringOfUnboundedSizeUntilCrashAndDie(
|
||||
- url_loader_factory.get(),
|
||||
- base::BindOnce(&AutofillDownloadManager::OnSimpleLoaderComplete,
|
||||
- base::Unretained(this), std::move(--url_loaders_.end()),
|
||||
- std::move(request_data), base::TimeTicks::Now()));
|
||||
return true;
|
||||
}
|
||||
|
@ -1,98 +0,0 @@
|
||||
--- a/components/google/core/browser/google_url_tracker.cc
|
||||
+++ b/components/google/core/browser/google_url_tracker.cc
|
||||
@@ -25,9 +25,9 @@
|
||||
#include "services/network/public/cpp/simple_url_loader.h"
|
||||
|
||||
const char GoogleURLTracker::kDefaultGoogleHomepage[] =
|
||||
- "https://www.google.com/";
|
||||
+ "";
|
||||
const char GoogleURLTracker::kSearchDomainCheckURL[] =
|
||||
- "https://www.google.com/searchdomaincheck?format=domain&type=chrome";
|
||||
+ "";
|
||||
const base::Feature GoogleURLTracker::kNoSearchDomainCheck{
|
||||
"NoSearchDomainCheck", base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
|
||||
@@ -148,83 +148,4 @@ void GoogleURLTracker::FinishSleep() {
|
||||
}
|
||||
|
||||
void GoogleURLTracker::StartLoadIfDesirable() {
|
||||
- // Bail if a load isn't appropriate right now. This function will be called
|
||||
- // again each time one of the preconditions changes, so we'll load
|
||||
- // immediately once all of them are met.
|
||||
- //
|
||||
- // See comments in header on the class, on RequestServerCheck(), and on the
|
||||
- // various members here for more detail on exactly what the conditions are.
|
||||
- if (in_startup_sleep_ || already_loaded_ || !need_to_load_)
|
||||
- return;
|
||||
-
|
||||
- // Some switches should disable the Google URL tracker entirely. If we can't
|
||||
- // do background networking, we can't do the necessary load, and if the user
|
||||
- // specified a Google base URL manually, we shouldn't bother to look up any
|
||||
- // alternatives or offer to switch to them.
|
||||
- if (!client_->IsBackgroundNetworkingEnabled() ||
|
||||
- base::CommandLine::ForCurrentProcess()->HasSwitch(
|
||||
- switches::kGoogleBaseURL))
|
||||
- return;
|
||||
-
|
||||
- already_loaded_ = true;
|
||||
- net::NetworkTrafficAnnotationTag traffic_annotation =
|
||||
- net::DefineNetworkTrafficAnnotation("google_url_tracker", R"(
|
||||
- semantics {
|
||||
- sender: "Google URL Tracker"
|
||||
- description:
|
||||
- "When the user's default search engine is Google, or Google "
|
||||
- "services are used to resolve navigation errors, the browser needs "
|
||||
- "to know the ideal origin for requests to Google services. In "
|
||||
- "these cases the browser makes a request to a global Google "
|
||||
- "service that returns this origin, potentially taking into account "
|
||||
- "the user's cookies or IP address."
|
||||
- trigger: "Browser startup or network change."
|
||||
- data: "None."
|
||||
- destination: GOOGLE_OWNED_SERVICE
|
||||
- }
|
||||
- policy {
|
||||
- cookies_allowed: YES
|
||||
- cookies_store: "user"
|
||||
- setting:
|
||||
- "To disable this check, users can change the default search engine "
|
||||
- "to something other than Google, and disable 'Use a web service to "
|
||||
- "help resolve navigation errors' in Chromium's settings under "
|
||||
- "Privacy.\nAlternately, running Chromium with "
|
||||
- "--google-base-url=\"https://www.google.com/\" will disable this, "
|
||||
- "and force Chromium to use the specified URL for Google service "
|
||||
- "requests.\nFinally, running Chromium with "
|
||||
- "--disable-background-networking will disable this, as well as "
|
||||
- "various other features that make network requests automatically."
|
||||
- policy_exception_justification:
|
||||
- "Setting DefaultSearchProviderEnabled Chrome settings policy to "
|
||||
- "false suffices as a way of setting the default search engine to "
|
||||
- "not be Google. But there is no policy that controls navigation "
|
||||
- "error resolution."
|
||||
- })");
|
||||
- auto resource_request = std::make_unique<network::ResourceRequest>();
|
||||
- resource_request->url = GURL(kSearchDomainCheckURL);
|
||||
- // We don't want this load to set new entries in the cache or cookies, lest
|
||||
- // we alarm the user.
|
||||
- resource_request->load_flags =
|
||||
- (net::LOAD_DISABLE_CACHE | net::LOAD_DO_NOT_SAVE_COOKIES);
|
||||
- simple_loader_ = network::SimpleURLLoader::Create(std::move(resource_request),
|
||||
- traffic_annotation);
|
||||
- // Configure to retry at most kMaxRetries times for 5xx errors and network
|
||||
- // changes.
|
||||
- // A network change can propagate through Chrome in various stages, so it's
|
||||
- // possible for this code to be reached via OnNetworkChanged(), and then have
|
||||
- // the load we kick off be canceled due to e.g. the DNS server changing at a
|
||||
- // later time. In general it's not possible to ensure that by the time we
|
||||
- // reach here any requests we start won't be canceled in this fashion, so
|
||||
- // retrying is the best we can do.
|
||||
- static const int kMaxRetries = 5;
|
||||
- simple_loader_->SetRetryOptions(
|
||||
- kMaxRetries,
|
||||
- network::SimpleURLLoader::RetryMode::RETRY_ON_5XX |
|
||||
- network::SimpleURLLoader::RetryMode::RETRY_ON_NETWORK_CHANGE);
|
||||
- simple_loader_->DownloadToString(
|
||||
- client_->GetURLLoaderFactory(),
|
||||
- base::BindOnce(&GoogleURLTracker::OnURLLoaderComplete,
|
||||
- base::Unretained(this)),
|
||||
- 2 * 1024 /* max_body_size */);
|
||||
}
|
@ -1,121 +0,0 @@
|
||||
--- a/chrome/browser/extensions/component_loader.cc
|
||||
+++ b/chrome/browser/extensions/component_loader.cc
|
||||
@@ -345,11 +345,6 @@ void ComponentLoader::AddWebStoreApp() {
|
||||
if (!IsNormalSession())
|
||||
return;
|
||||
#endif
|
||||
-
|
||||
- AddWithNameAndDescription(
|
||||
- IDR_WEBSTORE_MANIFEST, base::FilePath(FILE_PATH_LITERAL("web_store")),
|
||||
- l10n_util::GetStringUTF8(IDS_WEBSTORE_NAME_STORE),
|
||||
- l10n_util::GetStringUTF8(IDS_WEBSTORE_APP_DESCRIPTION));
|
||||
}
|
||||
|
||||
#if defined(OS_CHROMEOS)
|
||||
@@ -447,11 +442,6 @@ void ComponentLoader::AddDefaultComponen
|
||||
AddKeyboardApp();
|
||||
#else // defined(OS_CHROMEOS)
|
||||
DCHECK(!skip_session_components);
|
||||
-#if BUILDFLAG(ENABLE_PRINTING)
|
||||
- // Cloud Print component app. Not required on Chrome OS.
|
||||
- Add(IDR_CLOUDPRINT_MANIFEST,
|
||||
- base::FilePath(FILE_PATH_LITERAL("cloud_print")));
|
||||
-#endif // BUILDFLAG(ENABLE_PRINTING)
|
||||
#endif // defined(OS_CHROMEOS)
|
||||
|
||||
if (!skip_session_components) {
|
||||
@@ -536,12 +526,6 @@ void ComponentLoader::AddDefaultComponen
|
||||
#if BUILDFLAG(ENABLE_HANGOUT_SERVICES_EXTENSION)
|
||||
AddHangoutServicesExtension();
|
||||
#endif // BUILDFLAG(ENABLE_HANGOUT_SERVICES_EXTENSION)
|
||||
- bool install_feedback = enable_background_extensions_during_testing;
|
||||
-#if defined(GOOGLE_CHROME_BUILD)
|
||||
- install_feedback = true;
|
||||
-#endif // defined(GOOGLE_CHROME_BUILD)
|
||||
- if (install_feedback)
|
||||
- Add(IDR_FEEDBACK_MANIFEST, base::FilePath(FILE_PATH_LITERAL("feedback")));
|
||||
}
|
||||
|
||||
#if defined(OS_CHROMEOS)
|
||||
--- a/chrome/browser/extensions/external_component_loader.cc
|
||||
+++ b/chrome/browser/extensions/external_component_loader.cc
|
||||
@@ -29,9 +29,6 @@ ExternalComponentLoader::~ExternalCompon
|
||||
|
||||
void ExternalComponentLoader::StartLoading() {
|
||||
auto prefs = std::make_unique<base::DictionaryValue>();
|
||||
-#if defined(GOOGLE_CHROME_BUILD)
|
||||
- AddExternalExtension(extension_misc::kInAppPaymentsSupportAppId, prefs.get());
|
||||
-#endif // defined(GOOGLE_CHROME_BUILD)
|
||||
|
||||
#if defined(OS_CHROMEOS)
|
||||
{
|
||||
--- a/chrome/browser/extensions/webstore_installer.cc
|
||||
+++ b/chrome/browser/extensions/webstore_installer.cc
|
||||
@@ -568,28 +568,6 @@ void WebstoreInstaller::DownloadNextPend
|
||||
void WebstoreInstaller::DownloadCrx(
|
||||
const std::string& extension_id,
|
||||
InstallSource source) {
|
||||
- download_url_ = GetWebstoreInstallURL(extension_id, source);
|
||||
- MaybeAppendAuthUserParameter(approval_->authuser, &download_url_);
|
||||
-
|
||||
- base::FilePath user_data_dir;
|
||||
- base::PathService::Get(chrome::DIR_USER_DATA, &user_data_dir);
|
||||
- base::FilePath download_path = user_data_dir.Append(kWebstoreDownloadFolder);
|
||||
-
|
||||
- base::FilePath download_directory(g_download_directory_for_tests ?
|
||||
- *g_download_directory_for_tests : download_path);
|
||||
-
|
||||
-#if defined(OS_CHROMEOS)
|
||||
- // Do not use drive for extension downloads.
|
||||
- if (drive::util::IsUnderDriveMountPoint(download_directory)) {
|
||||
- download_directory = DownloadPrefs::FromBrowserContext(
|
||||
- profile_)->GetDefaultDownloadDirectoryForProfile();
|
||||
- }
|
||||
-#endif
|
||||
-
|
||||
- base::PostTaskAndReplyWithResult(
|
||||
- GetExtensionFileTaskRunner().get(), FROM_HERE,
|
||||
- base::BindOnce(&GetDownloadFilePath, download_directory, extension_id),
|
||||
- base::BindOnce(&WebstoreInstaller::StartDownload, this, extension_id));
|
||||
}
|
||||
|
||||
// http://crbug.com/165634
|
||||
@@ -735,28 +713,6 @@ void WebstoreInstaller::UpdateDownloadPr
|
||||
}
|
||||
|
||||
void WebstoreInstaller::StartCrxInstaller(const DownloadItem& download) {
|
||||
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
||||
- DCHECK(!crx_installer_.get());
|
||||
-
|
||||
- // The clock may be backward, e.g. daylight savings time just happenned.
|
||||
- if (download.GetEndTime() >= download.GetStartTime()) {
|
||||
- UMA_HISTOGRAM_TIMES("Extensions.WebstoreDownload.FileDownload",
|
||||
- download.GetEndTime() - download.GetStartTime());
|
||||
- }
|
||||
- ExtensionService* service = ExtensionSystem::Get(profile_)->
|
||||
- extension_service();
|
||||
- CHECK(service);
|
||||
-
|
||||
- const Approval* approval = GetAssociatedApproval(download);
|
||||
- DCHECK(approval);
|
||||
-
|
||||
- crx_installer_ = download_crx_util::CreateCrxInstaller(profile_, download);
|
||||
-
|
||||
- crx_installer_->set_expected_id(approval->extension_id);
|
||||
- crx_installer_->set_is_gallery_install(true);
|
||||
- crx_installer_->set_allow_silent_install(true);
|
||||
-
|
||||
- crx_installer_->InstallCrx(download.GetFullPath());
|
||||
}
|
||||
|
||||
void WebstoreInstaller::ReportFailure(const std::string& error,
|
||||
--- a/chrome/browser/extensions/component_extensions_whitelist/whitelist.cc
|
||||
+++ b/chrome/browser/extensions/component_extensions_whitelist/whitelist.cc
|
||||
@@ -25,7 +25,6 @@ namespace extensions {
|
||||
|
||||
bool IsComponentExtensionWhitelisted(const std::string& extension_id) {
|
||||
const char* const kAllowed[] = {
|
||||
- extension_misc::kInAppPaymentsSupportAppId,
|
||||
extension_misc::kMediaRouterStableExtensionId,
|
||||
extension_misc::kPdfExtensionId,
|
||||
#if defined(OS_CHROMEOS)
|
@ -1,248 +0,0 @@
|
||||
--- a/chrome/browser/chrome_content_browser_client.cc
|
||||
+++ b/chrome/browser/chrome_content_browser_client.cc
|
||||
@@ -1125,7 +1125,7 @@ void ChromeContentBrowserClient::Registe
|
||||
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
|
||||
--- a/chrome/browser/ui/browser_ui_prefs.cc
|
||||
+++ b/chrome/browser/ui/browser_ui_prefs.cc
|
||||
@@ -66,11 +66,11 @@ void RegisterBrowserUserPrefs(user_prefs
|
||||
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->RegisterDictionaryPref(prefs::kBrowserWindowPlacement);
|
||||
registry->RegisterDictionaryPref(prefs::kBrowserWindowPlacementPopup);
|
||||
registry->RegisterDictionaryPref(prefs::kAppWindowPlacement);
|
||||
--- a/chrome/browser/net/prediction_options.cc
|
||||
+++ b/chrome/browser/net/prediction_options.cc
|
||||
@@ -32,7 +32,7 @@ NetworkPredictionStatus CanPrefetchAndPr
|
||||
}
|
||||
return NetworkPredictionStatus::DISABLED_DUE_TO_NETWORK;
|
||||
default:
|
||||
- DCHECK_EQ(NETWORK_PREDICTION_NEVER, network_prediction_options);
|
||||
+ //DCHECK_EQ(NETWORK_PREDICTION_NEVER, network_prediction_options);
|
||||
return NetworkPredictionStatus::DISABLED_ALWAYS;
|
||||
}
|
||||
}
|
||||
--- 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 {
|
||||
--- a/chrome/browser/background/background_mode_manager.cc
|
||||
+++ b/chrome/browser/background/background_mode_manager.cc
|
||||
@@ -352,7 +352,7 @@ void BackgroundModeManager::RegisterPref
|
||||
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) {
|
||||
--- a/components/content_settings/core/browser/cookie_settings.cc
|
||||
+++ b/components/content_settings/core/browser/cookie_settings.cc
|
||||
@@ -50,7 +50,7 @@ void CookieSettings::GetCookieSettings(
|
||||
void CookieSettings::RegisterProfilePrefs(
|
||||
user_prefs::PrefRegistrySyncable* registry) {
|
||||
registry->RegisterBooleanPref(
|
||||
- prefs::kBlockThirdPartyCookies, false,
|
||||
+ prefs::kBlockThirdPartyCookies, true,
|
||||
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
||||
}
|
||||
|
||||
--- a/chrome/browser/ui/navigation_correction_tab_observer.cc
|
||||
+++ b/chrome/browser/ui/navigation_correction_tab_observer.cc
|
||||
@@ -55,7 +55,7 @@ NavigationCorrectionTabObserver::~Naviga
|
||||
// static
|
||||
void NavigationCorrectionTabObserver::RegisterProfilePrefs(
|
||||
user_prefs::PrefRegistrySyncable* prefs) {
|
||||
- prefs->RegisterBooleanPref(prefs::kAlternateErrorPagesEnabled, true,
|
||||
+ prefs->RegisterBooleanPref(prefs::kAlternateErrorPagesEnabled, false,
|
||||
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
||||
}
|
||||
|
||||
--- a/components/autofill/core/common/autofill_prefs.cc
|
||||
+++ b/components/autofill/core/common/autofill_prefs.cc
|
||||
@@ -130,10 +130,10 @@ const char kAutocompleteLastVersionReten
|
||||
void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
|
||||
// Synced prefs. Used for cross-device choices, e.g., credit card Autofill.
|
||||
registry->RegisterBooleanPref(
|
||||
- prefs::kAutofillEnabledDeprecated, true,
|
||||
+ prefs::kAutofillEnabledDeprecated, false,
|
||||
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
||||
registry->RegisterBooleanPref(
|
||||
- prefs::kAutofillProfileEnabled, true,
|
||||
+ prefs::kAutofillProfileEnabled, false,
|
||||
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
||||
registry->RegisterIntegerPref(
|
||||
prefs::kAutofillLastVersionDeduped, 0,
|
||||
@@ -146,7 +146,7 @@ void RegisterProfilePrefs(user_prefs::Pr
|
||||
prefs::kAutofillLastVersionDisusedAddressesDeleted, 0,
|
||||
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
||||
registry->RegisterBooleanPref(
|
||||
- prefs::kAutofillCreditCardEnabled, true,
|
||||
+ prefs::kAutofillCreditCardEnabled, false,
|
||||
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
||||
registry->RegisterStringPref(
|
||||
prefs::kAutofillProfileValidity, "",
|
||||
--- a/chrome/browser/resources/settings/reset_page/reset_profile_dialog.html
|
||||
+++ b/chrome/browser/resources/settings/reset_page/reset_profile_dialog.html
|
||||
@@ -52,7 +52,7 @@
|
||||
</paper-button>
|
||||
</div>
|
||||
<div slot="footer">
|
||||
- <cr-checkbox id="sendSettings" checked>
|
||||
+ <cr-checkbox id="sendSettings">
|
||||
$i18nRaw{resetPageFeedback}</cr-checkbox>
|
||||
</div>
|
||||
</cr-dialog>
|
||||
--- a/chrome/browser/signin/signin_promo.cc
|
||||
+++ b/chrome/browser/signin/signin_promo.cc
|
||||
@@ -171,7 +171,7 @@ bool IsAutoCloseEnabledInEmbeddedURL(con
|
||||
|
||||
void RegisterProfilePrefs(
|
||||
user_prefs::PrefRegistrySyncable* registry) {
|
||||
- registry->RegisterBooleanPref(prefs::kSignInPromoShowOnFirstRunAllowed, true);
|
||||
+ registry->RegisterBooleanPref(prefs::kSignInPromoShowOnFirstRunAllowed, false);
|
||||
registry->RegisterBooleanPref(prefs::kSignInPromoShowNTPBubble, false);
|
||||
registry->RegisterIntegerPref(prefs::kDiceSigninUserMenuPromoCount, 0);
|
||||
}
|
||||
--- a/components/bookmarks/browser/bookmark_utils.cc
|
||||
+++ b/components/bookmarks/browser/bookmark_utils.cc
|
||||
@@ -440,12 +440,12 @@ void GetBookmarksMatchingProperties(Book
|
||||
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,
|
||||
--- a/chrome/browser/profiles/profile.cc
|
||||
+++ b/chrome/browser/profiles/profile.cc
|
||||
@@ -148,7 +148,7 @@ const char Profile::kProfileKey[] = "__P
|
||||
void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
|
||||
registry->RegisterBooleanPref(
|
||||
prefs::kSearchSuggestEnabled,
|
||||
- true,
|
||||
+ false,
|
||||
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
||||
#if defined(OS_ANDROID)
|
||||
registry->RegisterStringPref(
|
||||
--- a/chrome/service/cloud_print/connector_settings.cc
|
||||
+++ b/chrome/service/cloud_print/connector_settings.cc
|
||||
@@ -60,7 +60,7 @@ void ConnectorSettings::InitFrom(Service
|
||||
DCHECK(server_url_.is_valid());
|
||||
|
||||
connect_new_printers_ = prefs->GetBoolean(
|
||||
- prefs::kCloudPrintConnectNewPrinters, true);
|
||||
+ prefs::kCloudPrintConnectNewPrinters, false);
|
||||
|
||||
xmpp_ping_enabled_ = prefs->GetBoolean(
|
||||
prefs::kCloudPrintXmppPingEnabled, false);
|
||||
--- a/chrome/browser/ui/webui/local_discovery/local_discovery_ui.cc
|
||||
+++ b/chrome/browser/ui/webui/local_discovery/local_discovery_ui.cc
|
||||
@@ -127,10 +127,6 @@ void LocalDiscoveryUI::RegisterProfilePr
|
||||
user_prefs::PrefRegistrySyncable* registry) {
|
||||
registry->RegisterBooleanPref(
|
||||
prefs::kLocalDiscoveryNotificationsEnabled,
|
||||
-#if defined(OS_WIN)
|
||||
false,
|
||||
-#else
|
||||
- true,
|
||||
-#endif
|
||||
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
||||
}
|
||||
--- a/extensions/common/extension.cc
|
||||
+++ b/extensions/common/extension.cc
|
||||
@@ -382,14 +382,6 @@ bool Extension::ShouldDisplayInExtension
|
||||
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
|
||||
--- a/components/safe_browsing/common/safe_browsing_prefs.cc
|
||||
+++ b/components/safe_browsing/common/safe_browsing_prefs.cc
|
||||
@@ -149,9 +149,9 @@ void RegisterProfilePrefs(PrefRegistrySi
|
||||
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);
|
||||
--- a/components/password_manager/core/browser/password_manager.cc
|
||||
+++ b/components/password_manager/core/browser/password_manager.cc
|
||||
@@ -354,10 +354,10 @@ bool IsOnlyNewParserEnabled() {
|
||||
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->RegisterStringPref(prefs::kSyncPasswordHash, std::string(),
|
||||
PrefRegistry::NO_REGISTRATION_FLAGS);
|
||||
--- a/components/payments/core/payment_prefs.cc
|
||||
+++ b/components/payments/core/payment_prefs.cc
|
||||
@@ -16,7 +16,7 @@ const char kCanMakePaymentEnabled[] = "p
|
||||
void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
|
||||
registry->RegisterBooleanPref(kPaymentsFirstTransactionCompleted, false);
|
||||
registry->RegisterBooleanPref(
|
||||
- kCanMakePaymentEnabled, true,
|
||||
+ kCanMakePaymentEnabled, false,
|
||||
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
||||
}
|
||||
|
||||
--- a/chrome/browser/signin/account_consistency_mode_manager.cc
|
||||
+++ b/chrome/browser/signin/account_consistency_mode_manager.cc
|
||||
@@ -126,7 +126,7 @@ void AccountConsistencyModeManager::Regi
|
||||
registry->RegisterBooleanPref(prefs::kAccountConsistencyMirrorRequired,
|
||||
false);
|
||||
#endif
|
||||
- registry->RegisterBooleanPref(prefs::kSigninAllowedOnNextStartup, true);
|
||||
+ registry->RegisterBooleanPref(prefs::kSigninAllowedOnNextStartup, false);
|
||||
}
|
||||
|
||||
// static
|
@ -1,52 +0,0 @@
|
||||
--- a/components/web_resource/web_resource_service.cc
|
||||
+++ b/components/web_resource/web_resource_service.cc
|
||||
@@ -128,48 +128,7 @@ bool WebResourceService::GetFetchSchedul
|
||||
// Initializes the fetching of data from the resource server. Data
|
||||
// load calls OnSimpleLoaderComplete.
|
||||
void WebResourceService::StartFetch() {
|
||||
- // Set to false so that next fetch can be scheduled after this fetch or
|
||||
- // if we receive notification that resource is allowed.
|
||||
- fetch_scheduled_ = false;
|
||||
- // Check whether fetching is allowed.
|
||||
- if (!resource_request_allowed_notifier_->ResourceRequestsAllowed())
|
||||
- return;
|
||||
-
|
||||
- // First, put our next cache load on the MessageLoop.
|
||||
- ScheduleFetch(cache_update_delay_ms_);
|
||||
-
|
||||
- // Set cache update time in preferences.
|
||||
- prefs_->SetString(last_update_time_pref_name_,
|
||||
- base::NumberToString(base::Time::Now().ToDoubleT()));
|
||||
-
|
||||
- // If we are still fetching data, exit.
|
||||
- if (in_fetch_)
|
||||
- return;
|
||||
- in_fetch_ = true;
|
||||
-
|
||||
- GURL web_resource_server =
|
||||
- application_locale_.empty()
|
||||
- ? web_resource_server_
|
||||
- : google_util::AppendGoogleLocaleParam(web_resource_server_,
|
||||
- application_locale_);
|
||||
-
|
||||
- DVLOG(1) << "WebResourceService StartFetch " << web_resource_server;
|
||||
- auto resource_request = std::make_unique<network::ResourceRequest>();
|
||||
- resource_request->url = web_resource_server;
|
||||
- // Do not let url fetcher affect existing state in system context
|
||||
- // (by setting cookies, for example).
|
||||
- resource_request->load_flags = net::LOAD_DISABLE_CACHE |
|
||||
- net::LOAD_DO_NOT_SEND_COOKIES |
|
||||
- net::LOAD_DO_NOT_SAVE_COOKIES;
|
||||
- // TODO(https://crbug.com/808498): Re-add data use measurement once
|
||||
- // SimpleURLLoader supports it.
|
||||
- // ID=data_use_measurement::DataUseUserData::WEB_RESOURCE_SERVICE
|
||||
- simple_url_loader_ = network::SimpleURLLoader::Create(
|
||||
- std::move(resource_request), traffic_annotation_);
|
||||
- simple_url_loader_->DownloadToStringOfUnboundedSizeUntilCrashAndDie(
|
||||
- url_loader_factory_.get(),
|
||||
- base::BindOnce(&WebResourceService::OnSimpleLoaderComplete,
|
||||
- base::Unretained(this)));
|
||||
+ in_fetch_ = false;
|
||||
}
|
||||
|
||||
void WebResourceService::EndFetch() {
|
@ -1,53 +0,0 @@
|
||||
--- a/chrome/browser/search/search.cc
|
||||
+++ b/chrome/browser/search/search.cc
|
||||
@@ -196,29 +196,7 @@ struct NewTabURLDetails {
|
||||
|
||||
const GURL local_url(chrome::kChromeSearchLocalNtpUrl);
|
||||
|
||||
- if (ShouldShowLocalNewTab(profile))
|
||||
- return NewTabURLDetails(local_url, NEW_TAB_URL_VALID);
|
||||
-
|
||||
- const TemplateURL* template_url =
|
||||
- GetDefaultSearchProviderTemplateURL(profile);
|
||||
- if (!profile || !template_url)
|
||||
- return NewTabURLDetails(local_url, NEW_TAB_URL_BAD);
|
||||
-
|
||||
- GURL search_provider_url(template_url->new_tab_url_ref().ReplaceSearchTerms(
|
||||
- TemplateURLRef::SearchTermsArgs(base::string16()),
|
||||
- UIThreadSearchTermsData(profile)));
|
||||
-
|
||||
- if (ShouldDelayRemoteNTP(search_provider_url, profile))
|
||||
- return NewTabURLDetails(local_url, NEW_TAB_URL_VALID);
|
||||
-
|
||||
- if (!search_provider_url.is_valid())
|
||||
- return NewTabURLDetails(local_url, NEW_TAB_URL_NOT_SET);
|
||||
- if (!search_provider_url.SchemeIsCryptographic())
|
||||
- return NewTabURLDetails(local_url, NEW_TAB_URL_INSECURE);
|
||||
- if (!IsURLAllowedForSupervisedUser(search_provider_url, profile))
|
||||
- return NewTabURLDetails(local_url, NEW_TAB_URL_BLOCKED);
|
||||
-
|
||||
- return NewTabURLDetails(search_provider_url, NEW_TAB_URL_VALID);
|
||||
+ return NewTabURLDetails(local_url, NEW_TAB_URL_VALID);
|
||||
}
|
||||
|
||||
const GURL url;
|
||||
--- a/components/ntp_snippets/features.cc
|
||||
+++ b/components/ntp_snippets/features.cc
|
||||
@@ -41,7 +41,7 @@ const base::Feature* const kAllFeatures[
|
||||
&kRemoteSuggestionsBackendFeature};
|
||||
|
||||
const base::Feature kArticleSuggestionsFeature{
|
||||
- "NTPArticleSuggestions", base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
+ "NTPArticleSuggestions", base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
|
||||
const base::Feature kRemoteSuggestionsEmulateM58FetchingSchedule{
|
||||
"RemoteSuggestionsEmulateM58FetchingSchedule",
|
||||
@@ -71,7 +71,7 @@ const char kNotificationsDailyLimit[] =
|
||||
const char kNotificationsIgnoredLimitParam[] = "ignored_limit";
|
||||
|
||||
const base::Feature kKeepPrefetchedContentSuggestions{
|
||||
- "KeepPrefetchedContentSuggestions", base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
+ "KeepPrefetchedContentSuggestions", base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
|
||||
const base::Feature kContentSuggestionsDebugLog{
|
||||
"ContentSuggestionsDebugLog", base::FEATURE_DISABLED_BY_DEFAULT};
|
@ -1,16 +0,0 @@
|
||||
--- a/net/dns/host_resolver_manager.cc
|
||||
+++ b/net/dns/host_resolver_manager.cc
|
||||
@@ -120,10 +120,10 @@ const unsigned kMinimumTTLSeconds = kCac
|
||||
// cached.
|
||||
const int kIPv6ProbePeriodMs = 1000;
|
||||
|
||||
-// Google DNS address used for IPv6 probes.
|
||||
-const uint8_t kIPv6ProbeAddress[] = {0x20, 0x01, 0x48, 0x60, 0x48, 0x60,
|
||||
+// RIPE NCC k.root-servers.net. 2001:7fd::1 (anycasted), used for IPv6 probes.
|
||||
+const uint8_t kIPv6ProbeAddress[] = {0x20, 0x01, 0x07, 0xfd, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
- 0x00, 0x00, 0x88, 0x88};
|
||||
+ 0x00, 0x00, 0x00, 0x01};
|
||||
|
||||
enum DnsResolveStatus {
|
||||
RESOLVE_STATUS_DNS_SUCCESS = 0,
|
@ -1,87 +0,0 @@
|
||||
--- a/components/gcm_driver/gcm_channel_status_request.cc
|
||||
+++ b/components/gcm_driver/gcm_channel_status_request.cc
|
||||
@@ -24,8 +24,6 @@ namespace gcm {
|
||||
|
||||
namespace {
|
||||
|
||||
-const char kRequestContentType[] = "application/octet-stream";
|
||||
-const char kGCMChannelTag[] = "gcm_channel";
|
||||
const int kDefaultPollIntervalSeconds = 60 * 60; // 60 minutes.
|
||||
const int kMinPollIntervalSeconds = 30 * 60; // 30 minutes.
|
||||
|
||||
@@ -57,73 +55,8 @@ int GCMChannelStatusRequest::min_poll_in
|
||||
}
|
||||
|
||||
void GCMChannelStatusRequest::Start() {
|
||||
- // url_loader_factory_ can be null for tests.
|
||||
- if (!url_loader_factory_)
|
||||
- return;
|
||||
-
|
||||
- DCHECK(!simple_url_loader_);
|
||||
-
|
||||
- GURL request_url(channel_status_request_url_);
|
||||
-
|
||||
- sync_pb::ExperimentStatusRequest proto_data;
|
||||
- proto_data.add_experiment_name(kGCMChannelTag);
|
||||
- std::string upload_data;
|
||||
- if (!proto_data.SerializeToString(&upload_data)) {
|
||||
- NOTREACHED();
|
||||
- }
|
||||
-
|
||||
- net::NetworkTrafficAnnotationTag traffic_annotation =
|
||||
- net::DefineNetworkTrafficAnnotation("gcm_channel_status_request", R"(
|
||||
- semantics {
|
||||
- sender: "GCM Driver"
|
||||
- description:
|
||||
- "Google Chrome interacts with Google Cloud Messaging to receive "
|
||||
- "push messages for various browser features, as well as on behalf "
|
||||
- "of websites and extensions. The channel status request "
|
||||
- "periodically confirms with Google servers whether the feature "
|
||||
- "should be enabled."
|
||||
- trigger:
|
||||
- "Periodically when Chrome has established an active Google Cloud "
|
||||
- "Messaging subscription. The first request will be issued a minute "
|
||||
- "after the first subscription activates. Subsequent requests will "
|
||||
- "be issued each hour with a jitter of 15 minutes. Google can "
|
||||
- "adjust this interval when it deems necessary."
|
||||
- data:
|
||||
- "A user agent string containing the Chrome version, channel and "
|
||||
- "platform will be sent to the server. No user identifier is sent "
|
||||
- "along with the request."
|
||||
- destination: GOOGLE_OWNED_SERVICE
|
||||
- }
|
||||
- policy {
|
||||
- cookies_allowed: NO
|
||||
- setting:
|
||||
- "Support for interacting with Google Cloud Messaging is enabled by "
|
||||
- "default, and there is no configuration option to completely "
|
||||
- "disable it. Websites wishing to receive push messages must "
|
||||
- "acquire express permission from the user for the 'Notification' "
|
||||
- "permission."
|
||||
- policy_exception_justification:
|
||||
- "Not implemented, considered not useful."
|
||||
- })");
|
||||
-
|
||||
- auto resource_request = std::make_unique<network::ResourceRequest>();
|
||||
-
|
||||
- resource_request->url = request_url;
|
||||
- resource_request->load_flags =
|
||||
- net::LOAD_DO_NOT_SEND_COOKIES | net::LOAD_DO_NOT_SAVE_COOKIES;
|
||||
- resource_request->method = "POST";
|
||||
- resource_request->headers.SetHeader(net::HttpRequestHeaders::kUserAgent,
|
||||
- user_agent_);
|
||||
- // TODO(https://crbug.com/808498): Re-add data use measurement once
|
||||
- // SimpleURLLoader supports it.
|
||||
- // ID=data_use_measurement::DataUseUserData::GCM_DRIVER
|
||||
- simple_url_loader_ = network::SimpleURLLoader::Create(
|
||||
- std::move(resource_request), traffic_annotation);
|
||||
- simple_url_loader_->AttachStringForUpload(upload_data, kRequestContentType);
|
||||
- simple_url_loader_->DownloadToStringOfUnboundedSizeUntilCrashAndDie(
|
||||
- url_loader_factory_.get(),
|
||||
- base::BindOnce(&GCMChannelStatusRequest::OnSimpleLoaderComplete,
|
||||
- base::Unretained(this)));
|
||||
+ // Simulate an empty response and disable GCM.
|
||||
+ callback_.Run(false, false, 0);
|
||||
}
|
||||
|
||||
void GCMChannelStatusRequest::OnSimpleLoaderComplete(
|
@ -1,61 +0,0 @@
|
||||
--- a/components/translate/core/browser/translate_language_list.cc
|
||||
+++ b/components/translate/core/browser/translate_language_list.cc
|
||||
@@ -207,6 +207,8 @@ GURL TranslateLanguageList::TranslateLan
|
||||
}
|
||||
|
||||
void TranslateLanguageList::RequestLanguageList() {
|
||||
+ return;
|
||||
+
|
||||
// If resource requests are not allowed, we'll get a callback when they are.
|
||||
if (!resource_requests_allowed_) {
|
||||
request_pending_ = true;
|
||||
--- a/chrome/browser/spellchecker/spellcheck_hunspell_dictionary.cc
|
||||
+++ b/chrome/browser/spellchecker/spellcheck_hunspell_dictionary.cc
|
||||
@@ -167,7 +167,6 @@ void SpellcheckHunspellDictionary::Retry
|
||||
return;
|
||||
}
|
||||
browser_context_ = browser_context;
|
||||
- DownloadDictionary(GetDictionaryURL());
|
||||
}
|
||||
|
||||
bool SpellcheckHunspellDictionary::IsReady() const {
|
||||
@@ -406,9 +405,6 @@ void SpellcheckHunspellDictionary::Initi
|
||||
}
|
||||
|
||||
if (browser_context_) {
|
||||
- // Download from the UI thread to check that |browser_context_| is
|
||||
- // still valid.
|
||||
- DownloadDictionary(GetDictionaryURL());
|
||||
return;
|
||||
}
|
||||
}
|
||||
--- a/components/translate/core/browser/translate_ranker_impl.cc
|
||||
+++ b/components/translate/core/browser/translate_ranker_impl.cc
|
||||
@@ -157,14 +157,10 @@ TranslateRankerImpl::TranslateRankerImpl
|
||||
ukm::UkmRecorder* ukm_recorder)
|
||||
: ukm_recorder_(ukm_recorder),
|
||||
is_logging_enabled_(false),
|
||||
- is_query_enabled_(base::FeatureList::IsEnabled(kTranslateRankerQuery)),
|
||||
- is_enforcement_enabled_(
|
||||
- base::FeatureList::IsEnabled(kTranslateRankerEnforcement)),
|
||||
- is_auto_blacklist_override_enabled_(base::FeatureList::IsEnabled(
|
||||
- translate::kTranslateRankerAutoBlacklistOverride)),
|
||||
- is_previous_language_matches_override_enabled_(
|
||||
- base::FeatureList::IsEnabled(
|
||||
- translate::kTranslateRankerPreviousLanguageMatchesOverride)),
|
||||
+ is_query_enabled_(false),
|
||||
+ is_enforcement_enabled_(false),
|
||||
+ is_auto_blacklist_override_enabled_(false),
|
||||
+ is_previous_language_matches_override_enabled_(false),
|
||||
weak_ptr_factory_(this) {
|
||||
if (is_query_enabled_ || is_enforcement_enabled_) {
|
||||
model_loader_ = std::make_unique<assist_ranker::RankerModelLoaderImpl>(
|
||||
@@ -238,6 +234,8 @@ bool TranslateRankerImpl::ShouldOfferTra
|
||||
// (or become False).
|
||||
const bool kDefaultResponse = true;
|
||||
|
||||
+ return kDefaultResponse;
|
||||
+
|
||||
translate_event->set_ranker_request_timestamp_sec(
|
||||
(base::TimeTicks::Now() - base::TimeTicks()).InSeconds());
|
||||
translate_event->set_ranker_version(GetModelVersion());
|
@ -1,18 +0,0 @@
|
||||
--- a/components/component_updater/configurator_impl.cc
|
||||
+++ b/components/component_updater/configurator_impl.cc
|
||||
@@ -73,14 +73,7 @@ int ConfiguratorImpl::UpdateDelay() cons
|
||||
}
|
||||
|
||||
std::vector<GURL> ConfiguratorImpl::UpdateUrl() const {
|
||||
- if (url_source_override_.is_valid())
|
||||
- return {GURL(url_source_override_)};
|
||||
-
|
||||
- std::vector<GURL> urls{GURL(kUpdaterJSONDefaultUrl),
|
||||
- GURL(kUpdaterJSONFallbackUrl)};
|
||||
- if (require_encryption_)
|
||||
- update_client::RemoveUnsecureUrls(&urls);
|
||||
-
|
||||
+ std::vector<GURL> urls;
|
||||
return urls;
|
||||
}
|
||||
|
@ -1,102 +0,0 @@
|
||||
--- a/services/device/battery/battery_status_service.cc
|
||||
+++ b/services/device/battery/battery_status_service.cc
|
||||
@@ -19,10 +19,7 @@ BatteryStatusService::BatteryStatusServi
|
||||
: main_thread_task_runner_(base::ThreadTaskRunnerHandle::Get()),
|
||||
update_callback_(base::Bind(&BatteryStatusService::NotifyConsumers,
|
||||
base::Unretained(this))),
|
||||
- status_updated_(false),
|
||||
is_shutdown_(false) {
|
||||
- callback_list_.set_removal_callback(base::Bind(
|
||||
- &BatteryStatusService::ConsumersChanged, base::Unretained(this)));
|
||||
}
|
||||
|
||||
BatteryStatusService::~BatteryStatusService() {}
|
||||
@@ -38,58 +35,16 @@ BatteryStatusService::AddCallback(const
|
||||
DCHECK(main_thread_task_runner_->BelongsToCurrentThread());
|
||||
DCHECK(!is_shutdown_);
|
||||
|
||||
- if (!battery_fetcher_)
|
||||
- battery_fetcher_ = BatteryStatusManager::Create(update_callback_);
|
||||
-
|
||||
- if (callback_list_.empty()) {
|
||||
- bool success = battery_fetcher_->StartListeningBatteryChange();
|
||||
- // On failure pass the default values back.
|
||||
- if (!success)
|
||||
- callback.Run(mojom::BatteryStatus());
|
||||
- }
|
||||
-
|
||||
- if (status_updated_) {
|
||||
- // Send recent status to the new callback if already available.
|
||||
- callback.Run(status_);
|
||||
- }
|
||||
+ // Always pass the default values.
|
||||
+ callback.Run(mojom::BatteryStatus());
|
||||
|
||||
return callback_list_.Add(callback);
|
||||
}
|
||||
|
||||
-void BatteryStatusService::ConsumersChanged() {
|
||||
- if (is_shutdown_)
|
||||
- return;
|
||||
-
|
||||
- if (callback_list_.empty()) {
|
||||
- battery_fetcher_->StopListeningBatteryChange();
|
||||
- status_updated_ = false;
|
||||
- }
|
||||
-}
|
||||
-
|
||||
void BatteryStatusService::NotifyConsumers(const mojom::BatteryStatus& status) {
|
||||
- DCHECK(!is_shutdown_);
|
||||
-
|
||||
- main_thread_task_runner_->PostTask(
|
||||
- FROM_HERE,
|
||||
- base::BindOnce(&BatteryStatusService::NotifyConsumersOnMainThread,
|
||||
- base::Unretained(this), status));
|
||||
-}
|
||||
-
|
||||
-void BatteryStatusService::NotifyConsumersOnMainThread(
|
||||
- const mojom::BatteryStatus& status) {
|
||||
- DCHECK(main_thread_task_runner_->BelongsToCurrentThread());
|
||||
- if (callback_list_.empty())
|
||||
- return;
|
||||
-
|
||||
- status_ = status;
|
||||
- status_updated_ = true;
|
||||
- callback_list_.Notify(status_);
|
||||
}
|
||||
|
||||
void BatteryStatusService::Shutdown() {
|
||||
- if (!callback_list_.empty())
|
||||
- battery_fetcher_->StopListeningBatteryChange();
|
||||
- battery_fetcher_.reset();
|
||||
is_shutdown_ = true;
|
||||
}
|
||||
|
||||
@@ -100,9 +55,6 @@ BatteryStatusService::GetUpdateCallbackF
|
||||
|
||||
void BatteryStatusService::SetBatteryManagerForTesting(
|
||||
std::unique_ptr<BatteryStatusManager> test_battery_manager) {
|
||||
- battery_fetcher_ = std::move(test_battery_manager);
|
||||
- status_ = mojom::BatteryStatus();
|
||||
- status_updated_ = false;
|
||||
is_shutdown_ = false;
|
||||
main_thread_task_runner_ = base::ThreadTaskRunnerHandle::Get();
|
||||
}
|
||||
--- a/services/device/battery/battery_status_service.h
|
||||
+++ b/services/device/battery/battery_status_service.h
|
||||
@@ -56,15 +56,10 @@ class BatteryStatusService {
|
||||
// Updates current battery status and sends new status to interested
|
||||
// render processes. Can be called on any thread via a callback.
|
||||
void NotifyConsumers(const mojom::BatteryStatus& status);
|
||||
- void NotifyConsumersOnMainThread(const mojom::BatteryStatus& status);
|
||||
- void ConsumersChanged();
|
||||
|
||||
scoped_refptr<base::SingleThreadTaskRunner> main_thread_task_runner_;
|
||||
- std::unique_ptr<BatteryStatusManager> battery_fetcher_;
|
||||
BatteryUpdateCallbackList callback_list_;
|
||||
BatteryUpdateCallback update_callback_;
|
||||
- mojom::BatteryStatus status_;
|
||||
- bool status_updated_;
|
||||
bool is_shutdown_;
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(BatteryStatusService);
|
@ -1,12 +0,0 @@
|
||||
# Disable rlz
|
||||
|
||||
--- a/rlz/buildflags/buildflags.gni
|
||||
+++ b/rlz/buildflags/buildflags.gni
|
||||
@@ -6,6 +6,6 @@ import("//build/config/chrome_build.gni"
|
||||
|
||||
# Whether we are using the rlz library or not. Platforms like Android send
|
||||
# rlz codes for searches but do not use the library.
|
||||
-enable_rlz_support = is_win || is_mac || is_ios || is_chromeos
|
||||
+enable_rlz_support = false
|
||||
|
||||
enable_rlz = is_chrome_branded && enable_rlz_support
|
@ -1,24 +0,0 @@
|
||||
description: disable dependency on chrome/android
|
||||
author: Michael Gilbert <mgilbert@debian.org>
|
||||
|
||||
--- a/device/vr/buildflags/buildflags.gni
|
||||
+++ b/device/vr/buildflags/buildflags.gni
|
||||
@@ -5,7 +5,6 @@
|
||||
import("//build/config/chrome_build.gni")
|
||||
import("//build/config/chromecast_build.gni")
|
||||
import("//build/config/gclient_args.gni")
|
||||
-import("//chrome/android/channel.gni")
|
||||
|
||||
declare_args() {
|
||||
enable_gvr_services = is_android && !is_chromecast &&
|
||||
--- a/BUILD.gn
|
||||
+++ b/BUILD.gn
|
||||
@@ -371,7 +371,7 @@ group("gn_all") {
|
||||
# seems currently broken for this platform at the moment, and the
|
||||
# corresponding code build and works on Linux unmodified.
|
||||
# See instructions in the corresponding BUILD.gn.
|
||||
- if (is_linux) {
|
||||
+ if (is_android) {
|
||||
deps +=
|
||||
[ "//third_party/android_crazy_linker:android_crazy_linker_zip_fuzzer" ]
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
Fix 'gn gen' when gn is built in debug config
|
||||
|
||||
Fixes this DCHECK:
|
||||
https://cs.chromium.org/chromium/gn/tools/gn/source_file.cc?q=source_file.cc&sq=package:chromium&dr&l=21
|
||||
|
||||
BUG=None
|
||||
|
||||
Change-Id: Ide60a650c800d4a0981b4f28cf0427fa91616464
|
||||
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1613888
|
||||
Reviewed-by: Brian Sheedy <bsheedy@chromium.org>
|
||||
Commit-Queue: Brian Sheedy <bsheedy@chromium.org>
|
||||
Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
|
||||
Auto-Submit: Thomas Anderson <thomasanderson@chromium.org>
|
||||
Cr-Commit-Position: refs/heads/master@{#660103}
|
||||
diff --git a/tools/perf/contrib/vr_benchmarks/BUILD.gn b/tools/perf/contrib/vr_benchmarks/BUILD.gn
|
||||
index 758057a..51644e0 100644
|
||||
--- a/tools/perf/contrib/vr_benchmarks/BUILD.gn
|
||||
+++ b/tools/perf/contrib/vr_benchmarks/BUILD.gn
|
||||
@@ -72,7 +72,7 @@
|
||||
"//chrome/browser/resources/vr/assets/vr_assets_component_files.json",
|
||||
]
|
||||
outputs = [
|
||||
- "$target_gen_dir/vr_assets_profile/",
|
||||
+ "$target_gen_dir/vr_assets_profile",
|
||||
]
|
||||
args = [
|
||||
"--output",
|
@ -1,20 +0,0 @@
|
||||
--- a/third_party/angle/src/common/debug.h 2019-06-02 17:59:16.698392030 -0000
|
||||
+++ b/third_party/angle/src/common/debug.h 2019-06-02 17:59:48.738265672 -0000
|
||||
@@ -248,7 +248,7 @@
|
||||
# define EVENT(message, ...) (void(0))
|
||||
#endif
|
||||
|
||||
-#if defined(COMPILER_GCC) || defined(__clang__)
|
||||
+#if defined(__GNUC__) || defined(__clang__)
|
||||
# define ANGLE_CRASH() __builtin_trap()
|
||||
#else
|
||||
# define ANGLE_CRASH() ((void)(*(volatile char *)0 = 0)), __assume(0)
|
||||
@@ -336,7 +336,7 @@
|
||||
# define ANGLE_ENABLE_STRUCT_PADDING_WARNINGS \
|
||||
_Pragma("clang diagnostic push") _Pragma("clang diagnostic error \"-Wpadded\"")
|
||||
# define ANGLE_DISABLE_STRUCT_PADDING_WARNINGS _Pragma("clang diagnostic pop")
|
||||
-#elif defined(COMPILER_GCC)
|
||||
+#elif defined(__GNUC__)
|
||||
# define ANGLE_ENABLE_STRUCT_PADDING_WARNINGS \
|
||||
_Pragma("GCC diagnostic push") _Pragma("GCC diagnostic error \"-Wpadded\"")
|
||||
# define ANGLE_DISABLE_STRUCT_PADDING_WARNINGS _Pragma("GCC diagnostic pop")
|
@ -1,17 +0,0 @@
|
||||
Issue 945938: Build fails with clang/llvm-8
|
||||
https://bugs.chromium.org/p/chromium/issues/detail?id=945938&q=TabStripModelChange&colspec=ID%20Pri%20M%20Stars%20ReleaseBlock%20Component%20Status%20Owner%20Summary%20OS%20Modified
|
||||
|
||||
diff --git a/chrome/browser/ui/tabs/tab_strip_model_observer.h b/chrome/browser/ui/tabs/tab_strip_model_observer.h
|
||||
index 6c8bce5..7f67b7d 100644
|
||||
--- a/chrome/browser/ui/tabs/tab_strip_model_observer.h
|
||||
+++ b/chrome/browser/ui/tabs/tab_strip_model_observer.h
|
||||
@@ -135,7 +135,7 @@ class TabStripModelChange {
|
||||
|
||||
private:
|
||||
const Type type_ = kSelectionOnly;
|
||||
- const std::vector<Delta> deltas_;
|
||||
+ std::vector<Delta> deltas_;
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(TabStripModelChange);
|
||||
};
|
||||
|
@ -1,63 +0,0 @@
|
||||
--- a/third_party/lss/BUILD.gn
|
||||
+++ b/third_party/lss/BUILD.gn
|
||||
@@ -0,0 +1,31 @@
|
||||
+# Copyright 2019 The Crashpad Authors. All rights reserved.
|
||||
+#
|
||||
+# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
+# you may not use this file except in compliance with the License.
|
||||
+# You may obtain a copy of the License at
|
||||
+#
|
||||
+# http://www.apache.org/licenses/LICENSE-2.0
|
||||
+#
|
||||
+# Unless required by applicable law or agreed to in writing, software
|
||||
+# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
+# See the License for the specific language governing permissions and
|
||||
+# limitations under the License.
|
||||
+
|
||||
+import("../../build/crashpad_buildconfig.gni")
|
||||
+
|
||||
+config("lss_config") {
|
||||
+ if (crashpad_is_in_chromium) {
|
||||
+ defines = [ "CRASHPAD_LSS_SOURCE_EXTERNAL" ]
|
||||
+ } else {
|
||||
+ defines = [ "CRASHPAD_LSS_SOURCE_EMBEDDED" ]
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+source_set("lss") {
|
||||
+ public_configs = [ ":lss_config" ]
|
||||
+
|
||||
+ sources = [
|
||||
+ "lss.h",
|
||||
+ ]
|
||||
+}
|
||||
--- a/third_party/lss/lss.h
|
||||
+++ b/third_party/lss/lss.h
|
||||
@@ -0,0 +1,26 @@
|
||||
+// Copyright 2019 The Crashpad Authors. All rights reserved.
|
||||
+//
|
||||
+// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
+// you may not use this file except in compliance with the License.
|
||||
+// You may obtain a copy of the License at
|
||||
+//
|
||||
+// http://www.apache.org/licenses/LICENSE-2.0
|
||||
+//
|
||||
+// Unless required by applicable law or agreed to in writing, software
|
||||
+// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
+// See the License for the specific language governing permissions and
|
||||
+// limitations under the License.
|
||||
+
|
||||
+#ifndef CRASHPAD_THIRD_PARTY_LSS_LSS_H_
|
||||
+#define CRASHPAD_THIRD_PARTY_LSS_LSS_H_
|
||||
+
|
||||
+#if defined(CRASHPAD_LSS_SOURCE_EXTERNAL)
|
||||
+#include "third_party/lss/linux_syscall_support.h"
|
||||
+#elif defined(CRASHPAD_LSS_SOURCE_EMBEDDED)
|
||||
+#include "third_party/lss/lss/linux_syscall_support.h"
|
||||
+#else
|
||||
+#error Unknown lss source
|
||||
+#endif
|
||||
+
|
||||
+#endif // CRASHPAD_THIRD_PARTY_LSS_LSS_H_
|
@ -1,101 +0,0 @@
|
||||
From 41d954dec0669c9a85730c0bde7df7ba7a0ff43e Mon Sep 17 00:00:00 2001
|
||||
From: Jose Dapena Paz <jose.dapena@lge.com>
|
||||
Date: Thu, 06 Jun 2019 15:30:49 +0000
|
||||
Subject: [PATCH] Fix AutocompleteMatch move constructor/assign operator noexcept
|
||||
|
||||
For AutocompleteMatch to declare noexcept them, all the contained
|
||||
properties need to be noexcept too. This is required at least
|
||||
for SuggestionAnswer, because base::string16 will make default
|
||||
calculated signature of the move operator noexcept(false).
|
||||
|
||||
To avoid this issue we explicitely declare them on SuggestionAnswer,
|
||||
and its member classes TextField and ImageLine.
|
||||
|
||||
Bug: 819294
|
||||
Change-Id: I8714f2c6352a3292bdebdc3aed9790270e49c580
|
||||
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1554669
|
||||
Reviewed-by: Kevin Bailey <krb@chromium.org>
|
||||
Commit-Queue: José Dapena Paz <jose.dapena@lge.com>
|
||||
Cr-Commit-Position: refs/heads/master@{#666714}
|
||||
---
|
||||
|
||||
diff --git a/components/omnibox/browser/suggestion_answer.cc b/components/omnibox/browser/suggestion_answer.cc
|
||||
index 151e55f..a0c9049 100644
|
||||
--- a/components/omnibox/browser/suggestion_answer.cc
|
||||
+++ b/components/omnibox/browser/suggestion_answer.cc
|
||||
@@ -55,6 +55,12 @@
|
||||
|
||||
SuggestionAnswer::TextField::TextField() = default;
|
||||
SuggestionAnswer::TextField::~TextField() = default;
|
||||
+SuggestionAnswer::TextField::TextField(const TextField&) = default;
|
||||
+SuggestionAnswer::TextField::TextField(TextField&&) noexcept = default;
|
||||
+SuggestionAnswer::TextField& SuggestionAnswer::TextField::operator=(
|
||||
+ const TextField&) = default;
|
||||
+SuggestionAnswer::TextField& SuggestionAnswer::TextField::operator=(
|
||||
+ TextField&&) noexcept = default;
|
||||
|
||||
// static
|
||||
bool SuggestionAnswer::TextField::ParseTextField(const base::Value& field_json,
|
||||
@@ -93,9 +99,12 @@
|
||||
SuggestionAnswer::ImageLine::ImageLine()
|
||||
: num_text_lines_(1) {}
|
||||
SuggestionAnswer::ImageLine::ImageLine(const ImageLine& line) = default;
|
||||
+SuggestionAnswer::ImageLine::ImageLine(ImageLine&&) noexcept = default;
|
||||
|
||||
SuggestionAnswer::ImageLine& SuggestionAnswer::ImageLine::operator=(
|
||||
const ImageLine& line) = default;
|
||||
+SuggestionAnswer::ImageLine& SuggestionAnswer::ImageLine::operator=(
|
||||
+ ImageLine&&) noexcept = default;
|
||||
|
||||
SuggestionAnswer::ImageLine::~ImageLine() {}
|
||||
|
||||
@@ -251,9 +260,14 @@
|
||||
|
||||
SuggestionAnswer::SuggestionAnswer(const SuggestionAnswer& answer) = default;
|
||||
|
||||
+SuggestionAnswer::SuggestionAnswer(SuggestionAnswer&&) noexcept = default;
|
||||
+
|
||||
SuggestionAnswer& SuggestionAnswer::operator=(const SuggestionAnswer& answer) =
|
||||
default;
|
||||
|
||||
+SuggestionAnswer& SuggestionAnswer::operator=(SuggestionAnswer&&) noexcept =
|
||||
+ default;
|
||||
+
|
||||
SuggestionAnswer::~SuggestionAnswer() = default;
|
||||
|
||||
// static
|
||||
diff --git a/components/omnibox/browser/suggestion_answer.h b/components/omnibox/browser/suggestion_answer.h
|
||||
index 31be937..2840ace 100644
|
||||
--- a/components/omnibox/browser/suggestion_answer.h
|
||||
+++ b/components/omnibox/browser/suggestion_answer.h
|
||||
@@ -125,6 +125,10 @@
|
||||
public:
|
||||
TextField();
|
||||
~TextField();
|
||||
+ TextField(const TextField&);
|
||||
+ TextField(TextField&&) noexcept;
|
||||
+ TextField& operator=(const TextField&);
|
||||
+ TextField& operator=(TextField&&) noexcept;
|
||||
|
||||
// Parses |field_json| dictionary and populates |text_field| with the
|
||||
// contents. If any of the required elements is missing, returns false and
|
||||
@@ -162,7 +166,9 @@
|
||||
public:
|
||||
ImageLine();
|
||||
explicit ImageLine(const ImageLine& line);
|
||||
+ ImageLine(ImageLine&&) noexcept;
|
||||
ImageLine& operator=(const ImageLine& line);
|
||||
+ ImageLine& operator=(ImageLine&&) noexcept;
|
||||
~ImageLine();
|
||||
|
||||
// Parses dictionary |line_json| and populates |image_line| with the
|
||||
@@ -213,7 +219,9 @@
|
||||
|
||||
SuggestionAnswer();
|
||||
SuggestionAnswer(const SuggestionAnswer& answer);
|
||||
+ SuggestionAnswer(SuggestionAnswer&&) noexcept;
|
||||
SuggestionAnswer& operator=(const SuggestionAnswer& answer);
|
||||
+ SuggestionAnswer& operator=(SuggestionAnswer&&) noexcept;
|
||||
~SuggestionAnswer();
|
||||
|
||||
// Parses dictionary |answer_json| and fills a SuggestionAnswer containing the
|
@ -1,50 +0,0 @@
|
||||
From cdf306db81efaaaa954487585d5a5a16205a5ebd Mon Sep 17 00:00:00 2001
|
||||
From: Jose Dapena Paz <jose.dapena@lge.com>
|
||||
Date: Wed, 05 Jun 2019 14:45:06 +0000
|
||||
Subject: [PATCH] Avoid pure virtual crash destroying RenderProcessUserData
|
||||
|
||||
When RenderProcessUserData is destroyed from the destructor of
|
||||
RenderProcessHostImpl, it is done in the destructor of RenderProcessHost.
|
||||
At this point RemoveObserver override is already freed, so RenderProcessHost
|
||||
is pure virtual. This crash happens at least building with GCC:
|
||||
|
||||
at /usr/include/c++/8/ext/new_allocator.h:140
|
||||
(this=0x7fffffffcb50, __in_chrg=<optimized out>) at /usr/include/c++/8/bits/stl_tree.h:964
|
||||
|
||||
We need to destroy RenderProcessUserData before that happens. To do that
|
||||
we can just override RenderProcessHostDestroyed.
|
||||
|
||||
Bug: 910288
|
||||
Change-Id: I38107b178829b0cb7494f5333b765e5b087d82cd
|
||||
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1645366
|
||||
Commit-Queue: Sigurður Ásgeirsson <siggi@chromium.org>
|
||||
Reviewed-by: Sigurður Ásgeirsson <siggi@chromium.org>
|
||||
Cr-Commit-Position: refs/heads/master@{#666279}
|
||||
---
|
||||
|
||||
diff --git a/chrome/browser/performance_manager/render_process_user_data.cc b/chrome/browser/performance_manager/render_process_user_data.cc
|
||||
index 2e2c199..ef6e1fb 100644
|
||||
--- a/chrome/browser/performance_manager/render_process_user_data.cc
|
||||
+++ b/chrome/browser/performance_manager/render_process_user_data.cc
|
||||
@@ -116,4 +116,9 @@
|
||||
base::Unretained(process_node_.get()), info.exit_code));
|
||||
}
|
||||
|
||||
+void RenderProcessUserData::RenderProcessHostDestroyed(
|
||||
+ content::RenderProcessHost* host) {
|
||||
+ host->RemoveUserData(kRenderProcessUserDataKey);
|
||||
+}
|
||||
+
|
||||
} // namespace performance_manager
|
||||
diff --git a/chrome/browser/performance_manager/render_process_user_data.h b/chrome/browser/performance_manager/render_process_user_data.h
|
||||
index ac74b1d..f3b4d16 100644
|
||||
--- a/chrome/browser/performance_manager/render_process_user_data.h
|
||||
+++ b/chrome/browser/performance_manager/render_process_user_data.h
|
||||
@@ -47,6 +47,7 @@
|
||||
void RenderProcessExited(
|
||||
content::RenderProcessHost* host,
|
||||
const content::ChildProcessTerminationInfo& info) override;
|
||||
+ void RenderProcessHostDestroyed(content::RenderProcessHost* host) override;
|
||||
|
||||
// All instances are linked together in a doubly linked list to allow orderly
|
||||
// destruction at browser shutdown time.
|
@ -1,31 +0,0 @@
|
||||
From aeed4d1f15ce84a17ea0bc219e258dc4982b2368 Mon Sep 17 00:00:00 2001
|
||||
From: Jose Dapena Paz <jose.dapena@lge.com>
|
||||
Date: Fri, 26 Apr 2019 20:07:05 +0000
|
||||
Subject: [PATCH] libstdc++: do not assume unique_ptr has ostream operator
|
||||
|
||||
CompositorFrameReportingController is using DCHECK_NE to compare
|
||||
several unique_ptr. This is valid in libc++, but on libstdc++ unique_ptr
|
||||
does not have an ostream operator.
|
||||
|
||||
Change-Id: I9f23ef17f02b9e107694ba493f6f8f3caf5cac4d
|
||||
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1584292
|
||||
Reviewed-by: Sunny Sachanandani <sunnyps@chromium.org>
|
||||
Commit-Queue: José Dapena Paz <jose.dapena@lge.com>
|
||||
Cr-Commit-Position: refs/heads/master@{#654570}
|
||||
---
|
||||
|
||||
diff --git a/cc/scheduler/compositor_frame_reporting_controller.cc b/cc/scheduler/compositor_frame_reporting_controller.cc
|
||||
index f1587ed..1b17021 100644
|
||||
--- a/cc/scheduler/compositor_frame_reporting_controller.cc
|
||||
+++ b/cc/scheduler/compositor_frame_reporting_controller.cc
|
||||
@@ -31,8 +31,8 @@
|
||||
|
||||
void CompositorFrameReportingController::WillBeginMainFrame() {
|
||||
DCHECK(reporters_[PipelineStage::kBeginImplFrame]);
|
||||
- DCHECK_NE(reporters_[PipelineStage::kBeginMainFrame],
|
||||
- reporters_[PipelineStage::kBeginImplFrame]);
|
||||
+ DCHECK(reporters_[PipelineStage::kBeginMainFrame] !=
|
||||
+ reporters_[PipelineStage::kBeginImplFrame]);
|
||||
reporters_[PipelineStage::kBeginImplFrame]->StartStage(
|
||||
"SendBeginMainFrameToCommit");
|
||||
AdvanceReporterStage(PipelineStage::kBeginImplFrame,
|
@ -1,196 +0,0 @@
|
||||
From a1207cc75454e653030716948d27ec27412f6fe8 Mon Sep 17 00:00:00 2001
|
||||
From: Mike Gilbert <floppym@gentoo.org>
|
||||
Date: Sat, 1 Jun 2019 14:22:57 +0100
|
||||
Subject: [PATCH] Disable various compiler configs
|
||||
|
||||
---
|
||||
build/config/compiler/BUILD.gn | 68 +++++++++++++++-------------------
|
||||
1 file changed, 29 insertions(+), 39 deletions(-)
|
||||
|
||||
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
|
||||
index 4b24c76..0737326 100644
|
||||
--- a/build/config/compiler/BUILD.gn
|
||||
+++ b/build/config/compiler/BUILD.gn
|
||||
@@ -230,8 +230,6 @@ config("compiler") {
|
||||
|
||||
configs += [
|
||||
# See the definitions below.
|
||||
- ":clang_revision",
|
||||
- ":compiler_cpu_abi",
|
||||
":compiler_codegen",
|
||||
":compiler_deterministic",
|
||||
]
|
||||
@@ -471,20 +469,6 @@ config("compiler") {
|
||||
}
|
||||
}
|
||||
|
||||
- if (is_clang && !is_nacl && !use_xcode_clang) {
|
||||
- cflags += [ "-fcrash-diagnostics-dir=" +
|
||||
- rebase_path("//tools/clang/crashreports", root_build_dir) ]
|
||||
-
|
||||
- cflags += [
|
||||
- # TODO(hans): Remove this once Clang generates better optimized debug info
|
||||
- # by default. https://crbug.com/765793
|
||||
- "-Xclang",
|
||||
- "-mllvm",
|
||||
- "-Xclang",
|
||||
- "-instcombine-lower-dbg-declare=0",
|
||||
- ]
|
||||
- }
|
||||
-
|
||||
# C11/C++11 compiler flags setup.
|
||||
# ---------------------------
|
||||
if (is_linux || is_android || (is_nacl && is_clang) || current_os == "aix") {
|
||||
@@ -1433,6 +1417,12 @@ config("default_warnings") {
|
||||
"-Wno-narrowing",
|
||||
]
|
||||
|
||||
+ # -Wno-class-memaccess warns about hash table and vector in blink.
|
||||
+ # But the violation is intentional.
|
||||
+ if (!is_nacl) {
|
||||
+ cflags_cc += [ "-Wno-class-memaccess" ]
|
||||
+ }
|
||||
+
|
||||
# -Wunused-local-typedefs is broken in gcc,
|
||||
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63872
|
||||
cflags += [ "-Wno-unused-local-typedefs" ]
|
||||
@@ -1447,6 +1437,10 @@ config("default_warnings") {
|
||||
# comments
|
||||
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61638
|
||||
cflags += [ "-Wno-comments" ]
|
||||
+
|
||||
+ # -Wpacked-not-aligned complains all generated mojom-shared-internal.h
|
||||
+ # files.
|
||||
+ cflags += [ "-Wno-packed-not-aligned" ]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1523,7 +1517,7 @@ config("chromium_code") {
|
||||
defines = [ "_HAS_NODISCARD" ]
|
||||
}
|
||||
} else {
|
||||
- cflags = [ "-Wall" ]
|
||||
+ cflags = []
|
||||
if (treat_warnings_as_errors) {
|
||||
cflags += [ "-Werror" ]
|
||||
|
||||
@@ -1532,10 +1526,6 @@ config("chromium_code") {
|
||||
# well.
|
||||
ldflags = [ "-Werror" ]
|
||||
}
|
||||
- if (is_clang) {
|
||||
- # Enable extra warnings for chromium_code when we control the compiler.
|
||||
- cflags += [ "-Wextra" ]
|
||||
- }
|
||||
|
||||
# In Chromium code, we define __STDC_foo_MACROS in order to get the
|
||||
# C99 macros on Mac and Linux.
|
||||
@@ -1544,15 +1534,6 @@ config("chromium_code") {
|
||||
"__STDC_FORMAT_MACROS",
|
||||
]
|
||||
|
||||
- if (!is_debug && !using_sanitizer && current_cpu != "s390x" &&
|
||||
- current_cpu != "s390" && current_cpu != "ppc64" &&
|
||||
- current_cpu != "mips" && current_cpu != "mips64") {
|
||||
- # Non-chromium code is not guaranteed to compile cleanly with
|
||||
- # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are
|
||||
- # disabled, so only do that for Release build.
|
||||
- defines += [ "_FORTIFY_SOURCE=2" ]
|
||||
- }
|
||||
-
|
||||
if (is_mac) {
|
||||
cflags_objc = [ "-Wobjc-missing-property-synthesis" ]
|
||||
cflags_objcc = [ "-Wobjc-missing-property-synthesis" ]
|
||||
@@ -1941,7 +1922,8 @@ config("default_stack_frames") {
|
||||
}
|
||||
|
||||
# Default "optimization on" config.
|
||||
-config("optimize") {
|
||||
+config("optimize") { }
|
||||
+config("xoptimize") {
|
||||
if (is_win) {
|
||||
# TODO(thakis): Remove is_clang here, https://crbug.com/598772
|
||||
if (is_official_build && full_wpo_on_official && !is_clang) {
|
||||
@@ -1975,7 +1957,8 @@ config("optimize") {
|
||||
}
|
||||
|
||||
# Same config as 'optimize' but without the WPO flag.
|
||||
-config("optimize_no_wpo") {
|
||||
+config("optimize_no_wpo") { }
|
||||
+config("xoptimize_no_wpo") {
|
||||
if (is_win) {
|
||||
# Favor size over speed, /O1 must be before the common flags. The GYP
|
||||
# build also specifies /Os and /GF but these are implied by /O1.
|
||||
@@ -1998,7 +1981,8 @@ config("optimize_no_wpo") {
|
||||
}
|
||||
|
||||
# Turn off optimizations.
|
||||
-config("no_optimize") {
|
||||
+config("no_optimize") { }
|
||||
+config("xno_optimize") {
|
||||
if (is_win) {
|
||||
cflags = [
|
||||
"/Od", # Disable optimization.
|
||||
@@ -2026,7 +2010,8 @@ config("no_optimize") {
|
||||
# Turns up the optimization level. On Windows, this implies whole program
|
||||
# optimization and link-time code generation which is very expensive and should
|
||||
# be used sparingly.
|
||||
-config("optimize_max") {
|
||||
+config("optimize_max") { }
|
||||
+config("xoptimize_max") {
|
||||
if (is_nacl && is_nacl_irt) {
|
||||
# The NaCl IRT is a special case and always wants its own config.
|
||||
# Various components do:
|
||||
@@ -2073,7 +2058,8 @@ config("optimize_max") {
|
||||
#
|
||||
# TODO(crbug.com/621335) - rework how all of these configs are related
|
||||
# so that we don't need this disclaimer.
|
||||
-config("optimize_speed") {
|
||||
+config("optimize_speed") { }
|
||||
+config("xoptimize_speed") {
|
||||
if (is_nacl && is_nacl_irt) {
|
||||
# The NaCl IRT is a special case and always wants its own config.
|
||||
# Various components do:
|
||||
@@ -2111,7 +2097,8 @@ config("optimize_speed") {
|
||||
}
|
||||
}
|
||||
|
||||
-config("optimize_fuzzing") {
|
||||
+config("optimize_fuzzing") { }
|
||||
+config("xoptimize_fuzzing") {
|
||||
cflags = [ "-O1" ] + common_optimize_on_cflags
|
||||
ldflags = common_optimize_on_ldflags
|
||||
visibility = [ ":default_optimization" ]
|
||||
@@ -2213,7 +2200,8 @@ config("win_pdbaltpath") {
|
||||
}
|
||||
|
||||
# Full symbols.
|
||||
-config("symbols") {
|
||||
+config("symbols") { }
|
||||
+config("xsymbols") {
|
||||
if (is_win) {
|
||||
if (use_goma || is_clang) {
|
||||
# Note that with VC++ this requires is_win_fastlink, enforced elsewhere.
|
||||
@@ -2323,7 +2311,8 @@ config("symbols") {
|
||||
# Minimal symbols.
|
||||
# This config guarantees to hold symbol for stack trace which are shown to user
|
||||
# when crash happens in unittests running on buildbot.
|
||||
-config("minimal_symbols") {
|
||||
+config("minimal_symbols") { }
|
||||
+config("xminimal_symbols") {
|
||||
if (is_win) {
|
||||
# Linker symbols for backtraces only.
|
||||
cflags = []
|
||||
@@ -2380,7 +2369,8 @@ config("minimal_symbols") {
|
||||
}
|
||||
|
||||
# No symbols.
|
||||
-config("no_symbols") {
|
||||
+config("no_symbols") { }
|
||||
+config("xno_symbols") {
|
||||
if (!is_win) {
|
||||
cflags = [ "-g0" ]
|
||||
asmflags = cflags
|
||||
--
|
||||
2.21.0
|
||||
|
@ -1,14 +0,0 @@
|
||||
--- a/base/strings/char_traits.h
|
||||
+++ b/base/strings/char_traits.h
|
||||
@@ -67,9 +67,9 @@
|
||||
return __builtin_memcmp(s1, s2, n);
|
||||
#else
|
||||
for (; n; --n, ++s1, ++s2) {
|
||||
- if (*s1 < *s2)
|
||||
+ if ((unsigned char)*s1 < (unsigned char)*s2)
|
||||
return -1;
|
||||
- if (*s1 > *s2)
|
||||
+ if ((unsigned char)*s1 > (unsigned char)*s2)
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
@ -1,63 +0,0 @@
|
||||
diff --git chromium-73.0.3683.103/build/config/ui.gni chromium-73.0.3683.103/build/config/ui.gni
|
||||
index 547b42fb5..966b00c2a 100644
|
||||
--- chromium-73.0.3683.103/build/config/ui.gni
|
||||
+++ chromium-73.0.3683.103/build/config/ui.gni
|
||||
@@ -51,8 +51,10 @@ if (use_ozone) {
|
||||
use_glib = false
|
||||
}
|
||||
|
||||
-# Whether to use atk, the Accessibility ToolKit library
|
||||
-use_atk = is_desktop_linux && use_x11
|
||||
+declare_args() {
|
||||
+ # Whether to use atk, the Accessibility ToolKit library
|
||||
+ use_atk = is_desktop_linux && use_x11
|
||||
+}
|
||||
# =============================================
|
||||
# PLEASE DO NOT ADD MORE FLAGS TO THIS FILE
|
||||
# =============================================
|
||||
diff --git chromium-73.0.3683.103/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc chromium-73.0.3683.103/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc
|
||||
index bd2f435da..5c2ec8b90 100644
|
||||
--- chromium-73.0.3683.103/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc
|
||||
+++ chromium-73.0.3683.103/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc
|
||||
@@ -17,7 +17,9 @@
|
||||
#include "base/threading/thread_task_runner_handle.h"
|
||||
#include "base/trace_event/trace_event.h"
|
||||
#include "third_party/skia/include/core/SkPath.h"
|
||||
+#if defined(USE_ATK)
|
||||
#include "ui/accessibility/platform/atk_util_auralinux.h"
|
||||
+#endif
|
||||
#include "ui/aura/client/aura_constants.h"
|
||||
#include "ui/aura/client/cursor_client.h"
|
||||
#include "ui/aura/client/focus_client.h"
|
||||
@@ -2049,11 +2051,15 @@ uint32_t DesktopWindowTreeHostX11::DispatchEvent(
|
||||
break;
|
||||
}
|
||||
case KeyPress: {
|
||||
+#if defined(USE_ATK)
|
||||
if (ui::AtkUtilAuraLinux::HandleKeyEvent(xev) !=
|
||||
ui::DiscardAtkKeyEvent::Discard) {
|
||||
+#endif
|
||||
ui::KeyEvent keydown_event(xev);
|
||||
DispatchKeyEvent(&keydown_event);
|
||||
+#if defined(USE_ATK)
|
||||
}
|
||||
+#endif
|
||||
break;
|
||||
}
|
||||
case KeyRelease: {
|
||||
@@ -2062,11 +2068,15 @@ uint32_t DesktopWindowTreeHostX11::DispatchEvent(
|
||||
if (!IsActive() && !HasCapture())
|
||||
break;
|
||||
|
||||
+#if defined(USE_ATK)
|
||||
if (ui::AtkUtilAuraLinux::HandleKeyEvent(xev) !=
|
||||
ui::DiscardAtkKeyEvent::Discard) {
|
||||
+#endif
|
||||
ui::KeyEvent key_event(xev);
|
||||
DispatchKeyEvent(&key_event);
|
||||
+#if defined(USE_ATK)
|
||||
}
|
||||
+#endif
|
||||
break;
|
||||
}
|
||||
case ButtonPress:
|
@ -1,185 +0,0 @@
|
||||
--- chromium-75.0.3770.100/chrome/browser/BUILD.gn
|
||||
+++ chromium-75.0.3770.100/chrome/browser/BUILD.gn
|
||||
@@ -3681,14 +3681,16 @@ jumbo_split_static_library("browser") {
|
||||
"first_run/upgrade_util_linux.cc",
|
||||
"first_run/upgrade_util_linux.h",
|
||||
"icon_loader_auralinux.cc",
|
||||
- "password_manager/native_backend_kwallet_x.cc",
|
||||
- "password_manager/native_backend_kwallet_x.h",
|
||||
"platform_util_linux.cc",
|
||||
"shell_integration_linux.cc",
|
||||
"shell_integration_linux.h",
|
||||
]
|
||||
|
||||
if (use_dbus) {
|
||||
+ sources += [
|
||||
+ "password_manager/native_backend_kwallet_x.cc",
|
||||
+ "password_manager/native_backend_kwallet_x.h",
|
||||
+ ]
|
||||
deps += [ "//components/dbus:dbus_thread_linux" ]
|
||||
}
|
||||
|
||||
--- chromium-75.0.3770.100/chrome/browser/chrome_browser_main_linux.cc
|
||||
+++ chromium-75.0.3770.100/chrome/browser/chrome_browser_main_linux.cc
|
||||
@@ -95,7 +95,7 @@ void ChromeBrowserMainPartsLinux::PostProfileInit() {
|
||||
}
|
||||
|
||||
void ChromeBrowserMainPartsLinux::PostMainMessageLoopStart() {
|
||||
-#if !defined(OS_CHROMEOS)
|
||||
+#if !defined(OS_CHROMEOS) && defined(USE_DBUS)
|
||||
bluez::BluezDBusManager::Initialize(nullptr /* system_bus */);
|
||||
#endif
|
||||
|
||||
@@ -103,7 +103,7 @@ void ChromeBrowserMainPartsLinux::PostMainMessageLoopStart() {
|
||||
}
|
||||
|
||||
void ChromeBrowserMainPartsLinux::PostDestroyThreads() {
|
||||
-#if !defined(OS_CHROMEOS)
|
||||
+#if !defined(OS_CHROMEOS) && defined(USE_DBUS)
|
||||
bluez::BluezDBusManager::Shutdown();
|
||||
bluez::BluezDBusThreadManager::Shutdown();
|
||||
#endif
|
||||
diff --git chromium-75.0.3770.100/chrome/browser/metrics/bluetooth_available_utility.cc chromium-75.0.3770.100/chrome/browser/metrics/bluetooth_available_utility.cc
|
||||
index 1f6c223..dcade65 100644
|
||||
--- chromium-75.0.3770.100/chrome/browser/metrics/bluetooth_available_utility.cc
|
||||
+++ chromium-75.0.3770.100/chrome/browser/metrics/bluetooth_available_utility.cc
|
||||
@@ -14,7 +14,7 @@
|
||||
#include "device/bluetooth/bluetooth_adapter.h"
|
||||
#include "device/bluetooth/bluetooth_adapter_factory.h"
|
||||
|
||||
-#if defined(OS_LINUX)
|
||||
+#if defined(OS_LINUX) && defined(USE_DBUS)
|
||||
#include "device/bluetooth/dbus/bluez_dbus_manager.h"
|
||||
#endif // defined(OS_LINUX)
|
||||
|
||||
@@ -62,7 +62,7 @@ void ReportBluetoothAvailability() {
|
||||
return;
|
||||
}
|
||||
|
||||
-#if defined(OS_LINUX)
|
||||
+#if defined(OS_LINUX) && defined(USE_DBUS)
|
||||
// This is for tests that have not initialized bluez or dbus thread manager.
|
||||
// Outside of tests these are initialized earlier during browser startup.
|
||||
if (!bluez::BluezDBusManager::IsInitialized())
|
||||
diff --git chromium-75.0.3770.100/chrome/browser/password_manager/password_store_factory.cc chromium-75.0.3770.100/chrome/browser/password_manager/password_store_factory.cc
|
||||
index 03d205d0e..cb8e9e820 100644
|
||||
--- chromium-75.0.3770.100/chrome/browser/password_manager/password_store_factory.cc
|
||||
+++ chromium-75.0.3770.100/chrome/browser/password_manager/password_store_factory.cc
|
||||
@@ -211,6 +211,7 @@ PasswordStoreFactory::BuildServiceInstanceFor(
|
||||
std::unique_ptr<PasswordStoreX::NativeBackend> backend;
|
||||
if (selected_backend == os_crypt::SelectedLinuxBackend::KWALLET ||
|
||||
selected_backend == os_crypt::SelectedLinuxBackend::KWALLET5) {
|
||||
+#if defined(USE_DBUS)
|
||||
VLOG(1) << "Trying KWallet for password storage.";
|
||||
base::nix::DesktopEnvironment used_desktop_env =
|
||||
selected_backend == os_crypt::SelectedLinuxBackend::KWALLET
|
||||
@@ -223,6 +224,7 @@ PasswordStoreFactory::BuildServiceInstanceFor(
|
||||
} else {
|
||||
backend.reset();
|
||||
}
|
||||
+#endif // defined(USE_DBUS)
|
||||
} else if (selected_backend == os_crypt::SelectedLinuxBackend::GNOME_ANY ||
|
||||
selected_backend ==
|
||||
os_crypt::SelectedLinuxBackend::GNOME_KEYRING ||
|
||||
diff --git chromium-75.0.3770.100/device/bluetooth/bluetooth_adapter_factory.cc chromium-75.0.3770.100/device/bluetooth/bluetooth_adapter_factory.cc
|
||||
index 6413a162c..4a7fa801a 100644
|
||||
--- chromium-75.0.3770.100/device/bluetooth/bluetooth_adapter_factory.cc
|
||||
+++ chromium-75.0.3770.100/device/bluetooth/bluetooth_adapter_factory.cc
|
||||
@@ -96,7 +96,7 @@ bool BluetoothAdapterFactory::IsBluetoothSupported() {
|
||||
// instance even on platforms that would otherwise not support it.
|
||||
if (default_adapter.Get())
|
||||
return true;
|
||||
-#if defined(OS_ANDROID) || defined(OS_WIN) || defined(OS_LINUX) || \
|
||||
+#if defined(OS_ANDROID) || defined(OS_WIN) || (defined(OS_LINUX) && defined(USE_DBUS)) || \
|
||||
defined(OS_MACOSX)
|
||||
return true;
|
||||
#else
|
||||
@@ -119,7 +119,7 @@ bool BluetoothAdapterFactory::IsLowEnergySupported() {
|
||||
return base::win::GetVersion() >= base::win::VERSION_WIN10;
|
||||
#elif defined(OS_MACOSX)
|
||||
return base::mac::IsAtLeastOS10_10();
|
||||
-#elif defined(OS_LINUX)
|
||||
+#elif (defined(OS_LINUX) && defined(USE_DBUS))
|
||||
return true;
|
||||
#else
|
||||
return false;
|
||||
diff --git chromium-75.0.3770.100/extensions/browser/api/bluetooth_low_energy/bluetooth_low_energy_api.cc chromium-75.0.3770.100/extensions/browser/api/bluetooth_low_energy/bluetooth_low_energy_api.cc
|
||||
index adbe0ca74..91781e839 100644
|
||||
--- chromium-75.0.3770.100/extensions/browser/api/bluetooth_low_energy/bluetooth_low_energy_api.cc
|
||||
+++ chromium-75.0.3770.100/extensions/browser/api/bluetooth_low_energy/bluetooth_low_energy_api.cc
|
||||
@@ -1328,7 +1328,7 @@ void BluetoothLowEnergyCreateServiceFunction::DoWork() {
|
||||
// TODO: Ideally this should be handled by our feature system, so that this
|
||||
// code doesn't even compile on OSes it isn't being used on, but currently this
|
||||
// is not possible.
|
||||
-#if !defined(OS_WIN)
|
||||
+#if !defined(OS_WIN) && (!defined(OS_LINUX) || defined(USE_DBUS))
|
||||
base::WeakPtr<device::BluetoothLocalGattService> service =
|
||||
device::BluetoothLocalGattService::Create(
|
||||
event_router_->adapter(),
|
||||
@@ -1357,6 +1357,7 @@ bool BluetoothLowEnergyCreateCharacteristicFunction::ParseParams() {
|
||||
}
|
||||
|
||||
void BluetoothLowEnergyCreateCharacteristicFunction::DoWork() {
|
||||
+#if !defined(OS_LINUX) || defined(USE_DBUS)
|
||||
device::BluetoothLocalGattService* service =
|
||||
event_router_->adapter()->GetGattService(params_->service_id);
|
||||
if (!service) {
|
||||
@@ -1377,6 +1378,9 @@ void BluetoothLowEnergyCreateCharacteristicFunction::DoWork() {
|
||||
|
||||
Respond(ArgumentList(apibtle::CreateCharacteristic::Results::Create(
|
||||
characteristic->GetIdentifier())));
|
||||
+#else
|
||||
+ Respond(Error(kErrorPlatformNotSupported));
|
||||
+#endif
|
||||
}
|
||||
|
||||
// createDescriptor:
|
||||
@@ -1393,6 +1397,7 @@ bool BluetoothLowEnergyCreateDescriptorFunction::ParseParams() {
|
||||
}
|
||||
|
||||
void BluetoothLowEnergyCreateDescriptorFunction::DoWork() {
|
||||
+#if !defined(OS_LINUX) || defined(USE_DBUS)
|
||||
device::BluetoothLocalGattCharacteristic* characteristic =
|
||||
event_router_->GetLocalCharacteristic(params_->characteristic_id);
|
||||
if (!characteristic) {
|
||||
@@ -1408,6 +1413,9 @@ void BluetoothLowEnergyCreateDescriptorFunction::DoWork() {
|
||||
|
||||
Respond(ArgumentList(
|
||||
apibtle::CreateDescriptor::Results::Create(descriptor->GetIdentifier())));
|
||||
+#else
|
||||
+ Respond(Error(kErrorPlatformNotSupported));
|
||||
+#endif
|
||||
}
|
||||
|
||||
// registerService:
|
||||
diff --git chromium-75.0.3770.100/services/device/battery/battery_status_manager_default.cc chromium-75.0.3770.100/services/device/battery/battery_status_manager_default.cc
|
||||
index 0249c6faa..ab2ff4e17 100644
|
||||
--- chromium-75.0.3770.100/services/device/battery/battery_status_manager_default.cc
|
||||
+++ chromium-75.0.3770.100/services/device/battery/battery_status_manager_default.cc
|
||||
@@ -22,11 +22,10 @@ class BatteryStatusManagerDefault : public BatteryStatusManager {
|
||||
private:
|
||||
// BatteryStatusManager:
|
||||
bool StartListeningBatteryChange() override {
|
||||
- NOTIMPLEMENTED();
|
||||
return false;
|
||||
}
|
||||
|
||||
- void StopListeningBatteryChange() override { NOTIMPLEMENTED(); }
|
||||
+ void StopListeningBatteryChange() override { }
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(BatteryStatusManagerDefault);
|
||||
};
|
||||
diff --git chromium-75.0.3770.100/services/device/wake_lock/power_save_blocker/BUILD.gn chromium-75.0.3770.100/services/device/wake_lock/power_save_blocker/BUILD.gn
|
||||
index 788bb497b..b40c0394f 100644
|
||||
--- chromium-75.0.3770.100/services/device/wake_lock/power_save_blocker/BUILD.gn
|
||||
+++ chromium-75.0.3770.100/services/device/wake_lock/power_save_blocker/BUILD.gn
|
||||
@@ -62,6 +62,9 @@ source_set("power_save_blocker") {
|
||||
if (is_chromeos || !use_x11 || !use_dbus) {
|
||||
sources -= [ "power_save_blocker_x11.cc" ]
|
||||
}
|
||||
+ if (!is_chromeos && use_x11 && !use_dbus) {
|
||||
+ sources += [ "power_save_blocker_ozone.cc" ]
|
||||
+ }
|
||||
|
||||
if (is_android) {
|
||||
deps += [ ":jni_headers" ]
|
@ -1,27 +0,0 @@
|
||||
diff --git chromium-73.0.3683.103/components/url_formatter/url_formatter.cc chromium-73.0.3683.103/components/url_formatter/url_formatter.cc
|
||||
index 97bc67e4b..caead697b 100644
|
||||
--- chromium-73.0.3683.103/components/url_formatter/url_formatter.cc
|
||||
+++ chromium-73.0.3683.103/components/url_formatter/url_formatter.cc
|
||||
@@ -410,14 +410,14 @@ IDNConversionStatus 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 kFormatUrlOmitTrivialSubdomains = 1 << 5;
|
||||
-const FormatUrlType kFormatUrlTrimAfterHost = 1 << 6;
|
||||
-const FormatUrlType kFormatUrlOmitFileScheme = 1 << 7;
|
||||
-const FormatUrlType kFormatUrlOmitMailToScheme = 1 << 8;
|
||||
+const FormatUrlType kFormatUrlOmitUsernamePassword = 0;
|
||||
+const FormatUrlType kFormatUrlOmitHTTP = 0;
|
||||
+const FormatUrlType kFormatUrlOmitTrailingSlashOnBareHostname = 0;
|
||||
+const FormatUrlType kFormatUrlOmitHTTPS = 0;
|
||||
+const FormatUrlType kFormatUrlOmitTrivialSubdomains = 0;
|
||||
+const FormatUrlType kFormatUrlTrimAfterHost = 0;
|
||||
+const FormatUrlType kFormatUrlOmitFileScheme = 0;
|
||||
+const FormatUrlType kFormatUrlOmitMailToScheme = 0;
|
||||
|
||||
const FormatUrlType kFormatUrlOmitDefaults =
|
||||
kFormatUrlOmitUsernamePassword | kFormatUrlOmitHTTP |
|
@ -1,26 +0,0 @@
|
||||
Define WIDEVINE_CDM_VERSION_STRING && re-re-re-patch for latest ninja
|
||||
|
||||
Stolen from Arch basically.
|
||||
|
||||
gmt
|
||||
|
||||
--- a/chrome/common/chrome_content_client.cc
|
||||
+++ b/chrome/common/chrome_content_client.cc
|
||||
@@ -99,7 +99,7 @@
|
||||
// Registers Widevine CDM if Widevine is enabled, the Widevine CDM is
|
||||
// bundled and not a component. When the Widevine CDM is a component, it is
|
||||
// registered in widevine_cdm_component_installer.cc.
|
||||
-#if BUILDFLAG(BUNDLE_WIDEVINE_CDM) && !BUILDFLAG(ENABLE_WIDEVINE_CDM_COMPONENT)
|
||||
+#if BUILDFLAG(ENABLE_WIDEVINE) && !BUILDFLAG(ENABLE_WIDEVINE_CDM_COMPONENT)
|
||||
#define REGISTER_BUNDLED_WIDEVINE_CDM
|
||||
#include "third_party/widevine/cdm/widevine_cdm_common.h" // nogncheck
|
||||
// TODO(crbug.com/663554): Needed for WIDEVINE_CDM_VERSION_STRING. Support
|
||||
--- a/third_party/widevine/cdm/widevine_cdm_version.h
|
||||
+++ b/third_party/widevine/cdm/widevine_cdm_version.h
|
||||
@@ -11,5 +11,6 @@
|
||||
// If the Widevine CDM is available define the following:
|
||||
// - WIDEVINE_CDM_VERSION_STRING (with the version of the CDM that's available
|
||||
// as a string, e.g., "1.0.123.456").
|
||||
+#define WIDEVINE_CDM_VERSION_STRING "unknown"
|
||||
|
||||
#endif // WIDEVINE_CDM_VERSION_H_
|
@ -1,16 +0,0 @@
|
||||
description: disable device discovery notifications by default
|
||||
author: Michael Gilbert <mgilbert@debian.org>
|
||||
bug-debian: http://bugs.debian.org/856571
|
||||
|
||||
--- a/chrome/browser/printing/cloud_print/privet_notifications.cc
|
||||
+++ b/chrome/browser/printing/cloud_print/privet_notifications.cc
|
||||
@@ -229,8 +229,7 @@ void PrivetNotificationService::DeviceCa
|
||||
// static
|
||||
bool PrivetNotificationService::IsEnabled() {
|
||||
base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
|
||||
- return !command_line->HasSwitch(
|
||||
- switches::kDisableDeviceDiscoveryNotifications);
|
||||
+ return command_line->HasSwitch(switches::kEnableDeviceDiscoveryNotifications);
|
||||
}
|
||||
|
||||
// static
|
@ -1,56 +0,0 @@
|
||||
# Disable some background communication with clients2.google.com
|
||||
|
||||
--- a/third_party/breakpad/breakpad/src/client/linux/sender/google_crash_report_sender.cc
|
||||
+++ b/third_party/breakpad/breakpad/src/client/linux/sender/google_crash_report_sender.cc
|
||||
@@ -85,6 +85,7 @@ bool CheckForRequiredFlagsOrDie() {
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
+ return 0;
|
||||
google::InitGoogleLogging(argv[0]);
|
||||
google::ParseCommandLineFlags(&argc, &argv, true);
|
||||
if (!CheckForRequiredFlagsOrDie()) {
|
||||
--- a/chrome/browser/tracing/crash_service_uploader.cc
|
||||
+++ b/chrome/browser/tracing/crash_service_uploader.cc
|
||||
@@ -132,11 +132,16 @@ void TraceCrashServiceUploader::DoUpload
|
||||
progress_callback_ = progress_callback;
|
||||
done_callback_ = std::move(done_callback);
|
||||
|
||||
- base::PostTaskWithTraits(
|
||||
- FROM_HERE, {base::TaskPriority::BEST_EFFORT},
|
||||
- base::BindOnce(&TraceCrashServiceUploader::DoCompressOnBackgroundThread,
|
||||
- base::Unretained(this), file_contents, upload_mode,
|
||||
- upload_url_, std::move(metadata)));
|
||||
+ if (!progress_callback_.is_null()) {
|
||||
+ base::PostTaskWithTraits(
|
||||
+ FROM_HERE, {content::BrowserThread::UI},
|
||||
+ base::Bind(progress_callback_, 1, 1));
|
||||
+ }
|
||||
+ if (!done_callback_.is_null()) {
|
||||
+ base::PostTaskWithTraits(
|
||||
+ FROM_HERE, {content::BrowserThread::UI},
|
||||
+ base::BindOnce(std::move(done_callback_), true, "Upload skipped."));
|
||||
+ }
|
||||
}
|
||||
|
||||
void TraceCrashServiceUploader::DoCompressOnBackgroundThread(
|
||||
@@ -207,11 +212,6 @@ void TraceCrashServiceUploader::DoCompre
|
||||
std::string post_data;
|
||||
SetupMultipart(product, version, std::move(metadata), "trace.json.gz",
|
||||
compressed_contents, &post_data);
|
||||
-
|
||||
- base::PostTaskWithTraits(
|
||||
- FROM_HERE, {content::BrowserThread::UI},
|
||||
- base::BindOnce(&TraceCrashServiceUploader::CreateAndStartURLLoader,
|
||||
- base::Unretained(this), upload_url, post_data));
|
||||
}
|
||||
|
||||
void TraceCrashServiceUploader::OnUploadError(
|
||||
@@ -309,6 +309,7 @@ bool TraceCrashServiceUploader::Compress
|
||||
void TraceCrashServiceUploader::CreateAndStartURLLoader(
|
||||
const std::string& upload_url,
|
||||
const std::string& post_data) {
|
||||
+ return;
|
||||
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
||||
DCHECK(!simple_url_loader_);
|
||||
|
@ -1,660 +0,0 @@
|
||||
# Disable domain reliability component
|
||||
|
||||
--- a/components/domain_reliability/google_configs.cc
|
||||
+++ b/components/domain_reliability/google_configs.cc
|
||||
@@ -13,575 +13,10 @@
|
||||
|
||||
namespace domain_reliability {
|
||||
|
||||
-namespace {
|
||||
-
|
||||
-struct GoogleConfigParams {
|
||||
- const char* hostname;
|
||||
- bool include_subdomains;
|
||||
-
|
||||
- // If true, prepend a collector URL within https://|hostname|/.
|
||||
- bool include_origin_specific_collector;
|
||||
-
|
||||
- // If true, also add a config for www.|hostname|.
|
||||
- //
|
||||
- // |include_subdomains| will be false in the extra config, but
|
||||
- // |include_origin_specific_collector| will be respected, and will use the
|
||||
- // www subdomain as the origin for the collector so it matches the config.
|
||||
- bool duplicate_for_www;
|
||||
-};
|
||||
-
|
||||
-const GoogleConfigParams kGoogleConfigs[] = {
|
||||
- // Origins with subdomains and same-origin collectors. Currently, all
|
||||
- // origins with same-origin collectors also run collectors on their www
|
||||
- // subdomain. (e.g., both foo.com and www.foo.com.)
|
||||
- {"google.ac", true, true, true},
|
||||
- {"google.ad", true, true, true},
|
||||
- {"google.ae", true, true, true},
|
||||
- {"google.af", true, true, true},
|
||||
- {"google.ag", true, true, true},
|
||||
- {"google.al", true, true, true},
|
||||
- {"google.am", true, true, true},
|
||||
- {"google.as", true, true, true},
|
||||
- {"google.at", true, true, true},
|
||||
- {"google.az", true, true, true},
|
||||
- {"google.ba", true, true, true},
|
||||
- {"google.be", true, true, true},
|
||||
- {"google.bf", true, true, true},
|
||||
- {"google.bg", true, true, true},
|
||||
- {"google.bi", true, true, true},
|
||||
- {"google.bj", true, true, true},
|
||||
- {"google.bs", true, true, true},
|
||||
- {"google.bt", true, true, true},
|
||||
- {"google.by", true, true, true},
|
||||
- {"google.ca", true, true, true},
|
||||
- {"google.cc", true, true, true},
|
||||
- {"google.cd", true, true, true},
|
||||
- {"google.cf", true, true, true},
|
||||
- {"google.cg", true, true, true},
|
||||
- {"google.ch", true, true, true},
|
||||
- {"google.ci", true, true, true},
|
||||
- {"google.cl", true, true, true},
|
||||
- {"google.cm", true, true, true},
|
||||
- {"google.cn", true, true, true},
|
||||
- {"google.co.ao", true, true, true},
|
||||
- {"google.co.bw", true, true, true},
|
||||
- {"google.co.ck", true, true, true},
|
||||
- {"google.co.cr", true, true, true},
|
||||
- {"google.co.hu", true, true, true},
|
||||
- {"google.co.id", true, true, true},
|
||||
- {"google.co.il", true, true, true},
|
||||
- {"google.co.im", true, true, true},
|
||||
- {"google.co.in", true, true, true},
|
||||
- {"google.co.je", true, true, true},
|
||||
- {"google.co.jp", true, true, true},
|
||||
- {"google.co.ke", true, true, true},
|
||||
- {"google.co.kr", true, true, true},
|
||||
- {"google.co.ls", true, true, true},
|
||||
- {"google.co.ma", true, true, true},
|
||||
- {"google.co.mz", true, true, true},
|
||||
- {"google.co.nz", true, true, true},
|
||||
- {"google.co.th", true, true, true},
|
||||
- {"google.co.tz", true, true, true},
|
||||
- {"google.co.ug", true, true, true},
|
||||
- {"google.co.uk", true, true, true},
|
||||
- {"google.co.uz", true, true, true},
|
||||
- {"google.co.ve", true, true, true},
|
||||
- {"google.co.vi", true, true, true},
|
||||
- {"google.co.za", true, true, true},
|
||||
- {"google.co.zm", true, true, true},
|
||||
- {"google.co.zw", true, true, true},
|
||||
- {"google.com.af", true, true, true},
|
||||
- {"google.com.ag", true, true, true},
|
||||
- {"google.com.ai", true, true, true},
|
||||
- {"google.com.ar", true, true, true},
|
||||
- {"google.com.au", true, true, true},
|
||||
- {"google.com.bd", true, true, true},
|
||||
- {"google.com.bh", true, true, true},
|
||||
- {"google.com.bn", true, true, true},
|
||||
- {"google.com.bo", true, true, true},
|
||||
- {"google.com.br", true, true, true},
|
||||
- {"google.com.by", true, true, true},
|
||||
- {"google.com.bz", true, true, true},
|
||||
- {"google.com.cn", true, true, true},
|
||||
- {"google.com.co", true, true, true},
|
||||
- {"google.com.cu", true, true, true},
|
||||
- {"google.com.cy", true, true, true},
|
||||
- {"google.com.do", true, true, true},
|
||||
- {"google.com.ec", true, true, true},
|
||||
- {"google.com.eg", true, true, true},
|
||||
- {"google.com.et", true, true, true},
|
||||
- {"google.com.fj", true, true, true},
|
||||
- {"google.com.ge", true, true, true},
|
||||
- {"google.com.gh", true, true, true},
|
||||
- {"google.com.gi", true, true, true},
|
||||
- {"google.com.gr", true, true, true},
|
||||
- {"google.com.gt", true, true, true},
|
||||
- {"google.com.hk", true, true, true},
|
||||
- {"google.com.iq", true, true, true},
|
||||
- {"google.com.jm", true, true, true},
|
||||
- {"google.com.jo", true, true, true},
|
||||
- {"google.com.kh", true, true, true},
|
||||
- {"google.com.kw", true, true, true},
|
||||
- {"google.com.lb", true, true, true},
|
||||
- {"google.com.ly", true, true, true},
|
||||
- {"google.com.mm", true, true, true},
|
||||
- {"google.com.mt", true, true, true},
|
||||
- {"google.com.mx", true, true, true},
|
||||
- {"google.com.my", true, true, true},
|
||||
- {"google.com.na", true, true, true},
|
||||
- {"google.com.nf", true, true, true},
|
||||
- {"google.com.ng", true, true, true},
|
||||
- {"google.com.ni", true, true, true},
|
||||
- {"google.com.np", true, true, true},
|
||||
- {"google.com.nr", true, true, true},
|
||||
- {"google.com.om", true, true, true},
|
||||
- {"google.com.pa", true, true, true},
|
||||
- {"google.com.pe", true, true, true},
|
||||
- {"google.com.pg", true, true, true},
|
||||
- {"google.com.ph", true, true, true},
|
||||
- {"google.com.pk", true, true, true},
|
||||
- {"google.com.pl", true, true, true},
|
||||
- {"google.com.pr", true, true, true},
|
||||
- {"google.com.py", true, true, true},
|
||||
- {"google.com.qa", true, true, true},
|
||||
- {"google.com.ru", true, true, true},
|
||||
- {"google.com.sa", true, true, true},
|
||||
- {"google.com.sb", true, true, true},
|
||||
- {"google.com.sg", true, true, true},
|
||||
- {"google.com.sl", true, true, true},
|
||||
- {"google.com.sv", true, true, true},
|
||||
- {"google.com.tj", true, true, true},
|
||||
- {"google.com.tn", true, true, true},
|
||||
- {"google.com.tr", true, true, true},
|
||||
- {"google.com.tw", true, true, true},
|
||||
- {"google.com.ua", true, true, true},
|
||||
- {"google.com.uy", true, true, true},
|
||||
- {"google.com.vc", true, true, true},
|
||||
- {"google.com.ve", true, true, true},
|
||||
- {"google.com.vn", true, true, true},
|
||||
- {"google.cv", true, true, true},
|
||||
- {"google.cz", true, true, true},
|
||||
- {"google.de", true, true, true},
|
||||
- {"google.dj", true, true, true},
|
||||
- {"google.dk", true, true, true},
|
||||
- {"google.dm", true, true, true},
|
||||
- {"google.dz", true, true, true},
|
||||
- {"google.ee", true, true, true},
|
||||
- {"google.es", true, true, true},
|
||||
- {"google.fi", true, true, true},
|
||||
- {"google.fm", true, true, true},
|
||||
- {"google.fr", true, true, true},
|
||||
- {"google.ga", true, true, true},
|
||||
- {"google.ge", true, true, true},
|
||||
- {"google.gg", true, true, true},
|
||||
- {"google.gl", true, true, true},
|
||||
- {"google.gm", true, true, true},
|
||||
- {"google.gp", true, true, true},
|
||||
- {"google.gr", true, true, true},
|
||||
- {"google.gy", true, true, true},
|
||||
- {"google.hk", true, true, true},
|
||||
- {"google.hn", true, true, true},
|
||||
- {"google.hr", true, true, true},
|
||||
- {"google.ht", true, true, true},
|
||||
- {"google.hu", true, true, true},
|
||||
- {"google.ie", true, true, true},
|
||||
- {"google.im", true, true, true},
|
||||
- {"google.iq", true, true, true},
|
||||
- {"google.ir", true, true, true},
|
||||
- {"google.is", true, true, true},
|
||||
- {"google.it", true, true, true},
|
||||
- {"google.it.ao", true, true, true},
|
||||
- {"google.je", true, true, true},
|
||||
- {"google.jo", true, true, true},
|
||||
- {"google.jp", true, true, true},
|
||||
- {"google.kg", true, true, true},
|
||||
- {"google.ki", true, true, true},
|
||||
- {"google.kz", true, true, true},
|
||||
- {"google.la", true, true, true},
|
||||
- {"google.li", true, true, true},
|
||||
- {"google.lk", true, true, true},
|
||||
- {"google.lt", true, true, true},
|
||||
- {"google.lu", true, true, true},
|
||||
- {"google.lv", true, true, true},
|
||||
- {"google.md", true, true, true},
|
||||
- {"google.me", true, true, true},
|
||||
- {"google.mg", true, true, true},
|
||||
- {"google.mk", true, true, true},
|
||||
- {"google.ml", true, true, true},
|
||||
- {"google.mn", true, true, true},
|
||||
- {"google.ms", true, true, true},
|
||||
- {"google.mu", true, true, true},
|
||||
- {"google.mv", true, true, true},
|
||||
- {"google.mw", true, true, true},
|
||||
- {"google.ne", true, true, true},
|
||||
- {"google.ne.jp", true, true, true},
|
||||
- {"google.ng", true, true, true},
|
||||
- {"google.nl", true, true, true},
|
||||
- {"google.no", true, true, true},
|
||||
- {"google.nr", true, true, true},
|
||||
- {"google.nu", true, true, true},
|
||||
- {"google.off.ai", true, true, true},
|
||||
- {"google.pk", true, true, true},
|
||||
- {"google.pl", true, true, true},
|
||||
- {"google.pn", true, true, true},
|
||||
- {"google.ps", true, true, true},
|
||||
- {"google.pt", true, true, true},
|
||||
- {"google.ro", true, true, true},
|
||||
- {"google.rs", true, true, true},
|
||||
- {"google.ru", true, true, true},
|
||||
- {"google.rw", true, true, true},
|
||||
- {"google.sc", true, true, true},
|
||||
- {"google.se", true, true, true},
|
||||
- {"google.sh", true, true, true},
|
||||
- {"google.si", true, true, true},
|
||||
- {"google.sk", true, true, true},
|
||||
- {"google.sm", true, true, true},
|
||||
- {"google.sn", true, true, true},
|
||||
- {"google.so", true, true, true},
|
||||
- {"google.sr", true, true, true},
|
||||
- {"google.st", true, true, true},
|
||||
- {"google.td", true, true, true},
|
||||
- {"google.tg", true, true, true},
|
||||
- {"google.tk", true, true, true},
|
||||
- {"google.tl", true, true, true},
|
||||
- {"google.tm", true, true, true},
|
||||
- {"google.tn", true, true, true},
|
||||
- {"google.to", true, true, true},
|
||||
- {"google.tt", true, true, true},
|
||||
- {"google.us", true, true, true},
|
||||
- {"google.uz", true, true, true},
|
||||
- {"google.vg", true, true, true},
|
||||
- {"google.vu", true, true, true},
|
||||
- {"google.ws", true, true, true},
|
||||
- {"l.google.com", true, true, true},
|
||||
-
|
||||
- // google.com is a special case. We have a custom config for www.google.com,
|
||||
- // so set generate_config_for_www_subdomain = false.
|
||||
- {"google.com", true, true, false},
|
||||
-
|
||||
- // Origins with subdomains and without same-origin collectors.
|
||||
- {"2mdn.net", true, false, false},
|
||||
- {"adgoogle.net", true, false, false},
|
||||
- {"admeld.com", true, false, false},
|
||||
- {"admob.biz", true, false, false},
|
||||
- {"admob.co.in", true, false, false},
|
||||
- {"admob.co.kr", true, false, false},
|
||||
- {"admob.co.nz", true, false, false},
|
||||
- {"admob.co.uk", true, false, false},
|
||||
- {"admob.co.za", true, false, false},
|
||||
- {"admob.com", true, false, false},
|
||||
- {"admob.com.br", true, false, false},
|
||||
- {"admob.com.es", true, false, false},
|
||||
- {"admob.com.fr", true, false, false},
|
||||
- {"admob.com.mx", true, false, false},
|
||||
- {"admob.com.pt", true, false, false},
|
||||
- {"admob.de", true, false, false},
|
||||
- {"admob.dk", true, false, false},
|
||||
- {"admob.es", true, false, false},
|
||||
- {"admob.fi", true, false, false},
|
||||
- {"admob.fr", true, false, false},
|
||||
- {"admob.gr", true, false, false},
|
||||
- {"admob.hk", true, false, false},
|
||||
- {"admob.ie", true, false, false},
|
||||
- {"admob.in", true, false, false},
|
||||
- {"admob.it", true, false, false},
|
||||
- {"admob.jp", true, false, false},
|
||||
- {"admob.kr", true, false, false},
|
||||
- {"admob.mobi", true, false, false},
|
||||
- {"admob.no", true, false, false},
|
||||
- {"admob.ph", true, false, false},
|
||||
- {"admob.pt", true, false, false},
|
||||
- {"admob.sg", true, false, false},
|
||||
- {"admob.tw", true, false, false},
|
||||
- {"admob.us", true, false, false},
|
||||
- {"admob.vn", true, false, false},
|
||||
- {"adwhirl.com", true, false, false},
|
||||
- {"ampproject.com", true, false, false},
|
||||
- {"ampproject.net", true, false, false},
|
||||
- {"ampproject.org", true, false, false},
|
||||
- {"android.com", true, false, false},
|
||||
- {"anycast-edge.metric.gstatic.com", true, false, false},
|
||||
- {"anycast-stb.metric.gstatic.com", true, false, false},
|
||||
- {"anycast.metric.gstatic.com", true, false, false},
|
||||
- {"cdn.ampproject.org", true, false, false},
|
||||
- {"chromecast.com", true, false, false},
|
||||
- {"chromeexperiments.com", true, false, false},
|
||||
- {"chromestatus.com", true, false, false},
|
||||
- {"chromium.org", true, false, false},
|
||||
- {"clients6.google.com", true, false, false},
|
||||
- {"cloudendpointsapis.com", true, false, false},
|
||||
- {"dartmotif.com", true, false, false},
|
||||
- {"dartsearch.net", true, false, false},
|
||||
- {"doubleclick.com", true, false, false},
|
||||
- {"doubleclick.ne.jp", true, false, false},
|
||||
- {"doubleclick.net", true, false, false},
|
||||
- {"doubleclickusercontent.com", true, false, false},
|
||||
- {"fls.doubleclick.net", true, false, false},
|
||||
- {"g.co", true, false, false},
|
||||
- {"g.doubleclick.net", true, false, false},
|
||||
- {"ggpht.com", true, false, false},
|
||||
- {"gmodules.com", true, false, false},
|
||||
- {"goo.gl", true, false, false},
|
||||
- {"google-syndication.com", true, false, false},
|
||||
- {"google.cat", true, false, false},
|
||||
- {"google.info", true, false, false},
|
||||
- {"google.jobs", true, false, false},
|
||||
- {"google.net", true, false, false},
|
||||
- {"google.org", true, false, false},
|
||||
- {"google.stackdriver.com", true, false, false},
|
||||
- {"googleadapis.com", true, false, false},
|
||||
- {"googleadservices.com", true, false, false},
|
||||
- {"googleadsserving.cn", true, false, false},
|
||||
- {"googlealumni.com", true, false, false},
|
||||
- {"googleapis.cn", true, false, false},
|
||||
- {"googleapis.com", true, false, false},
|
||||
- {"googleapps.com", true, false, false},
|
||||
- {"googlecbs.com", true, false, false},
|
||||
- {"googlecode.com", true, false, false},
|
||||
- {"googlecommerce.com", true, false, false},
|
||||
- {"googledrive.com", true, false, false},
|
||||
- {"googleenterprise.com", true, false, false},
|
||||
- {"googlefiber.com", true, false, false},
|
||||
- {"googlefiber.net", true, false, false},
|
||||
- {"googlegoro.com", true, false, false},
|
||||
- {"googlehosted.com", true, false, false},
|
||||
- {"googlepayments.com", true, false, false},
|
||||
- {"googlesource.com", true, false, false},
|
||||
- {"googlesyndication.com", true, false, false},
|
||||
- {"googletagmanager.com", true, false, false},
|
||||
- {"googletagservices.com", true, false, false},
|
||||
- {"googleusercontent.com", true, false, false},
|
||||
- {"googlezip.net", true, false, false},
|
||||
- {"gstatic.cn", true, false, false},
|
||||
- {"gstatic.com", true, false, false},
|
||||
- {"gvt3.com", true, false, false},
|
||||
- {"gvt9.com", true, false, false},
|
||||
- {"picasa.com", true, false, false},
|
||||
- {"recaptcha.net", true, false, false},
|
||||
- {"stackdriver.com", true, false, false},
|
||||
- {"stbcast-stb.metric.gstatic.com", true, false, false},
|
||||
- {"stbcast.metric.gstatic.com", true, false, false},
|
||||
- {"stbcast2-stb.metric.gstatic.com", true, false, false},
|
||||
- {"stbcast2.metric.gstatic.com", true, false, false},
|
||||
- {"stbcast3-stb.metric.gstatic.com", true, false, false},
|
||||
- {"stbcast3.metric.gstatic.com", true, false, false},
|
||||
- {"stbcast4-stb.metric.gstatic.com", true, false, false},
|
||||
- {"stbcast4.metric.gstatic.com", true, false, false},
|
||||
- {"unicast-edge.metric.gstatic.com", true, false, false},
|
||||
- {"unicast-stb.metric.gstatic.com", true, false, false},
|
||||
- {"unicast.metric.gstatic.com", true, false, false},
|
||||
- {"unicast2-stb.metric.gstatic.com", true, false, false},
|
||||
- {"unicast2.metric.gstatic.com", true, false, false},
|
||||
- {"waze.com", true, false, false},
|
||||
- {"withgoogle.com", true, false, false},
|
||||
- {"youtu.be", true, false, false},
|
||||
- {"youtube-3rd-party.com", true, false, false},
|
||||
- {"youtube-nocookie.com", true, false, false},
|
||||
- {"youtube.ae", true, false, false},
|
||||
- {"youtube.al", true, false, false},
|
||||
- {"youtube.am", true, false, false},
|
||||
- {"youtube.at", true, false, false},
|
||||
- {"youtube.az", true, false, false},
|
||||
- {"youtube.ba", true, false, false},
|
||||
- {"youtube.be", true, false, false},
|
||||
- {"youtube.bg", true, false, false},
|
||||
- {"youtube.bh", true, false, false},
|
||||
- {"youtube.bo", true, false, false},
|
||||
- {"youtube.ca", true, false, false},
|
||||
- {"youtube.cat", true, false, false},
|
||||
- {"youtube.ch", true, false, false},
|
||||
- {"youtube.cl", true, false, false},
|
||||
- {"youtube.co", true, false, false},
|
||||
- {"youtube.co.ae", true, false, false},
|
||||
- {"youtube.co.at", true, false, false},
|
||||
- {"youtube.co.hu", true, false, false},
|
||||
- {"youtube.co.id", true, false, false},
|
||||
- {"youtube.co.il", true, false, false},
|
||||
- {"youtube.co.in", true, false, false},
|
||||
- {"youtube.co.jp", true, false, false},
|
||||
- {"youtube.co.ke", true, false, false},
|
||||
- {"youtube.co.kr", true, false, false},
|
||||
- {"youtube.co.ma", true, false, false},
|
||||
- {"youtube.co.nz", true, false, false},
|
||||
- {"youtube.co.th", true, false, false},
|
||||
- {"youtube.co.ug", true, false, false},
|
||||
- {"youtube.co.uk", true, false, false},
|
||||
- {"youtube.co.ve", true, false, false},
|
||||
- {"youtube.co.za", true, false, false},
|
||||
- {"youtube.com", true, false, false},
|
||||
- {"youtube.com.ar", true, false, false},
|
||||
- {"youtube.com.au", true, false, false},
|
||||
- {"youtube.com.az", true, false, false},
|
||||
- {"youtube.com.bh", true, false, false},
|
||||
- {"youtube.com.bo", true, false, false},
|
||||
- {"youtube.com.br", true, false, false},
|
||||
- {"youtube.com.by", true, false, false},
|
||||
- {"youtube.com.co", true, false, false},
|
||||
- {"youtube.com.do", true, false, false},
|
||||
- {"youtube.com.ee", true, false, false},
|
||||
- {"youtube.com.eg", true, false, false},
|
||||
- {"youtube.com.es", true, false, false},
|
||||
- {"youtube.com.gh", true, false, false},
|
||||
- {"youtube.com.gr", true, false, false},
|
||||
- {"youtube.com.gt", true, false, false},
|
||||
- {"youtube.com.hk", true, false, false},
|
||||
- {"youtube.com.hr", true, false, false},
|
||||
- {"youtube.com.jm", true, false, false},
|
||||
- {"youtube.com.jo", true, false, false},
|
||||
- {"youtube.com.kw", true, false, false},
|
||||
- {"youtube.com.lb", true, false, false},
|
||||
- {"youtube.com.lv", true, false, false},
|
||||
- {"youtube.com.mk", true, false, false},
|
||||
- {"youtube.com.mt", true, false, false},
|
||||
- {"youtube.com.mx", true, false, false},
|
||||
- {"youtube.com.my", true, false, false},
|
||||
- {"youtube.com.ng", true, false, false},
|
||||
- {"youtube.com.om", true, false, false},
|
||||
- {"youtube.com.pe", true, false, false},
|
||||
- {"youtube.com.ph", true, false, false},
|
||||
- {"youtube.com.pk", true, false, false},
|
||||
- {"youtube.com.pt", true, false, false},
|
||||
- {"youtube.com.qa", true, false, false},
|
||||
- {"youtube.com.ro", true, false, false},
|
||||
- {"youtube.com.sa", true, false, false},
|
||||
- {"youtube.com.sg", true, false, false},
|
||||
- {"youtube.com.tn", true, false, false},
|
||||
- {"youtube.com.tr", true, false, false},
|
||||
- {"youtube.com.tw", true, false, false},
|
||||
- {"youtube.com.ua", true, false, false},
|
||||
- {"youtube.com.uy", true, false, false},
|
||||
- {"youtube.com.ve", true, false, false},
|
||||
- {"youtube.cz", true, false, false},
|
||||
- {"youtube.de", true, false, false},
|
||||
- {"youtube.dk", true, false, false},
|
||||
- {"youtube.ee", true, false, false},
|
||||
- {"youtube.es", true, false, false},
|
||||
- {"youtube.fi", true, false, false},
|
||||
- {"youtube.fr", true, false, false},
|
||||
- {"youtube.ge", true, false, false},
|
||||
- {"youtube.gr", true, false, false},
|
||||
- {"youtube.gt", true, false, false},
|
||||
- {"youtube.hk", true, false, false},
|
||||
- {"youtube.hr", true, false, false},
|
||||
- {"youtube.hu", true, false, false},
|
||||
- {"youtube.ie", true, false, false},
|
||||
- {"youtube.in", true, false, false},
|
||||
- {"youtube.is", true, false, false},
|
||||
- {"youtube.it", true, false, false},
|
||||
- {"youtube.jo", true, false, false},
|
||||
- {"youtube.jp", true, false, false},
|
||||
- {"youtube.kr", true, false, false},
|
||||
- {"youtube.lk", true, false, false},
|
||||
- {"youtube.lt", true, false, false},
|
||||
- {"youtube.lv", true, false, false},
|
||||
- {"youtube.ma", true, false, false},
|
||||
- {"youtube.md", true, false, false},
|
||||
- {"youtube.me", true, false, false},
|
||||
- {"youtube.mk", true, false, false},
|
||||
- {"youtube.mx", true, false, false},
|
||||
- {"youtube.my", true, false, false},
|
||||
- {"youtube.ng", true, false, false},
|
||||
- {"youtube.nl", true, false, false},
|
||||
- {"youtube.no", true, false, false},
|
||||
- {"youtube.pe", true, false, false},
|
||||
- {"youtube.ph", true, false, false},
|
||||
- {"youtube.pk", true, false, false},
|
||||
- {"youtube.pl", true, false, false},
|
||||
- {"youtube.pr", true, false, false},
|
||||
- {"youtube.pt", true, false, false},
|
||||
- {"youtube.qa", true, false, false},
|
||||
- {"youtube.ro", true, false, false},
|
||||
- {"youtube.rs", true, false, false},
|
||||
- {"youtube.ru", true, false, false},
|
||||
- {"youtube.sa", true, false, false},
|
||||
- {"youtube.se", true, false, false},
|
||||
- {"youtube.sg", true, false, false},
|
||||
- {"youtube.si", true, false, false},
|
||||
- {"youtube.sk", true, false, false},
|
||||
- {"youtube.sn", true, false, false},
|
||||
- {"youtube.tn", true, false, false},
|
||||
- {"youtube.ua", true, false, false},
|
||||
- {"youtube.ug", true, false, false},
|
||||
- {"youtube.uy", true, false, false},
|
||||
- {"youtube.vn", true, false, false},
|
||||
- {"youtubeeducation.com", true, false, false},
|
||||
- {"youtubemobilesupport.com", true, false, false},
|
||||
- {"ytimg.com", true, false, false},
|
||||
-
|
||||
- // Origins without subdomains and with same-origin collectors.
|
||||
- {"accounts.google.com", false, true, false},
|
||||
- {"apis.google.com", false, true, false},
|
||||
- {"app.google.stackdriver.com", false, true, false},
|
||||
- {"b.mail.google.com", false, true, false},
|
||||
- {"chatenabled.mail.google.com", false, true, false},
|
||||
- {"ddm.google.com", false, true, false},
|
||||
- {"gmail.com", false, true, false},
|
||||
- {"gmail.google.com", false, true, false},
|
||||
- {"mail-attachment.googleusercontent.com", false, true, false},
|
||||
- {"mail.google.com", false, true, false},
|
||||
- {"www.gmail.com", false, true, false},
|
||||
-
|
||||
- // Origins without subdomains or same-origin collectors.
|
||||
- {"ad.doubleclick.net", false, false, false},
|
||||
- {"drive.google.com", false, false, false},
|
||||
- {"redirector.googlevideo.com", false, false, false},
|
||||
-};
|
||||
-
|
||||
-const char* const kGoogleStandardCollectors[] = {
|
||||
- "https://beacons.gcp.gvt2.com/domainreliability/upload",
|
||||
- "https://beacons.gvt2.com/domainreliability/upload",
|
||||
- "https://beacons2.gvt2.com/domainreliability/upload",
|
||||
- "https://beacons3.gvt2.com/domainreliability/upload",
|
||||
- "https://beacons4.gvt2.com/domainreliability/upload",
|
||||
- "https://beacons5.gvt2.com/domainreliability/upload",
|
||||
- "https://beacons5.gvt3.com/domainreliability/upload",
|
||||
- "https://clients2.google.com/domainreliability/upload",
|
||||
-};
|
||||
-
|
||||
-const char* const kGoogleOriginSpecificCollectorPathString =
|
||||
- "/domainreliability/upload";
|
||||
-
|
||||
-static std::unique_ptr<DomainReliabilityConfig> CreateGoogleConfig(
|
||||
- const GoogleConfigParams& params,
|
||||
- bool is_www) {
|
||||
- if (is_www)
|
||||
- DCHECK(params.duplicate_for_www);
|
||||
-
|
||||
- std::string hostname = (is_www ? "www." : "") + std::string(params.hostname);
|
||||
- bool include_subdomains = params.include_subdomains && !is_www;
|
||||
-
|
||||
- std::unique_ptr<DomainReliabilityConfig> config(
|
||||
- new DomainReliabilityConfig());
|
||||
- config->origin = GURL("https://" + hostname + "/");
|
||||
- config->include_subdomains = include_subdomains;
|
||||
- config->collectors.clear();
|
||||
- if (params.include_origin_specific_collector) {
|
||||
- GURL::Replacements replacements;
|
||||
- replacements.SetPathStr(kGoogleOriginSpecificCollectorPathString);
|
||||
- config->collectors.push_back(
|
||||
- std::make_unique<GURL>(config->origin.ReplaceComponents(replacements)));
|
||||
- }
|
||||
- for (size_t i = 0; i < base::size(kGoogleStandardCollectors); i++)
|
||||
- config->collectors.push_back(
|
||||
- std::make_unique<GURL>(kGoogleStandardCollectors[i]));
|
||||
- config->success_sample_rate = 0.05;
|
||||
- config->failure_sample_rate = 1.00;
|
||||
- config->path_prefixes.clear();
|
||||
- return config;
|
||||
-}
|
||||
-
|
||||
-} // namespace
|
||||
-
|
||||
// static
|
||||
void GetAllGoogleConfigs(
|
||||
std::vector<std::unique_ptr<DomainReliabilityConfig>>* configs_out) {
|
||||
configs_out->clear();
|
||||
-
|
||||
- for (auto& params : kGoogleConfigs) {
|
||||
- configs_out->push_back(CreateGoogleConfig(params, false));
|
||||
- if (params.duplicate_for_www)
|
||||
- configs_out->push_back(CreateGoogleConfig(params, true));
|
||||
- }
|
||||
}
|
||||
|
||||
} // namespace domain_reliability
|
||||
--- a/components/domain_reliability/uploader.cc
|
||||
+++ b/components/domain_reliability/uploader.cc
|
||||
@@ -82,7 +82,7 @@ class DomainReliabilityUploaderImpl
|
||||
if (discard_uploads_)
|
||||
discarded_upload_count_++;
|
||||
|
||||
- if (discard_uploads_ || shutdown_) {
|
||||
+ if (true) {
|
||||
DVLOG(1) << "Discarding report instead of uploading.";
|
||||
UploadResult result;
|
||||
result.status = UploadResult::SUCCESS;
|
||||
--- a/components/domain_reliability/bake_in_configs.py
|
||||
+++ b/components/domain_reliability/bake_in_configs.py
|
||||
@@ -490,7 +490,7 @@ def origin_is_whitelisted(origin):
|
||||
domain = origin[8:-1]
|
||||
else:
|
||||
return False
|
||||
- return any(domain == e or domain.endswith('.' + e) for e in DOMAIN_WHITELIST)
|
||||
+ return False
|
||||
|
||||
|
||||
def quote_and_wrap_text(text, width=79, prefix=' "', suffix='"'):
|
||||
--- a/components/domain_reliability/BUILD.gn
|
||||
+++ b/components/domain_reliability/BUILD.gn
|
||||
@@ -9,26 +9,6 @@ action("bake_in_configs") {
|
||||
script = "bake_in_configs.py"
|
||||
|
||||
inputs = [
|
||||
- "baked_in_configs/c_android_clients_google_com.json",
|
||||
- "baked_in_configs/c_bigcache_googleapis_com.json",
|
||||
- "baked_in_configs/c_doc-0-0-sj_sj_googleusercontent_com.json",
|
||||
- "baked_in_configs/c_docs_google_com.json",
|
||||
- "baked_in_configs/c_drive_google_com.json",
|
||||
- "baked_in_configs/c_googlesyndication_com.json",
|
||||
- "baked_in_configs/c_pack_google_com.json",
|
||||
- "baked_in_configs/c_play_google_com.json",
|
||||
- "baked_in_configs/c_youtube_com.json",
|
||||
- "baked_in_configs/clients2_google_com.json",
|
||||
- "baked_in_configs/docs_google_com.json",
|
||||
- "baked_in_configs/gcp_gvt2_com.json",
|
||||
- "baked_in_configs/gcp_gvt6_com.json",
|
||||
- "baked_in_configs/google-analytics_com.json",
|
||||
- "baked_in_configs/googlevideo_com.json",
|
||||
- "baked_in_configs/gvt1_com.json",
|
||||
- "baked_in_configs/gvt2_com.json",
|
||||
- "baked_in_configs/gvt6_com.json",
|
||||
- "baked_in_configs/ssl_gstatic_com.json",
|
||||
- "baked_in_configs/www_google_com.json",
|
||||
]
|
||||
|
||||
output_file = "$target_gen_dir/baked_in_configs.cc"
|
||||
@@ -38,13 +18,21 @@ action("bake_in_configs") {
|
||||
|
||||
# The JSON file list is too long for the command line on Windows, so put
|
||||
# them in a response file.
|
||||
- response_file_contents = rebase_path(inputs, root_build_dir)
|
||||
- args = [
|
||||
- "--file-list",
|
||||
- "{{response_file_name}}",
|
||||
- "--output",
|
||||
- rebase_path(output_file, root_build_dir),
|
||||
- ]
|
||||
+ if (is_win) {
|
||||
+ args = [
|
||||
+ "--file-list",
|
||||
+ "nul",
|
||||
+ "--output",
|
||||
+ rebase_path(output_file, root_build_dir),
|
||||
+ ]
|
||||
+ } else {
|
||||
+ args = [
|
||||
+ "--file-list",
|
||||
+ "/dev/null",
|
||||
+ "--output",
|
||||
+ rebase_path(output_file, root_build_dir),
|
||||
+ ]
|
||||
+ }
|
||||
}
|
||||
|
||||
jumbo_component("domain_reliability") {
|
@ -1,98 +0,0 @@
|
||||
# Disables file download quarantining
|
||||
|
||||
--- a/content/browser/renderer_host/pepper/pepper_file_io_host.cc
|
||||
+++ b/content/browser/renderer_host/pepper/pepper_file_io_host.cc
|
||||
@@ -432,7 +432,7 @@ void PepperFileIOHost::OnLocalFileOpened
|
||||
ppapi::host::ReplyMessageContext reply_context,
|
||||
const base::FilePath& path,
|
||||
base::File::Error error_code) {
|
||||
-#if defined(OS_WIN) || defined(OS_LINUX)
|
||||
+#if 0
|
||||
// Quarantining a file before its contents are available is only supported on
|
||||
// Windows and Linux.
|
||||
if (!FileOpenForWrite(open_flags_) || error_code != base::File::FILE_OK) {
|
||||
@@ -452,7 +452,7 @@ void PepperFileIOHost::OnLocalFileOpened
|
||||
#endif
|
||||
}
|
||||
|
||||
-#if defined(OS_WIN) || defined(OS_LINUX)
|
||||
+#if 0
|
||||
void PepperFileIOHost::OnLocalFileQuarantined(
|
||||
ppapi::host::ReplyMessageContext reply_context,
|
||||
const base::FilePath& path,
|
||||
--- a/content/browser/renderer_host/pepper/pepper_file_io_host.h
|
||||
+++ b/content/browser/renderer_host/pepper/pepper_file_io_host.h
|
||||
@@ -15,7 +15,6 @@
|
||||
#include "base/macros.h"
|
||||
#include "base/memory/ref_counted.h"
|
||||
#include "base/memory/weak_ptr.h"
|
||||
-#include "components/download/quarantine/quarantine.h"
|
||||
#include "content/browser/renderer_host/pepper/browser_ppapi_host_impl.h"
|
||||
#include "ipc/ipc_listener.h"
|
||||
#include "ipc/ipc_platform_file.h"
|
||||
@@ -92,10 +91,6 @@ class PepperFileIOHost : public ppapi::h
|
||||
const base::FilePath& path,
|
||||
base::File::Error error_code);
|
||||
|
||||
- void OnLocalFileQuarantined(ppapi::host::ReplyMessageContext reply_context,
|
||||
- const base::FilePath& path,
|
||||
- download::QuarantineFileResult quarantine_result);
|
||||
-
|
||||
void SendFileOpenReply(ppapi::host::ReplyMessageContext reply_context,
|
||||
base::File::Error error_code);
|
||||
|
||||
--- a/components/download/internal/common/base_file.cc
|
||||
+++ b/components/download/internal/common/base_file.cc
|
||||
@@ -22,7 +22,6 @@
|
||||
#include "components/download/public/common/download_interrupt_reasons_utils.h"
|
||||
#include "components/download/public/common/download_item.h"
|
||||
#include "components/download/public/common/download_stats.h"
|
||||
-#include "components/download/quarantine/quarantine.h"
|
||||
#include "crypto/secure_hash.h"
|
||||
|
||||
#if defined(OS_ANDROID)
|
||||
@@ -494,7 +493,7 @@ DownloadInterruptReason BaseFile::Publis
|
||||
}
|
||||
#endif // defined(OS_ANDROID)
|
||||
|
||||
-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
|
||||
+#if 0
|
||||
|
||||
namespace {
|
||||
|
||||
@@ -578,7 +577,7 @@ DownloadInterruptReason BaseFile::Annota
|
||||
}
|
||||
return DOWNLOAD_INTERRUPT_REASON_FILE_FAILED;
|
||||
}
|
||||
-#else // !OS_WIN && !OS_MACOSX && !OS_LINUX
|
||||
+#else // 1
|
||||
DownloadInterruptReason BaseFile::AnnotateWithSourceInformation(
|
||||
const std::string& client_guid,
|
||||
const GURL& source_url,
|
||||
--- a/components/download/quarantine/quarantine.cc
|
||||
+++ b/components/download/quarantine/quarantine.cc
|
||||
@@ -6,8 +6,6 @@
|
||||
|
||||
#include "build/build_config.h"
|
||||
|
||||
-#if !defined(OS_WIN) && !defined(OS_MACOSX)
|
||||
-
|
||||
namespace download {
|
||||
|
||||
QuarantineFileResult QuarantineFile(const base::FilePath& file,
|
||||
@@ -18,5 +16,3 @@ QuarantineFileResult QuarantineFile(cons
|
||||
}
|
||||
|
||||
} // namespace download
|
||||
-
|
||||
-#endif // !WIN && !MAC
|
||||
--- a/content/browser/BUILD.gn
|
||||
+++ b/content/browser/BUILD.gn
|
||||
@@ -51,7 +51,6 @@ jumbo_source_set("browser") {
|
||||
"//components/discardable_memory/service",
|
||||
"//components/download/database",
|
||||
"//components/download/public/common:public",
|
||||
- "//components/download/quarantine",
|
||||
"//components/filename_generation",
|
||||
"//components/link_header_util",
|
||||
"//components/metrics",
|
@ -1,66 +0,0 @@
|
||||
# NOTE: Modified to remove usage of compiler #if macros
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sun, 8 Jul 2018 18:16:34 +0200
|
||||
Subject: Disable fetching of all field trials
|
||||
|
||||
---
|
||||
.../src/org/chromium/chrome/browser/ChromeFeatureList.java | 12 +++---------
|
||||
components/variations/service/variations_service.cc | 4 ++++
|
||||
2 files changed, 7 insertions(+), 9 deletions(-)
|
||||
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java
|
||||
@@ -106,9 +106,7 @@ public abstract class ChromeFeatureList
|
||||
*/
|
||||
public static int getFieldTrialParamByFeatureAsInt(
|
||||
String featureName, String paramName, int defaultValue) {
|
||||
- if (sTestFeatures != null) return defaultValue;
|
||||
- assert isInitialized();
|
||||
- return nativeGetFieldTrialParamByFeatureAsInt(featureName, paramName, defaultValue);
|
||||
+ return defaultValue;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -125,9 +123,7 @@ public abstract class ChromeFeatureList
|
||||
*/
|
||||
public static double getFieldTrialParamByFeatureAsDouble(
|
||||
String featureName, String paramName, double defaultValue) {
|
||||
- if (sTestFeatures != null) return defaultValue;
|
||||
- assert isInitialized();
|
||||
- return nativeGetFieldTrialParamByFeatureAsDouble(featureName, paramName, defaultValue);
|
||||
+ return defaultValue;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -144,9 +140,7 @@ public abstract class ChromeFeatureList
|
||||
*/
|
||||
public static boolean getFieldTrialParamByFeatureAsBoolean(
|
||||
String featureName, String paramName, boolean defaultValue) {
|
||||
- if (sTestFeatures != null) return defaultValue;
|
||||
- assert isInitialized();
|
||||
- return nativeGetFieldTrialParamByFeatureAsBoolean(featureName, paramName, defaultValue);
|
||||
+ return defaultValue;
|
||||
}
|
||||
|
||||
// Alphabetical:
|
||||
--- a/components/variations/service/variations_service.cc
|
||||
+++ b/components/variations/service/variations_service.cc
|
||||
@@ -240,17 +240,7 @@ bool GetInstanceManipulations(const net:
|
||||
// Variations seed fetching is only enabled in official Chrome builds, if a URL
|
||||
// is specified on the command line, and for testing.
|
||||
bool IsFetchingEnabled() {
|
||||
-#if !defined(GOOGLE_CHROME_BUILD)
|
||||
- if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
|
||||
- switches::kVariationsServerURL) &&
|
||||
- !g_should_fetch_for_testing) {
|
||||
- DVLOG(1)
|
||||
- << "Not performing repeated fetching in unofficial build without --"
|
||||
- << switches::kVariationsServerURL << " specified.";
|
||||
- return false;
|
||||
- }
|
||||
-#endif
|
||||
- return true;
|
||||
+ return false;
|
||||
}
|
||||
|
||||
std::unique_ptr<SeedResponse> MaybeImportFirstRunSeed(
|
@ -1,107 +0,0 @@
|
||||
# Disables references to fonts.googleapis.com
|
||||
|
||||
--- a/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc
|
||||
+++ b/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc
|
||||
@@ -309,7 +309,7 @@ bool DomDistillerViewerSource::ShouldSer
|
||||
}
|
||||
|
||||
std::string DomDistillerViewerSource::GetContentSecurityPolicyStyleSrc() const {
|
||||
- return "style-src 'self' https://fonts.googleapis.com;";
|
||||
+ return "style-src 'self';";
|
||||
}
|
||||
|
||||
std::string DomDistillerViewerSource::GetContentSecurityPolicyChildSrc() const {
|
||||
--- 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}
|
||||
--- a/third_party/catapult/third_party/polymer/components/font-roboto/roboto.html
|
||||
+++ b/third_party/catapult/third_party/polymer/components/font-roboto/roboto.html
|
||||
@@ -7,4 +7,4 @@ The complete set of contributors may be
|
||||
Code distributed by Google as part of the polymer project is also
|
||||
subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
|
||||
-->
|
||||
-<link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Roboto+Mono:400,700|Roboto:400,300,300italic,400italic,500,500italic,700,700italic" crossorigin="anonymous">
|
||||
+<link rel="stylesheet" href="chrome://resources/css/roboto.css">
|
||||
--- a/third_party/catapult/tracing/third_party/gl-matrix/jsdoc-template/static/default.css
|
||||
+++ b/third_party/catapult/tracing/third_party/gl-matrix/jsdoc-template/static/default.css
|
||||
@@ -168,7 +168,7 @@ ul.inheritsList
|
||||
|
||||
/* Copied from styles.css generated by Github Pages */
|
||||
|
||||
-@import url(https://fonts.googleapis.com/css?family=Lato:300italic,700italic,300,700);
|
||||
+@import url(chrome://resources/css/roboto.css);
|
||||
|
||||
body {
|
||||
padding:50px;
|
||||
--- 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,
|
||||
--- a/third_party/flatbuffers/src/docs/header.html
|
||||
+++ b/third_party/flatbuffers/src/docs/header.html
|
||||
@@ -14,7 +14,7 @@ $treeview
|
||||
$search
|
||||
$mathjax
|
||||
<link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
|
||||
-<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,400italic,500,500italic,700,700italic|Roboto+Mono:400,700" rel="stylesheet">
|
||||
+<link href="chrome://resources/css/roboto.css" rel="stylesheet">
|
||||
$extrastylesheet
|
||||
</head>
|
||||
<body>
|
||||
--- a/components/dom_distiller/core/javascript/dom_distiller_viewer.js
|
||||
+++ b/components/dom_distiller/core/javascript/dom_distiller_viewer.js
|
||||
@@ -123,7 +123,7 @@ function maybeSetWebFont() {
|
||||
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);
|
||||
--- a/tools/md_browser/base.css
|
||||
+++ b/tools/md_browser/base.css
|
||||
@@ -16,8 +16,7 @@
|
||||
|
||||
/* Common styles and definitions. */
|
||||
|
||||
-@import "//fonts.googleapis.com/css?family=Open+Sans:300,400,700&subset=latin,cyrillic-ext,greek-ext,cyrillic,greek,vietnamese,latin-ext";
|
||||
-@import "//fonts.googleapis.com/css?family=Source+Code+Pro";
|
||||
+@import "chrome://resources/css/roboto.css";
|
||||
*,
|
||||
*::after,
|
||||
*::before {
|
||||
@@ -72,7 +71,7 @@ ul, ol {
|
||||
user-select: none;
|
||||
}
|
||||
.u-monospace {
|
||||
- font-family: 'Source Code Pro', monospace;
|
||||
+ font-family: monospace;
|
||||
}
|
||||
|
||||
/* Common.soy */
|
||||
@@ -82,7 +81,7 @@ ul, ol {
|
||||
color: #000;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
- font: 14px/1.54 'Open Sans', sans-serif;
|
||||
+ font: 14px/1.54 'Roboto', sans-serif;
|
||||
min-height: 100vh;
|
||||
-ms-flex-direction: column;
|
||||
flex-direction: column;
|
@ -1,138 +0,0 @@
|
||||
# Disables Gaia code
|
||||
# Somehow it is still activated even without being signed-in: https://github.com/Eloston/ungoogled-chromium/issues/104
|
||||
|
||||
--- a/google_apis/gaia/gaia_auth_fetcher.cc
|
||||
+++ b/google_apis/gaia/gaia_auth_fetcher.cc
|
||||
@@ -262,61 +262,6 @@ void GaiaAuthFetcher::CreateAndStartGaia
|
||||
int load_flags,
|
||||
const net::NetworkTrafficAnnotationTag& traffic_annotation) {
|
||||
DCHECK(!fetch_pending_) << "Tried to fetch two things at once!";
|
||||
-
|
||||
- auto resource_request = std::make_unique<network::ResourceRequest>();
|
||||
- resource_request->url = gaia_gurl;
|
||||
- original_url_ = gaia_gurl;
|
||||
-
|
||||
- if (!(load_flags & net::LOAD_DO_NOT_SEND_COOKIES)) {
|
||||
- DCHECK_EQ(GaiaUrls::GetInstance()->gaia_url(), gaia_gurl.GetOrigin())
|
||||
- << gaia_gurl;
|
||||
- resource_request->site_for_cookies = GaiaUrls::GetInstance()->gaia_url();
|
||||
- }
|
||||
-
|
||||
- if (!body.empty())
|
||||
- resource_request->method = "POST";
|
||||
-
|
||||
- if (!headers.empty())
|
||||
- resource_request->headers.AddHeadersFromString(headers);
|
||||
-
|
||||
- // 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.
|
||||
- resource_request->load_flags = load_flags;
|
||||
-
|
||||
- // Use raw headers as the cookies are filtered-out of the response when
|
||||
- // serialized at the IPC layer.
|
||||
- resource_request->report_raw_headers = true;
|
||||
-
|
||||
- url_loader_ = network::SimpleURLLoader::Create(std::move(resource_request),
|
||||
- traffic_annotation);
|
||||
- if (!body.empty())
|
||||
- url_loader_->AttachStringForUpload(body,
|
||||
- "application/x-www-form-urlencoded");
|
||||
-
|
||||
- url_loader_->SetAllowHttpErrorResults(true);
|
||||
-
|
||||
- VLOG(2) << "Gaia fetcher URL: " << gaia_gurl.spec();
|
||||
- VLOG(2) << "Gaia fetcher headers: " << headers;
|
||||
- VLOG(2) << "Gaia fetcher body: " << body;
|
||||
-
|
||||
- // 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
|
||||
- url_loader_->SetRetryOptions(
|
||||
- 3, network::SimpleURLLoader::RETRY_ON_NETWORK_CHANGE);
|
||||
-
|
||||
- fetch_pending_ = true;
|
||||
-
|
||||
- // Unretained is OK below as |url_loader_| is owned by this.
|
||||
- url_loader_->DownloadToString(
|
||||
- url_loader_factory_.get(),
|
||||
- base::BindOnce(&GaiaAuthFetcher::OnURLLoadComplete,
|
||||
- base::Unretained(this)),
|
||||
- kMaxMessageSize);
|
||||
}
|
||||
|
||||
// static
|
||||
--- a/chrome/browser/resources/component_extension_resources.grd
|
||||
+++ b/chrome/browser/resources/component_extension_resources.grd
|
||||
@@ -32,8 +32,6 @@
|
||||
|
||||
<!-- Bookmarks -->
|
||||
<include name="IDR_COMPONENT_BOOKMARKS_BOOKMARKS_HTML" file="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" />
|
||||
--- a/chrome/browser/extensions/signin/gaia_auth_extension_loader.cc
|
||||
+++ b/chrome/browser/extensions/signin/gaia_auth_extension_loader.cc
|
||||
@@ -43,19 +43,6 @@ ComponentLoader* GetComponentLoader(Brow
|
||||
|
||||
void LoadGaiaAuthExtension(BrowserContext* context) {
|
||||
DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
||||
-
|
||||
- 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) {
|
||||
--- a/chrome/browser/extensions/component_extensions_whitelist/whitelist.cc
|
||||
+++ b/chrome/browser/extensions/component_extensions_whitelist/whitelist.cc
|
||||
@@ -67,7 +67,6 @@ bool IsComponentExtensionWhitelisted(int
|
||||
#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
|
||||
--- a/chrome/browser/ui/webui/signin/inline_login_ui.cc
|
||||
+++ b/chrome/browser/ui/webui/signin/inline_login_ui.cc
|
||||
@@ -53,7 +53,6 @@ content::WebUIDataSource* CreateWebUIDat
|
||||
|
||||
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(
|
||||
--- a/chrome/browser/browser_resources.grd
|
||||
+++ b/chrome/browser/browser_resources.grd
|
||||
@@ -392,7 +392,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" />
|
||||
@@ -492,7 +491,6 @@
|
||||
<include name="IDR_WEBRTC_LOGS_JS" file="resources\media\webrtc_logs.js" type="BINDATA" />
|
||||
<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>
|
@ -1,28 +0,0 @@
|
||||
# Disable Google Cloud Messaging (GCM) client
|
||||
|
||||
--- a/components/gcm_driver/gcm_client_impl.cc
|
||||
+++ b/components/gcm_driver/gcm_client_impl.cc
|
||||
@@ -496,6 +496,7 @@ void GCMClientImpl::StartGCM() {
|
||||
|
||||
void GCMClientImpl::InitializeMCSClient() {
|
||||
DCHECK(network_connection_tracker_);
|
||||
+ return;
|
||||
std::vector<GURL> endpoints;
|
||||
endpoints.push_back(gservices_settings_.GetMCSMainEndpoint());
|
||||
GURL fallback_endpoint = gservices_settings_.GetMCSFallbackEndpoint();
|
||||
@@ -685,6 +686,7 @@ void GCMClientImpl::RemoveHeartbeatInter
|
||||
}
|
||||
|
||||
void GCMClientImpl::StartCheckin() {
|
||||
+ return;
|
||||
// Make sure no checkin is in progress.
|
||||
if (checkin_request_)
|
||||
return;
|
||||
@@ -760,6 +762,7 @@ void GCMClientImpl::SetGServicesSettings
|
||||
}
|
||||
|
||||
void GCMClientImpl::SchedulePeriodicCheckin() {
|
||||
+ return;
|
||||
// Make sure no checkin is in progress.
|
||||
if (checkin_request_.get() || !device_checkin_info_.accounts_set)
|
||||
return;
|
@ -1,588 +0,0 @@
|
||||
# Disables various detections of Google hosts and functionality specific to them
|
||||
|
||||
--- a/net/base/url_util.cc
|
||||
+++ b/net/base/url_util.cc
|
||||
@@ -392,28 +392,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;
|
||||
}
|
||||
|
||||
--- a/components/variations/net/variations_http_headers.cc
|
||||
+++ b/components/variations/net/variations_http_headers.cc
|
||||
@@ -29,10 +29,6 @@ namespace variations {
|
||||
|
||||
namespace {
|
||||
|
||||
-// The name string for the header for variations information.
|
||||
-// Note that prior to M33 this header was named X-Chrome-Variations.
|
||||
-const char kClientDataHeader[] = "X-Client-Data";
|
||||
-
|
||||
// The result of checking if a URL should have variations headers appended.
|
||||
// This enum is used to record UMA histogram values, and should not be
|
||||
// reordered.
|
||||
@@ -96,34 +92,7 @@ class VariationsHeaderHelper {
|
||||
: VariationsHeaderHelper(request, null_url_request, variations_header) {}
|
||||
|
||||
bool AppendHeaderIfNeeded(const GURL& url, InIncognito incognito) {
|
||||
- // Note the criteria for attaching client experiment headers:
|
||||
- // 1. We only transmit to Google owned domains which can evaluate
|
||||
- // experiments.
|
||||
- // 1a. These include hosts which have a standard postfix such as:
|
||||
- // *.doubleclick.net or *.googlesyndication.com or
|
||||
- // exactly www.googleadservices.com or
|
||||
- // international TLD domains *.google.<TLD> or *.youtube.<TLD>.
|
||||
- // 2. Only transmit for non-Incognito profiles.
|
||||
- // 3. For the X-Client-Data header, only include non-empty variation IDs.
|
||||
- if ((incognito == InIncognito::kYes) || !ShouldAppendVariationsHeader(url))
|
||||
- return false;
|
||||
-
|
||||
- if (variations_header_.empty())
|
||||
- return false;
|
||||
-
|
||||
- if (resource_request_) {
|
||||
- // Set the variations header to cors_exempt_headers rather than headers
|
||||
- // to be exempted from CORS checks.
|
||||
- resource_request_->cors_exempt_headers.SetHeaderIfMissing(
|
||||
- kClientDataHeader, variations_header_);
|
||||
- } else if (url_request_) {
|
||||
- url_request_->SetExtraRequestHeaderByName(kClientDataHeader,
|
||||
- variations_header_, false);
|
||||
- } else {
|
||||
- NOTREACHED();
|
||||
- return false;
|
||||
- }
|
||||
- return true;
|
||||
+ return false;
|
||||
}
|
||||
|
||||
private:
|
||||
@@ -189,14 +158,10 @@ void RemoveVariationsHeaderIfNeeded(
|
||||
const net::RedirectInfo& redirect_info,
|
||||
const network::ResourceResponseHead& response_head,
|
||||
std::vector<std::string>* to_be_removed_headers) {
|
||||
- if (!ShouldAppendVariationsHeader(redirect_info.new_url))
|
||||
- to_be_removed_headers->push_back(kClientDataHeader);
|
||||
}
|
||||
|
||||
void StripVariationsHeaderIfNeeded(const GURL& new_location,
|
||||
net::URLRequest* request) {
|
||||
- if (!ShouldAppendVariationsHeader(new_location))
|
||||
- request->RemoveRequestHeaderByName(kClientDataHeader);
|
||||
}
|
||||
|
||||
std::unique_ptr<network::SimpleURLLoader>
|
||||
@@ -226,11 +191,11 @@ CreateSimpleURLLoaderWithVariationsHeade
|
||||
}
|
||||
|
||||
bool IsVariationsHeader(const std::string& header_name) {
|
||||
- return header_name == kClientDataHeader;
|
||||
+ return false;
|
||||
}
|
||||
|
||||
bool HasVariationsHeader(const network::ResourceRequest& request) {
|
||||
- return request.cors_exempt_headers.HasHeader(kClientDataHeader);
|
||||
+ return false;
|
||||
}
|
||||
|
||||
bool ShouldAppendVariationsHeaderForTesting(const GURL& url) {
|
||||
@@ -239,7 +204,6 @@ bool ShouldAppendVariationsHeaderForTest
|
||||
|
||||
void UpdateCorsExemptHeaderForVariations(
|
||||
network::mojom::NetworkContextParams* params) {
|
||||
- params->cors_exempt_header_list.push_back(kClientDataHeader);
|
||||
}
|
||||
|
||||
} // namespace variations
|
||||
--- 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) {
|
||||
--- a/components/search_engines/template_url.cc
|
||||
+++ b/components/search_engines/template_url.cc
|
||||
@@ -505,11 +505,7 @@ base::string16 TemplateURLRef::SearchTer
|
||||
bool TemplateURLRef::HasGoogleBaseURLs(
|
||||
const SearchTermsData& search_terms_data) const {
|
||||
ParseIfNecessary(search_terms_data);
|
||||
- return std::any_of(replacements_.begin(), replacements_.end(),
|
||||
- [](const Replacement& replacement) {
|
||||
- return replacement.type == GOOGLE_BASE_URL ||
|
||||
- replacement.type == GOOGLE_BASE_SUGGEST_URL;
|
||||
- });
|
||||
+ return false;
|
||||
}
|
||||
|
||||
bool TemplateURLRef::ExtractSearchTermsFromURL(
|
||||
--- a/components/google/core/common/google_util.cc
|
||||
+++ b/components/google/core/common/google_util.cc
|
||||
@@ -45,120 +45,16 @@ bool gUseMockLinkDoctorBaseURLForTesting
|
||||
|
||||
bool g_ignore_port_numbers = 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() || g_ignore_port_numbers ||
|
||||
- (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);
|
||||
-
|
||||
- static const base::NoDestructor<base::flat_set<base::StringPiece>>
|
||||
- google_tlds(std::initializer_list<base::StringPiece>({GOOGLE_TLD_LIST}));
|
||||
- return google_tlds->contains(tld);
|
||||
-}
|
||||
-
|
||||
-// 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);
|
||||
-
|
||||
- static const base::NoDestructor<base::flat_set<base::StringPiece>>
|
||||
- google_subdomains(std::initializer_list<base::StringPiece>(
|
||||
- {"ipv4.google.com", "ipv6.google.com"}));
|
||||
-
|
||||
- return google_subdomains->contains(host);
|
||||
-}
|
||||
-
|
||||
} // 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() {
|
||||
@@ -172,162 +68,53 @@ std::string GetGoogleLocale(const std::s
|
||||
|
||||
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('.');
|
||||
- if (last_dot == std::string::npos)
|
||||
- return std::string();
|
||||
- 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.
|
||||
- static base::NoDestructor<std::string> switch_value;
|
||||
static base::NoDestructor<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;
|
||||
}
|
||||
|
||||
bool IsGoogleAssociatedDomainUrl(const GURL& url) {
|
||||
- if (IsGoogleDomainUrl(url, ALLOW_SUBDOMAIN, ALLOW_NON_STANDARD_PORTS))
|
||||
- return true;
|
||||
-
|
||||
- if (IsYoutubeDomainUrl(url, ALLOW_SUBDOMAIN, ALLOW_NON_STANDARD_PORTS))
|
||||
- return true;
|
||||
-
|
||||
- // Some domains don't have international TLD extensions, so testing for them
|
||||
- // is very straightforward.
|
||||
- static const char* kSuffixesToSetHeadersFor[] = {
|
||||
- ".android.com",
|
||||
- ".doubleclick.com",
|
||||
- ".doubleclick.net",
|
||||
- ".ggpht.com",
|
||||
- ".googleadservices.com",
|
||||
- ".googleapis.com",
|
||||
- ".googlesyndication.com",
|
||||
- ".googleusercontent.com",
|
||||
- ".googlevideo.com",
|
||||
- ".gstatic.com",
|
||||
- ".litepages.googlezip.net",
|
||||
- ".ytimg.com",
|
||||
- };
|
||||
- const std::string host = url.host();
|
||||
- for (size_t i = 0; i < base::size(kSuffixesToSetHeadersFor); ++i) {
|
||||
- if (base::EndsWith(host, kSuffixesToSetHeadersFor[i],
|
||||
- base::CompareCase::INSENSITIVE_ASCII)) {
|
||||
- return true;
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- // Exact hostnames in lowercase to set headers for.
|
||||
- static const char* kHostsToSetHeadersFor[] = {
|
||||
- "googleweblight.com",
|
||||
- };
|
||||
- for (size_t i = 0; i < base::size(kHostsToSetHeadersFor); ++i) {
|
||||
- if (base::LowerCaseEqualsASCII(host, kHostsToSetHeadersFor[i]))
|
||||
- return true;
|
||||
- }
|
||||
-
|
||||
return false;
|
||||
}
|
||||
|
||||
--- 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) {
|
||||
--- a/chrome/common/google_url_loader_throttle.cc
|
||||
+++ b/chrome/common/google_url_loader_throttle.cc
|
||||
@@ -8,10 +8,6 @@
|
||||
#include "components/variations/net/variations_http_headers.h"
|
||||
#include "services/network/public/cpp/features.h"
|
||||
|
||||
-#if BUILDFLAG(ENABLE_EXTENSIONS)
|
||||
-#include "extensions/common/extension_urls.h"
|
||||
-#endif
|
||||
-
|
||||
GoogleURLLoaderThrottle::GoogleURLLoaderThrottle(
|
||||
bool is_off_the_record,
|
||||
chrome::mojom::DynamicParams dynamic_params)
|
||||
@@ -25,36 +21,6 @@ void GoogleURLLoaderThrottle::DetachFrom
|
||||
void GoogleURLLoaderThrottle::WillStartRequest(
|
||||
network::ResourceRequest* request,
|
||||
bool* defer) {
|
||||
- variations::AppendVariationsHeaderWithCustomValue(
|
||||
- request->url,
|
||||
- is_off_the_record_ ? variations::InIncognito::kYes
|
||||
- : variations::InIncognito::kNo,
|
||||
- dynamic_params_.variation_ids_header, request);
|
||||
-
|
||||
- if (dynamic_params_.force_safe_search) {
|
||||
- GURL new_url;
|
||||
- safe_search_util::ForceGoogleSafeSearch(request->url, &new_url);
|
||||
- if (!new_url.is_empty())
|
||||
- request->url = new_url;
|
||||
- }
|
||||
-
|
||||
- static_assert(safe_search_util::YOUTUBE_RESTRICT_OFF == 0,
|
||||
- "OFF must be first");
|
||||
- if (dynamic_params_.youtube_restrict >
|
||||
- safe_search_util::YOUTUBE_RESTRICT_OFF &&
|
||||
- dynamic_params_.youtube_restrict <
|
||||
- safe_search_util::YOUTUBE_RESTRICT_COUNT) {
|
||||
- safe_search_util::ForceYouTubeRestrict(
|
||||
- request->url, &request->headers,
|
||||
- static_cast<safe_search_util::YouTubeRestrictMode>(
|
||||
- dynamic_params_.youtube_restrict));
|
||||
- }
|
||||
-
|
||||
- if (!dynamic_params_.allowed_domains_for_apps.empty() &&
|
||||
- request->url.DomainIs("google.com")) {
|
||||
- request->headers.SetHeader(safe_search_util::kGoogleAppsAllowedDomains,
|
||||
- dynamic_params_.allowed_domains_for_apps);
|
||||
- }
|
||||
}
|
||||
|
||||
void GoogleURLLoaderThrottle::WillRedirectRequest(
|
||||
@@ -63,33 +29,6 @@ void GoogleURLLoaderThrottle::WillRedire
|
||||
bool* /* defer */,
|
||||
std::vector<std::string>* to_be_removed_headers,
|
||||
net::HttpRequestHeaders* modified_headers) {
|
||||
- variations::RemoveVariationsHeaderIfNeeded(*redirect_info, response_head,
|
||||
- to_be_removed_headers);
|
||||
-
|
||||
- // URLLoaderThrottles can only change the redirect URL when the network
|
||||
- // service is enabled. The non-network service path handles this in
|
||||
- // ChromeNetworkDelegate.
|
||||
- if (dynamic_params_.force_safe_search &&
|
||||
- base::FeatureList::IsEnabled(network::features::kNetworkService)) {
|
||||
- safe_search_util::ForceGoogleSafeSearch(redirect_info->new_url,
|
||||
- &redirect_info->new_url);
|
||||
- }
|
||||
-
|
||||
- if (dynamic_params_.youtube_restrict >
|
||||
- safe_search_util::YOUTUBE_RESTRICT_OFF &&
|
||||
- dynamic_params_.youtube_restrict <
|
||||
- safe_search_util::YOUTUBE_RESTRICT_COUNT) {
|
||||
- safe_search_util::ForceYouTubeRestrict(
|
||||
- redirect_info->new_url, modified_headers,
|
||||
- static_cast<safe_search_util::YouTubeRestrictMode>(
|
||||
- dynamic_params_.youtube_restrict));
|
||||
- }
|
||||
-
|
||||
- if (!dynamic_params_.allowed_domains_for_apps.empty() &&
|
||||
- redirect_info->new_url.DomainIs("google.com")) {
|
||||
- modified_headers->SetHeader(safe_search_util::kGoogleAppsAllowedDomains,
|
||||
- dynamic_params_.allowed_domains_for_apps);
|
||||
- }
|
||||
}
|
||||
|
||||
#if BUILDFLAG(ENABLE_EXTENSIONS)
|
||||
@@ -97,17 +36,5 @@ void GoogleURLLoaderThrottle::WillProces
|
||||
const GURL& response_url,
|
||||
network::ResourceResponseHead* response_head,
|
||||
bool* defer) {
|
||||
- // Built-in additional protection for the chrome web store origin.
|
||||
- GURL webstore_url(extension_urls::GetWebstoreLaunchURL());
|
||||
- if (response_url.SchemeIsHTTPOrHTTPS() &&
|
||||
- response_url.DomainIs(webstore_url.host_piece())) {
|
||||
- if (response_head && response_head->headers &&
|
||||
- !response_head->headers->HasHeaderValue("x-frame-options", "deny") &&
|
||||
- !response_head->headers->HasHeaderValue("x-frame-options",
|
||||
- "sameorigin")) {
|
||||
- response_head->headers->RemoveHeader("x-frame-options");
|
||||
- response_head->headers->AddHeader("x-frame-options: sameorigin");
|
||||
- }
|
||||
- }
|
||||
}
|
||||
#endif
|
@ -1,25 +0,0 @@
|
||||
# Disables use of a binary for preloading the Media Engagement index
|
||||
# Said binary is: chrome/browser/resources/media/mei_preload/preloaded_data.pb
|
||||
# According to media/base/media_switches (for PreloadMediaEngagementData), it
|
||||
# "enables a list of origins to be considered as having a high MEI until there
|
||||
# is enough local data to determine the user's preferred behavior." This feature
|
||||
# does not seem to outweigh the benefit of removing the binary, thus this patch.
|
||||
|
||||
--- a/chrome/BUILD.gn
|
||||
+++ b/chrome/BUILD.gn
|
||||
@@ -330,7 +330,6 @@ if (!is_android && !is_mac) {
|
||||
}
|
||||
|
||||
data_deps += [
|
||||
- "//chrome/browser/resources/media/mei_preload:component",
|
||||
"//third_party/widevine/cdm",
|
||||
]
|
||||
|
||||
@@ -1330,7 +1329,6 @@ if (is_win) {
|
||||
":packed_resources",
|
||||
":swiftshader_library",
|
||||
":widevine_cdm_library",
|
||||
- "//chrome/browser/resources/media/mei_preload:component_bundle",
|
||||
]
|
||||
|
||||
if (is_chrome_branded) {
|
@ -1,16 +0,0 @@
|
||||
# Disable Network Time Tracker
|
||||
# This connects to Google to check if the system time is correct when a website certificate
|
||||
# date seems incorrect, according to https://bugs.chromium.org/p/chromium/issues/detail?id=725232,
|
||||
# Fixes https://github.com/Eloston/ungoogled-chromium/issues/302
|
||||
|
||||
--- a/components/network_time/network_time_tracker.cc
|
||||
+++ b/components/network_time/network_time_tracker.cc
|
||||
@@ -277,7 +277,7 @@ void NetworkTimeTracker::UpdateNetworkTi
|
||||
}
|
||||
|
||||
bool NetworkTimeTracker::AreTimeFetchesEnabled() const {
|
||||
- return base::FeatureList::IsEnabled(kNetworkTimeServiceQuerying);
|
||||
+ return false;
|
||||
}
|
||||
|
||||
NetworkTimeTracker::FetchBehavior NetworkTimeTracker::GetFetchBehavior() const {
|
@ -1,112 +0,0 @@
|
||||
# Disables WebRTC log uploading to Google
|
||||
|
||||
--- a/chrome/browser/media/webrtc/webrtc_log_uploader.cc
|
||||
+++ b/chrome/browser/media/webrtc/webrtc_log_uploader.cc
|
||||
@@ -131,29 +131,11 @@ void WebRtcLogUploader::LoggingStoppedDo
|
||||
DCHECK(meta_data.get());
|
||||
DCHECK(!upload_done_data.log_path.empty());
|
||||
|
||||
- std::string compressed_log = CompressLog(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::TextLogList::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);
|
||||
+ NotifyUploadDoneAndLogStats(net::HTTP_OK, net::OK, "", upload_done_data);
|
||||
}
|
||||
|
||||
void WebRtcLogUploader::PrepareMultipartPostData(
|
||||
@@ -164,27 +146,7 @@ void WebRtcLogUploader::PrepareMultipart
|
||||
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;
|
||||
- NotifyUploadDoneAndLogStats(net::HTTP_OK, net::OK, "", upload_done_data);
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- base::PostTaskWithTraits(
|
||||
- FROM_HERE, {BrowserThread::IO},
|
||||
- base::BindOnce(&WebRtcLogUploader::UploadCompressedLog,
|
||||
- base::Unretained(this), upload_done_data,
|
||||
- std::move(post_data)));
|
||||
+ NotifyUploadDoneAndLogStats(net::HTTP_OK, net::OK, "", upload_done_data);
|
||||
}
|
||||
|
||||
void WebRtcLogUploader::UploadStoredLog(
|
||||
@@ -255,47 +217,6 @@ void WebRtcLogUploader::LoggingStoppedDo
|
||||
|
||||
webrtc_logging::DeleteOldWebRtcLogFiles(log_paths.log_path);
|
||||
|
||||
- base::FilePath log_list_path =
|
||||
- webrtc_logging::TextLogList::GetWebRtcLogListFileForDirectory(
|
||||
- log_paths.log_path);
|
||||
-
|
||||
- // Store the native log with a ".gz" extension.
|
||||
- std::string compressed_log = CompressLog(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());
|
||||
- }
|
||||
-
|
||||
base::PostTaskWithTraits(FROM_HERE, {BrowserThread::UI},
|
||||
base::BindOnce(done_callback, true, ""));
|
||||
|
@ -1,14 +0,0 @@
|
||||
description: avoid building the swiftshader library
|
||||
author: Michael Gilbert <mgilbert@debian.org>
|
||||
|
||||
--- a/BUILD.gn
|
||||
+++ b/BUILD.gn
|
||||
@@ -449,7 +449,7 @@ group("gn_all") {
|
||||
]
|
||||
}
|
||||
|
||||
- if ((is_win || is_mac || is_linux || is_chromeos || is_fuchsia) &&
|
||||
+ if (false &&
|
||||
(target_cpu == "x86" || target_cpu == "x64")) {
|
||||
deps += [ "//third_party/swiftshader" ]
|
||||
}
|
@ -1,53 +0,0 @@
|
||||
# Fix building with enable_service_discovery=false and enable_mds=false
|
||||
|
||||
--- a/chrome/browser/media/router/discovery/mdns/dns_sd_device_lister.cc
|
||||
+++ b/chrome/browser/media/router/discovery/mdns/dns_sd_device_lister.cc
|
||||
@@ -37,48 +37,22 @@ DnsSdDeviceLister::DnsSdDeviceLister(
|
||||
DnsSdDeviceLister::~DnsSdDeviceLister() {}
|
||||
|
||||
void DnsSdDeviceLister::Discover() {
|
||||
- if (!device_lister_) {
|
||||
- device_lister_ = local_discovery::ServiceDiscoveryDeviceLister::Create(
|
||||
- this, service_discovery_client_, service_type_);
|
||||
- device_lister_->Start();
|
||||
- VLOG(1) << "Started device lister for service type "
|
||||
- << device_lister_->service_type();
|
||||
- }
|
||||
- device_lister_->DiscoverNewDevices();
|
||||
- VLOG(1) << "Discovery new devices for service type "
|
||||
- << device_lister_->service_type();
|
||||
}
|
||||
|
||||
void DnsSdDeviceLister::Reset() {
|
||||
- device_lister_.reset();
|
||||
}
|
||||
|
||||
void DnsSdDeviceLister::OnDeviceChanged(
|
||||
const std::string& service_type,
|
||||
bool added,
|
||||
const ServiceDescription& service_description) {
|
||||
- DnsSdService service;
|
||||
- FillServiceInfo(service_description, &service);
|
||||
- VLOG(1) << "OnDeviceChanged: "
|
||||
- << "service_name: " << service.service_name << ", "
|
||||
- << "added: " << added << ", "
|
||||
- << "service_type: " << device_lister_->service_type();
|
||||
- delegate_->ServiceChanged(device_lister_->service_type(), added, service);
|
||||
}
|
||||
|
||||
void DnsSdDeviceLister::OnDeviceRemoved(const std::string& service_type,
|
||||
const std::string& service_name) {
|
||||
- VLOG(1) << "OnDeviceRemoved: "
|
||||
- << "service_name: " << service_name << ", "
|
||||
- << "service_type: " << service_type;
|
||||
- delegate_->ServiceRemoved(service_type, service_name);
|
||||
}
|
||||
|
||||
void DnsSdDeviceLister::OnDeviceCacheFlushed(const std::string& service_type) {
|
||||
- VLOG(1) << "OnDeviceCacheFlushed: "
|
||||
- << "service_type: " << device_lister_->service_type();
|
||||
- delegate_->ServicesFlushed(device_lister_->service_type());
|
||||
- device_lister_->DiscoverNewDevices();
|
||||
}
|
||||
|
||||
} // namespace media_router
|
@ -1,74 +0,0 @@
|
||||
# Additional changes to Inox's fix-building-without-safebrowsing.patch
|
||||
|
||||
--- a/chrome/browser/chrome_content_browser_client.cc
|
||||
+++ b/chrome/browser/chrome_content_browser_client.cc
|
||||
@@ -5307,20 +5307,7 @@ safe_browsing::UrlCheckerDelegate*
|
||||
ChromeContentBrowserClient::GetSafeBrowsingUrlCheckerDelegate(
|
||||
content::ResourceContext* resource_context) {
|
||||
DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
||||
-
|
||||
- ProfileIOData* io_data = ProfileIOData::FromResourceContext(resource_context);
|
||||
- if (!io_data->safe_browsing_enabled()->GetValue())
|
||||
- return nullptr;
|
||||
-
|
||||
- // |safe_browsing_service_| may be unavailable in tests.
|
||||
- if (safe_browsing_service_ && !safe_browsing_url_checker_delegate_) {
|
||||
- safe_browsing_url_checker_delegate_ =
|
||||
- base::MakeRefCounted<safe_browsing::UrlCheckerDelegateImpl>(
|
||||
- safe_browsing_service_->database_manager(),
|
||||
- safe_browsing_service_->ui_manager());
|
||||
- }
|
||||
-
|
||||
- return safe_browsing_url_checker_delegate_.get();
|
||||
+ return nullptr;
|
||||
}
|
||||
|
||||
base::Optional<std::string>
|
||||
--- a/chrome/browser/download/download_item_model.cc
|
||||
+++ b/chrome/browser/download/download_item_model.cc
|
||||
@@ -22,9 +22,6 @@
|
||||
#include "chrome/browser/download/download_stats.h"
|
||||
#include "chrome/browser/download/offline_item_utils.h"
|
||||
#include "chrome/browser/profiles/profile.h"
|
||||
-#include "chrome/browser/safe_browsing/download_protection/download_feedback_service.h"
|
||||
-#include "chrome/common/safe_browsing/download_file_types.pb.h"
|
||||
-#include "chrome/common/safe_browsing/file_type_policies.h"
|
||||
#include "chrome/grit/chromium_strings.h"
|
||||
#include "chrome/grit/generated_resources.h"
|
||||
#include "components/download/public/common/download_danger_type.h"
|
||||
@@ -37,7 +34,6 @@
|
||||
|
||||
using base::TimeDelta;
|
||||
using download::DownloadItem;
|
||||
-using safe_browsing::DownloadFileType;
|
||||
|
||||
namespace {
|
||||
|
||||
@@ -264,14 +260,7 @@ bool DownloadItemModel::IsMalicious() co
|
||||
}
|
||||
|
||||
bool DownloadItemModel::ShouldAllowDownloadFeedback() const {
|
||||
-#if defined(FULL_SAFE_BROWSING)
|
||||
- if (!IsDangerous())
|
||||
- return false;
|
||||
- return safe_browsing::DownloadFeedbackService::IsEnabledForDownload(
|
||||
- *download_);
|
||||
-#else
|
||||
return false;
|
||||
-#endif
|
||||
}
|
||||
|
||||
bool DownloadItemModel::ShouldRemoveFromShelfWhenComplete() const {
|
||||
--- a/chrome/browser/ui/views/safe_browsing/password_reuse_modal_warning_dialog.cc
|
||||
+++ b/chrome/browser/ui/views/safe_browsing/password_reuse_modal_warning_dialog.cc
|
||||
@@ -58,9 +58,7 @@ PasswordReuseModalWarningDialog::Passwor
|
||||
SetLayoutManager(std::make_unique<views::FillLayout>());
|
||||
|
||||
views::Label* message_body_label = new views::Label(
|
||||
- service_
|
||||
- ? service_->GetWarningDetailText(password_type)
|
||||
- : l10n_util::GetStringUTF16(IDS_PAGE_INFO_CHANGE_PASSWORD_DETAILS));
|
||||
+ l10n_util::GetStringUTF16(IDS_PAGE_INFO_CHANGE_PASSWORD_DETAILS));
|
||||
message_body_label->SetMultiLine(true);
|
||||
message_body_label->SetHorizontalAlignment(gfx::ALIGN_LEFT);
|
||||
message_body_label->SetHandlesTooltips(false);
|
@ -1,40 +0,0 @@
|
||||
description: fuzzers aren't built, so don't depend on them
|
||||
author: Michael Gilbert <mgilbert@debian.org>
|
||||
|
||||
--- a/BUILD.gn
|
||||
+++ b/BUILD.gn
|
||||
@@ -722,8 +722,7 @@ group("gn_all") {
|
||||
}
|
||||
}
|
||||
|
||||
- if ((is_linux && !is_chromecast) || (is_win && use_libfuzzer) ||
|
||||
- (use_libfuzzer && is_mac)) {
|
||||
+ if (false) {
|
||||
deps += [
|
||||
"//chrome/services/cups_ipp_parser/public/cpp:fuzzers",
|
||||
"//testing/libfuzzer/fuzzers",
|
||||
--- a/content/test/BUILD.gn
|
||||
+++ b/content/test/BUILD.gn
|
||||
@@ -2320,12 +2320,6 @@ test("content_perftests") {
|
||||
}
|
||||
}
|
||||
|
||||
-group("fuzzers") {
|
||||
- deps = [
|
||||
- "//content/test/fuzzer",
|
||||
- ]
|
||||
-}
|
||||
-
|
||||
# This group defines the isolate files needed to run
|
||||
# test_buildbucket_api_gpu_cases.py on bots. This also tells the build system
|
||||
# when the tests should be re-run - when one of the dependent files changes.
|
||||
--- a/v8/tools/BUILD.gn
|
||||
+++ b/v8/tools/BUILD.gn
|
||||
@@ -11,7 +11,6 @@ group("gn_all") {
|
||||
data_deps = [
|
||||
":v8_check_static_initializers",
|
||||
"gcmole:v8_run_gcmole",
|
||||
- "jsfunfuzz:v8_jsfunfuzz",
|
||||
]
|
||||
}
|
||||
|
@ -1,16 +0,0 @@
|
||||
description: disable the google api key warning when those aren't found
|
||||
author: Michael Gilbert <mgilbert@debian.org>
|
||||
|
||||
--- a/chrome/browser/ui/startup/startup_browser_creator_impl.cc
|
||||
+++ b/chrome/browser/ui/startup/startup_browser_creator_impl.cc
|
||||
@@ -810,10 +810,6 @@ void StartupBrowserCreatorImpl::AddInfoB
|
||||
chrome::ShowBadFlagsPrompt(web_contents);
|
||||
InfoBarService* infobar_service =
|
||||
InfoBarService::FromWebContents(web_contents);
|
||||
- if (!google_apis::HasAPIKeyConfigured() ||
|
||||
- !google_apis::HasOAuthClientConfigured()) {
|
||||
- GoogleApiKeysInfoBarDelegate::Create(infobar_service);
|
||||
- }
|
||||
if (ObsoleteSystem::IsObsoleteNowOrSoon()) {
|
||||
PrefService* local_state = g_browser_process->local_state();
|
||||
if (!local_state ||
|
@ -1,78 +0,0 @@
|
||||
diff --git chromium-75.0.3770.100/base/allocator/allocator_shim_internals.h chromium-75.0.3770.100/base/allocator/allocator_shim_internals.h
|
||||
index 0196f89..bb42b5d 100644
|
||||
--- chromium-75.0.3770.100/base/allocator/allocator_shim_internals.h
|
||||
+++ chromium-75.0.3770.100/base/allocator/allocator_shim_internals.h
|
||||
@@ -7,7 +7,9 @@
|
||||
|
||||
#if defined(__GNUC__)
|
||||
|
||||
+#if defined(__GLIBC__)
|
||||
#include <sys/cdefs.h> // for __THROW
|
||||
+#endif
|
||||
|
||||
#ifndef __THROW // Not a glibc system
|
||||
#ifdef _NOEXCEPT // LLVM libc++ uses noexcept instead
|
||||
diff --git chromium-75.0.3770.100/sandbox/linux/suid/sandbox.c chromium-75.0.3770.100/sandbox/linux/suid/sandbox.c
|
||||
index 854819b..39937e4 100644
|
||||
--- chromium-75.0.3770.100/sandbox/linux/suid/sandbox.c
|
||||
+++ chromium-75.0.3770.100/sandbox/linux/suid/sandbox.c
|
||||
@@ -44,7 +44,16 @@
|
||||
|
||||
static bool DropRoot();
|
||||
|
||||
+#if defined(TEMP_FAILURE_RETRY)
|
||||
#define HANDLE_EINTR(x) TEMP_FAILURE_RETRY(x)
|
||||
+#else
|
||||
+#define HANDLE_EINTR(expression) \
|
||||
+ (__extension__ \
|
||||
+ ({ long __result; \
|
||||
+ do __result = (long) (expression); \
|
||||
+ while (__result == -1L && errno == EINTR); \
|
||||
+ __result; }))
|
||||
+#endif
|
||||
|
||||
static void FatalError(const char* msg, ...)
|
||||
__attribute__((noreturn, format(printf, 1, 2)));
|
||||
diff --git chromium-75.0.3770.100/third_party/crashpad/crashpad/compat/linux/sys/ptrace.h chromium-75.0.3770.100/third_party/crashpad/crashpad/compat/linux/sys/ptrace.h
|
||||
index f8be372..c07e4c8 100644
|
||||
--- chromium-75.0.3770.100/third_party/crashpad/crashpad/compat/linux/sys/ptrace.h
|
||||
+++ chromium-75.0.3770.100/third_party/crashpad/crashpad/compat/linux/sys/ptrace.h
|
||||
@@ -17,8 +17,6 @@
|
||||
|
||||
#include_next <sys/ptrace.h>
|
||||
|
||||
-#include <sys/cdefs.h>
|
||||
-
|
||||
// https://sourceware.org/bugzilla/show_bug.cgi?id=22433
|
||||
#if !defined(PTRACE_GET_THREAD_AREA) && !defined(PT_GET_THREAD_AREA) && \
|
||||
defined(__GLIBC__)
|
||||
diff --git chromium-69.0.3497.100/third_party/libsync/src/include/sync/sync.h
|
||||
index 50ed0ac..7552a49 100644
|
||||
--- chromium-69.0.3497.100/third_party/libsync/src/include/sync/sync.h
|
||||
+++ chromium-69.0.3497.100/third_party/libsync/src/include/sync/sync.h
|
||||
@@ -19,12 +19,13 @@
|
||||
#ifndef __SYS_CORE_SYNC_H
|
||||
#define __SYS_CORE_SYNC_H
|
||||
|
||||
-#include <sys/cdefs.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
-__BEGIN_DECLS
|
||||
+#ifdef __cplusplus
|
||||
+extern "C" {
|
||||
+#endif /* __cplusplus */
|
||||
|
||||
struct sync_legacy_merge_data {
|
||||
int32_t fd2;
|
||||
@@ -158,6 +159,8 @@ struct sync_pt_info *sync_pt_info(struct sync_fence_info_data *info,
|
||||
struct sync_pt_info *itr);
|
||||
void sync_fence_info_free(struct sync_fence_info_data *info);
|
||||
|
||||
-__END_DECLS
|
||||
+#ifdef __cplusplus
|
||||
+}
|
||||
+#endif /* __cplusplus */
|
||||
|
||||
#endif /* __SYS_CORE_SYNC_H */
|
@ -1,13 +0,0 @@
|
||||
diff --git chromium-75.0.3770.100/base/native_library_posix.cc chromium-75.0.3770.100/base/native_library_posix.cc
|
||||
index 7a5c6f5..6e8a5fa 100644
|
||||
--- chromium-75.0.3770.100/base/native_library_posix.cc
|
||||
+++ chromium-75.0.3770.100/base/native_library_posix.cc
|
||||
@@ -34,7 +34,7 @@ NativeLibrary LoadNativeLibraryWithOptions(const FilePath& library_path,
|
||||
// further investigation, as it might vary across versions. Crash here to
|
||||
// warn developers that they're trying to rely on uncertain behavior.
|
||||
CHECK(!options.prefer_own_symbols);
|
||||
-#else
|
||||
+#elif defined(RTLD_DEEPBIND)
|
||||
if (options.prefer_own_symbols)
|
||||
flags |= RTLD_DEEPBIND;
|
||||
#endif
|
@ -1,71 +0,0 @@
|
||||
diff --git chromium-75.0.3770.100/net/dns/dns_config_service_posix.cc chromium-75.0.3770.100/net/dns/dns_config_service_posix.cc
|
||||
index 48ee925..3bf8756 100644
|
||||
--- chromium-75.0.3770.100/net/dns/dns_config_service_posix.cc
|
||||
+++ chromium-75.0.3770.100/net/dns/dns_config_service_posix.cc
|
||||
@@ -150,7 +150,7 @@ ConfigParsePosixResult ReadDnsConfig(DnsConfig* dns_config) {
|
||||
#if !defined(OS_ANDROID)
|
||||
ConfigParsePosixResult result;
|
||||
// TODO(fuchsia): Use res_ninit() when it's implemented on Fuchsia.
|
||||
-#if defined(OS_OPENBSD) || defined(OS_FUCHSIA)
|
||||
+#if defined(OS_OPENBSD) || defined(OS_FUCHSIA) || (defined(OS_LINUX) && !defined(__GLIBC__))
|
||||
// Note: res_ninit in glibc always returns 0 and sets RES_INIT.
|
||||
// res_init behaves the same way.
|
||||
memset(&_res, 0, sizeof(_res));
|
||||
@@ -173,7 +173,7 @@ ConfigParsePosixResult ReadDnsConfig(DnsConfig* dns_config) {
|
||||
#else
|
||||
res_nclose(&res);
|
||||
#endif // defined(OS_MACOSX) || defined(OS_FREEBSD)
|
||||
-#endif // defined(OS_OPENBSD)
|
||||
+#endif // defined(OS_OPENBSD) || defined(OS_FUCHSIA) || (defined(OS_LINUX) && !defined(__GLIBC__))
|
||||
|
||||
#if defined(OS_MACOSX) && !defined(OS_IOS)
|
||||
ConfigParsePosixResult error = DnsConfigWatcher::CheckDnsConfig();
|
||||
diff --git chromium-75.0.3770.100/net/dns/dns_reloader.cc chromium-75.0.3770.100/net/dns/dns_reloader.cc
|
||||
index 03e248c..6135fcc 100644
|
||||
--- chromium-75.0.3770.100/net/dns/dns_reloader.cc
|
||||
+++ chromium-75.0.3770.100/net/dns/dns_reloader.cc
|
||||
@@ -4,8 +4,7 @@
|
||||
|
||||
#include "net/dns/dns_reloader.h"
|
||||
|
||||
-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_OPENBSD) && \
|
||||
- !defined(OS_ANDROID) && !defined(OS_FUCHSIA)
|
||||
+#if defined(__GLIBC__)
|
||||
|
||||
#include <resolv.h>
|
||||
|
||||
@@ -108,5 +107,4 @@ void DnsReloaderMaybeReload() {
|
||||
|
||||
} // namespace net
|
||||
|
||||
-#endif // defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_OPENBSD) &&
|
||||
- // !defined(OS_ANDROID)
|
||||
+#endif // defined(__GLIBC__)
|
||||
diff --git chromium-75.0.3770.100/net/dns/host_resolver_manager.cc chromium-75.0.3770.100/net/dns/host_resolver_manager.cc
|
||||
index 3c75dde..c748d94 100644
|
||||
--- chromium-75.0.3770.100/net/dns/host_resolver_manager.cc
|
||||
+++ chromium-75.0.3770.100/net/dns/host_resolver_manager.cc
|
||||
@@ -2266,8 +2266,7 @@ HostResolverManager::HostResolverManager(const Options& options,
|
||||
NetworkChangeNotifier::AddIPAddressObserver(this);
|
||||
NetworkChangeNotifier::AddConnectionTypeObserver(this);
|
||||
NetworkChangeNotifier::AddDNSObserver(this);
|
||||
-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_OPENBSD) && \
|
||||
- !defined(OS_ANDROID)
|
||||
+#if defined(__GLIBC__)
|
||||
EnsureDnsReloaderInit();
|
||||
#endif
|
||||
|
||||
diff --git chromium-75.0.3770.100/net/dns/host_resolver_proc.cc chromium-75.0.3770.100/net/dns/host_resolver_proc.cc
|
||||
index 90d9958..71d9b4a 100644
|
||||
--- chromium-75.0.3770.100/net/dns/host_resolver_proc.cc
|
||||
+++ chromium-75.0.3770.100/net/dns/host_resolver_proc.cc
|
||||
@@ -197,8 +197,7 @@ int SystemHostResolverCall(const std::string& host,
|
||||
base::ScopedBlockingCall scoped_blocking_call(FROM_HERE,
|
||||
base::BlockingType::WILL_BLOCK);
|
||||
|
||||
-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_OPENBSD) && \
|
||||
- !defined(OS_ANDROID) && !defined(OS_FUCHSIA)
|
||||
+#if defined(__GLIBC__)
|
||||
DnsReloaderMaybeReload();
|
||||
#endif
|
||||
int err = getaddrinfo(host.c_str(), nullptr, &hints, &ai);
|
@ -1,96 +0,0 @@
|
||||
diff --git chromium-75.0.3770.100/base/debug/stack_trace_posix.cc chromium-75.0.3770.100/base/debug/stack_trace_posix.cc
|
||||
index d4b8b3a..bd26968 100644
|
||||
--- chromium-75.0.3770.100/base/debug/stack_trace_posix.cc
|
||||
+++ chromium-75.0.3770.100/base/debug/stack_trace_posix.cc
|
||||
@@ -27,7 +27,7 @@
|
||||
#if !defined(USE_SYMBOLIZE)
|
||||
#include <cxxabi.h>
|
||||
#endif
|
||||
-#if !defined(__UCLIBC__) && !defined(_AIX)
|
||||
+#if defined(__GLIBC__) && !defined(__UCLIBC__) && !defined(_AIX)
|
||||
#include <execinfo.h>
|
||||
#endif
|
||||
|
||||
@@ -86,7 +86,7 @@ void DemangleSymbols(std::string* text) {
|
||||
// Note: code in this function is NOT async-signal safe (std::string uses
|
||||
// malloc internally).
|
||||
|
||||
-#if !defined(__UCLIBC__) && !defined(_AIX)
|
||||
+#if defined(__GLIBC__) && !defined(__UCLIBC__) && !defined(_AIX)
|
||||
std::string::size_type search_from = 0;
|
||||
while (search_from < text->size()) {
|
||||
// Look for the start of a mangled symbol, from search_from.
|
||||
@@ -121,7 +121,7 @@ void DemangleSymbols(std::string* text) {
|
||||
search_from = mangled_start + 2;
|
||||
}
|
||||
}
|
||||
-#endif // !defined(__UCLIBC__) && !defined(_AIX)
|
||||
+#endif // defined(__GLIBC__) && !defined(__UCLIBC__) && !defined(_AIX)
|
||||
}
|
||||
#endif // !defined(USE_SYMBOLIZE)
|
||||
|
||||
@@ -133,7 +133,7 @@ class BacktraceOutputHandler {
|
||||
virtual ~BacktraceOutputHandler() = default;
|
||||
};
|
||||
|
||||
-#if !defined(__UCLIBC__) && !defined(_AIX)
|
||||
+#if defined(__GLIBC__) && !defined(__UCLIBC__) && !defined(_AIX)
|
||||
void OutputPointer(void* pointer, BacktraceOutputHandler* handler) {
|
||||
// This should be more than enough to store a 64-bit number in hex:
|
||||
// 16 hex digits + 1 for null-terminator.
|
||||
@@ -216,7 +216,7 @@ void ProcessBacktrace(void* const* trace,
|
||||
}
|
||||
#endif // defined(USE_SYMBOLIZE)
|
||||
}
|
||||
-#endif // !defined(__UCLIBC__) && !defined(_AIX)
|
||||
+#endif // defined(__GLIBC__) && !defined(__UCLIBC__) && !defined(_AIX)
|
||||
|
||||
void PrintToStderr(const char* output) {
|
||||
// NOTE: This code MUST be async-signal safe (it's used by in-process
|
||||
@@ -812,7 +812,7 @@ size_t CollectStackTrace(void** trace, size_t count) {
|
||||
// NOTE: This code MUST be async-signal safe (it's used by in-process
|
||||
// stack dumping signal handler). NO malloc or stdio is allowed here.
|
||||
|
||||
-#if !defined(__UCLIBC__) && !defined(_AIX)
|
||||
+#if defined(__GLIBC__) && !defined(__UCLIBC__) && !defined(_AIX)
|
||||
// Though the backtrace API man page does not list any possible negative
|
||||
// return values, we take no chance.
|
||||
return base::saturated_cast<size_t>(backtrace(trace, count));
|
||||
@@ -825,13 +825,13 @@ void StackTrace::PrintWithPrefix(const char* prefix_string) const {
|
||||
// NOTE: This code MUST be async-signal safe (it's used by in-process
|
||||
// stack dumping signal handler). NO malloc or stdio is allowed here.
|
||||
|
||||
-#if !defined(__UCLIBC__) && !defined(_AIX)
|
||||
+#if defined(__GLIBC__) && !defined(__UCLIBC__) && !defined(_AIX)
|
||||
PrintBacktraceOutputHandler handler;
|
||||
ProcessBacktrace(trace_, count_, prefix_string, &handler);
|
||||
#endif
|
||||
}
|
||||
|
||||
-#if !defined(__UCLIBC__) && !defined(_AIX)
|
||||
+#if defined(__GLIBC__) && !defined(__UCLIBC__) && !defined(_AIX)
|
||||
void StackTrace::OutputToStreamWithPrefix(std::ostream* os,
|
||||
const char* prefix_string) const {
|
||||
StreamBacktraceOutputHandler handler(os);
|
||||
diff --git chromium-69.0.3497.100/third_party/swiftshader/third_party/llvm-subzero/build/Linux/include/llvm/Config/config.h
|
||||
index e14edbd..dfeca51 100644
|
||||
--- chromium-69.0.3497.100/third_party/swiftshader/third_party/llvm-subzero/build/Linux/include/llvm/Config/config.h
|
||||
+++ chromium-69.0.3497.100/third_party/swiftshader/third_party/llvm-subzero/build/Linux/include/llvm/Config/config.h
|
||||
@@ -14,7 +14,7 @@
|
||||
#define ENABLE_CRASH_OVERRIDES 1
|
||||
|
||||
/* Define to 1 if you have the `backtrace' function. */
|
||||
-#define HAVE_BACKTRACE 1
|
||||
+/* #undef HAVE_BACKTRACE */
|
||||
|
||||
/* Define to 1 if you have the <CrashReporterClient.h> header file. */
|
||||
/* #undef HAVE_CRASHREPORTERCLIENT_H */
|
||||
@@ -55,7 +55,7 @@
|
||||
#define HAVE_ERRNO_H 1
|
||||
|
||||
/* Define to 1 if you have the <execinfo.h> header file. */
|
||||
-#define HAVE_EXECINFO_H 1
|
||||
+/* #undef HAVE_EXECINFO_H */
|
||||
|
||||
/* Define to 1 if you have the <fcntl.h> header file. */
|
||||
#define HAVE_FCNTL_H 1
|
@ -1,48 +0,0 @@
|
||||
diff --git chromium-69.0.3497.100/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc
|
||||
index 052ce37..95b0fb4 100644
|
||||
--- chromium-69.0.3497.100/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc
|
||||
+++ chromium-69.0.3497.100/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc
|
||||
@@ -49,7 +49,7 @@ uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) {
|
||||
}
|
||||
|
||||
void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc,
|
||||
- const struct _libc_fpstate* fp) {
|
||||
+ const struct _fpstate* fp) {
|
||||
const greg_t* regs = uc->uc_mcontext.gregs;
|
||||
|
||||
out->context_flags = MD_CONTEXT_X86_FULL |
|
||||
@@ -97,7 +97,7 @@ uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) {
|
||||
}
|
||||
|
||||
void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc,
|
||||
- const struct _libc_fpstate* fpregs) {
|
||||
+ const struct _fpstate* fpregs) {
|
||||
const greg_t* regs = uc->uc_mcontext.gregs;
|
||||
|
||||
out->context_flags = MD_CONTEXT_AMD64_FULL;
|
||||
diff --git chromium-69.0.3497.100/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.h
|
||||
index f830618..f3dde1f 100644
|
||||
--- chromium-69.0.3497.100/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.h
|
||||
+++ chromium-69.0.3497.100/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.h
|
||||
@@ -50,7 +50,7 @@ struct UContextReader {
|
||||
// info: the collection of register structures.
|
||||
#if defined(__i386__) || defined(__x86_64)
|
||||
static void FillCPUContext(RawContextCPU *out, const ucontext_t *uc,
|
||||
- const struct _libc_fpstate* fp);
|
||||
+ const struct _fpstate* fp);
|
||||
#elif defined(__aarch64__)
|
||||
static void FillCPUContext(RawContextCPU *out, const ucontext_t *uc,
|
||||
const struct fpsimd_context* fpregs);
|
||||
diff --git chromium-69.0.3497.100/third_party/breakpad/breakpad/src/client/linux/minidump_writer/minidump_writer.h
|
||||
index d1dc331..d1cc562 100644
|
||||
--- chromium-69.0.3497.100/third_party/breakpad/breakpad/src/client/linux/minidump_writer/minidump_writer.h
|
||||
+++ chromium-69.0.3497.100/third_party/breakpad/breakpad/src/client/linux/minidump_writer/minidump_writer.h
|
||||
@@ -48,7 +48,7 @@ class ExceptionHandler;
|
||||
#if defined(__aarch64__)
|
||||
typedef struct fpsimd_context fpstate_t;
|
||||
#elif !defined(__ARM_EABI__) && !defined(__mips__)
|
||||
-typedef struct _libc_fpstate fpstate_t;
|
||||
+typedef struct _fpstate fpstate_t;
|
||||
#endif
|
||||
|
||||
// These entries store a list of memory regions that the client wants included
|
@ -1,35 +0,0 @@
|
||||
diff --git chromium-75.0.3770.100/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc chromium-75.0.3770.100/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc
|
||||
index 3ae4f3c..08ed693 100644
|
||||
--- chromium-75.0.3770.100/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc
|
||||
+++ chromium-75.0.3770.100/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc
|
||||
@@ -43,7 +43,9 @@
|
||||
#endif // defined(OS_ANDROID) && defined(__arm__)
|
||||
|
||||
#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
|
||||
+#if defined(__GLIBC__)
|
||||
#include <gnu/libc-version.h>
|
||||
+#endif // defined(__GLIBC__)
|
||||
|
||||
#include "base/linux_util.h"
|
||||
#include "base/strings/string_split.h"
|
||||
@@ -326,7 +328,7 @@ void RecordLinuxDistro() {
|
||||
#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
|
||||
|
||||
void RecordLinuxGlibcVersion() {
|
||||
-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
|
||||
+#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(__GLIBC__)
|
||||
base::Version version(gnu_get_libc_version());
|
||||
|
||||
UMALinuxGlibcVersion glibc_version_result = UMA_LINUX_GLIBC_NOT_PARSEABLE;
|
||||
diff --git chromium-75.0.3770.100/services/device/serial/serial_io_handler_posix.cc chromium-75.0.3770.100/services/device/serial/serial_io_handler_posix.cc
|
||||
index daed079..5470a35 100644
|
||||
--- chromium-75.0.3770.100/services/device/serial/serial_io_handler_posix.cc
|
||||
+++ chromium-75.0.3770.100/services/device/serial/serial_io_handler_posix.cc
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
#include "services/device/serial/serial_io_handler_posix.h"
|
||||
|
||||
+#include <asm/ioctls.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <termios.h>
|
||||
|
@ -1,13 +0,0 @@
|
||||
diff --git chromium-69.0.3497.100/buildtools/third_party/libc++/trunk/include/__config
|
||||
index 52c7142..ca187dd 100644
|
||||
--- chromium-69.0.3497.100/buildtools/third_party/libc++/trunk/include/__config
|
||||
+++ chromium-69.0.3497.100/buildtools/third_party/libc++/trunk/include/__config
|
||||
@@ -11,6 +11,8 @@
|
||||
#ifndef _LIBCPP_CONFIG
|
||||
#define _LIBCPP_CONFIG
|
||||
|
||||
+#define _LIBCPP_HAS_MUSL_LIBC
|
||||
+
|
||||
#if defined(_MSC_VER) && !defined(__clang__)
|
||||
# if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
|
||||
# define _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER
|
@ -1,47 +0,0 @@
|
||||
diff --git chromium-75.0.3770.100/base/process/process_metrics_posix.cc chromium-75.0.3770.100/base/process/process_metrics_posix.cc
|
||||
index a09bbf2..f0a439f 100644
|
||||
--- chromium-75.0.3770.100/base/process/process_metrics_posix.cc
|
||||
+++ chromium-75.0.3770.100/base/process/process_metrics_posix.cc
|
||||
@@ -100,14 +100,14 @@ size_t ProcessMetrics::GetMallocUsage() {
|
||||
malloc_statistics_t stats = {0};
|
||||
malloc_zone_statistics(nullptr, &stats);
|
||||
return stats.size_in_use;
|
||||
-#elif defined(OS_LINUX) || defined(OS_ANDROID)
|
||||
+#elif (defined(OS_LINUX) && defined(__GLIBC__)) || defined(OS_ANDROID)
|
||||
struct mallinfo minfo = mallinfo();
|
||||
#if defined(USE_TCMALLOC)
|
||||
return minfo.uordblks;
|
||||
#else
|
||||
return minfo.hblkhd + minfo.arena;
|
||||
#endif
|
||||
-#elif defined(OS_FUCHSIA)
|
||||
+#else
|
||||
// TODO(fuchsia): Not currently exposed. https://crbug.com/735087.
|
||||
return 0;
|
||||
#endif
|
||||
diff --git chromium-75.0.3770.100/base/trace_event/malloc_dump_provider.cc chromium-75.0.3770.100/base/trace_event/malloc_dump_provider.cc
|
||||
index 0077d8b..13ef0f3 100644
|
||||
--- chromium-75.0.3770.100/base/trace_event/malloc_dump_provider.cc
|
||||
+++ chromium-75.0.3770.100/base/trace_event/malloc_dump_provider.cc
|
||||
@@ -132,7 +132,7 @@ bool MallocDumpProvider::OnMemoryDump(const MemoryDumpArgs& args,
|
||||
}
|
||||
#elif defined(OS_FUCHSIA)
|
||||
// TODO(fuchsia): Port, see https://crbug.com/706592.
|
||||
-#else
|
||||
+#elif defined(OS_LINUX) && defined(__GLIBC__)
|
||||
struct mallinfo info = mallinfo();
|
||||
DCHECK_GE(info.arena + info.hblkhd, info.uordblks);
|
||||
|
||||
diff --git chromium-69.0.3497.100/third_party/swiftshader/third_party/llvm-subzero/build/Linux/include/llvm/Config/config.h
|
||||
index e14edbd..154fefe 100644
|
||||
--- chromium-69.0.3497.100/third_party/swiftshader/third_party/llvm-subzero/build/Linux/include/llvm/Config/config.h
|
||||
+++ chromium-69.0.3497.100/third_party/swiftshader/third_party/llvm-subzero/build/Linux/include/llvm/Config/config.h
|
||||
@@ -130,7 +130,7 @@
|
||||
/* #undef HAVE_MALLCTL */
|
||||
|
||||
/* Define to 1 if you have the `mallinfo' function. */
|
||||
-#define HAVE_MALLINFO 1
|
||||
+/* #undef HAVE_MALLINFO */
|
||||
|
||||
/* Define to 1 if you have the <malloc.h> header file. */
|
||||
#define HAVE_MALLOC_H 1
|
@ -1,40 +0,0 @@
|
||||
diff --git chromium-75.0.3770.100/third_party/blink/renderer/platform/wtf/stack_util.cc chromium-75.0.3770.100/third_party/blink/renderer/platform/wtf/stack_util.cc
|
||||
index b242164..93f8f08 100644
|
||||
--- chromium-75.0.3770.100/third_party/blink/renderer/platform/wtf/stack_util.cc
|
||||
+++ chromium-75.0.3770.100/third_party/blink/renderer/platform/wtf/stack_util.cc
|
||||
@@ -29,7 +29,7 @@ size_t GetUnderestimatedStackSize() {
|
||||
// FIXME: On Mac OSX and Linux, this method cannot estimate stack size
|
||||
// correctly for the main thread.
|
||||
|
||||
-#if defined(__GLIBC__) || defined(OS_ANDROID) || defined(OS_FREEBSD) || \
|
||||
+#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FREEBSD) || \
|
||||
defined(OS_FUCHSIA)
|
||||
// pthread_getattr_np() can fail if the thread is not invoked by
|
||||
// pthread_create() (e.g., the main thread of blink_unittests).
|
||||
@@ -55,6 +55,9 @@ size_t GetUnderestimatedStackSize() {
|
||||
pthread_attr_destroy(&attr);
|
||||
#endif
|
||||
|
||||
+#if defined(OS_LINUX) && !defined(__GLIBC__)
|
||||
+ return 0;
|
||||
+#else
|
||||
// Return a 512k stack size, (conservatively) assuming the following:
|
||||
// - that size is much lower than the pthreads default (x86 pthreads has a 2M
|
||||
// default.)
|
||||
@@ -62,6 +65,7 @@ size_t GetUnderestimatedStackSize() {
|
||||
// low as 512k.
|
||||
//
|
||||
return 512 * 1024;
|
||||
+#endif
|
||||
#elif defined(OS_MACOSX)
|
||||
// pthread_get_stacksize_np() returns too low a value for the main thread on
|
||||
// OSX 10.9,
|
||||
@@ -97,7 +101,7 @@ return Threading::ThreadStackSize();
|
||||
}
|
||||
|
||||
void* GetStackStart() {
|
||||
-#if defined(__GLIBC__) || defined(OS_ANDROID) || defined(OS_FREEBSD) || \
|
||||
+#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FREEBSD) || \
|
||||
defined(OS_FUCHSIA)
|
||||
pthread_attr_t attr;
|
||||
int error;
|
@ -1,22 +0,0 @@
|
||||
diff --git chromium-75.0.3770.100/third_party/crashpad/crashpad/util/linux/ptracer.cc chromium-75.0.3770.100/third_party/crashpad/crashpad/util/linux/ptracer.cc
|
||||
index c6c9229..6731148 100644
|
||||
--- chromium-75.0.3770.100/third_party/crashpad/crashpad/util/linux/ptracer.cc
|
||||
+++ chromium-75.0.3770.100/third_party/crashpad/crashpad/util/linux/ptracer.cc
|
||||
@@ -66,6 +66,7 @@ bool GetThreadArea32(pid_t tid,
|
||||
const ThreadContext& context,
|
||||
LinuxVMAddress* address,
|
||||
bool can_log) {
|
||||
+#ifdef PTRACE_GET_THREAD_AREA
|
||||
size_t index = (context.t32.xgs & 0xffff) >> 3;
|
||||
user_desc desc;
|
||||
if (ptrace(
|
||||
@@ -77,6 +78,9 @@ bool GetThreadArea32(pid_t tid,
|
||||
|
||||
*address = desc.base_addr;
|
||||
return true;
|
||||
+#else
|
||||
+ return false;
|
||||
+#endif
|
||||
}
|
||||
|
||||
bool GetThreadArea64(pid_t tid,
|
@ -1,13 +0,0 @@
|
||||
diff --git chromium-75.0.3770.100/third_party/nasm/config/config-linux.h
|
||||
index 7eb7c20..882b736 100644
|
||||
--- chromium-75.0.3770.100/third_party/nasm/config/config-linux.h.orig
|
||||
+++ chromium-75.0.3770.100/third_party/nasm/config/config-linux.h
|
||||
@@ -117,7 +117,7 @@
|
||||
#define HAVE_ACCESS 1
|
||||
|
||||
/* Define to 1 if you have the `canonicalize_file_name' function. */
|
||||
-#define HAVE_CANONICALIZE_FILE_NAME 1
|
||||
+/* #undef HAVE_CANONICALIZE_FILE_NAME */
|
||||
|
||||
/* Define to 1 if you have the `cpu_to_le16' intrinsic function. */
|
||||
/* #undef HAVE_CPU_TO_LE16 */
|
@ -1,120 +0,0 @@
|
||||
diff --git chromium-75.0.3770.100/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc chromium-75.0.3770.100/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc
|
||||
index 479d1ed..b06cec7 100644
|
||||
--- chromium-75.0.3770.100/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc
|
||||
+++ chromium-75.0.3770.100/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc
|
||||
@@ -216,6 +216,9 @@ ResultExpr EvaluateSyscallImpl(int fs_denied_errno,
|
||||
if (sysno == __NR_prctl)
|
||||
return RestrictPrctl();
|
||||
|
||||
+ if (sysno == __NR_set_tid_address)
|
||||
+ return RestrictSetTIDAddress();
|
||||
+
|
||||
#if defined(__x86_64__) || defined(__arm__) || defined(__mips__) || \
|
||||
defined(__aarch64__)
|
||||
if (sysno == __NR_socketpair) {
|
||||
diff --git chromium-75.0.3770.100/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc chromium-75.0.3770.100/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc
|
||||
index 348ab6e..2e91cf7 100644
|
||||
--- chromium-75.0.3770.100/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc
|
||||
+++ chromium-75.0.3770.100/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc
|
||||
@@ -140,20 +140,11 @@ namespace sandbox {
|
||||
ResultExpr RestrictCloneToThreadsAndEPERMFork() {
|
||||
const Arg<unsigned long> flags(0);
|
||||
|
||||
- // TODO(mdempsky): Extend DSL to support (flags & ~mask1) == mask2.
|
||||
- const uint64_t kAndroidCloneMask = CLONE_VM | CLONE_FS | CLONE_FILES |
|
||||
- CLONE_SIGHAND | CLONE_THREAD |
|
||||
- CLONE_SYSVSEM;
|
||||
- const uint64_t kObsoleteAndroidCloneMask = kAndroidCloneMask | CLONE_DETACHED;
|
||||
-
|
||||
- const uint64_t kGlibcPthreadFlags =
|
||||
- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_THREAD |
|
||||
- CLONE_SYSVSEM | CLONE_SETTLS | CLONE_PARENT_SETTID | CLONE_CHILD_CLEARTID;
|
||||
- const BoolExpr glibc_test = flags == kGlibcPthreadFlags;
|
||||
-
|
||||
- const BoolExpr android_test =
|
||||
- AnyOf(flags == kAndroidCloneMask, flags == kObsoleteAndroidCloneMask,
|
||||
- flags == kGlibcPthreadFlags);
|
||||
+ const int required = CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND |
|
||||
+ CLONE_THREAD | CLONE_SYSVSEM;
|
||||
+ const int safe = CLONE_SETTLS | CLONE_PARENT_SETTID | CLONE_CHILD_CLEARTID |
|
||||
+ CLONE_DETACHED;
|
||||
+ const BoolExpr thread_clone_ok = (flags&~safe)==required;
|
||||
|
||||
// The following two flags are the two important flags in any vfork-emulating
|
||||
// clone call. EPERM any clone call that contains both of them.
|
||||
@@ -163,7 +154,7 @@ ResultExpr RestrictCloneToThreadsAndEPERMFork() {
|
||||
AnyOf((flags & (CLONE_VM | CLONE_THREAD)) == 0,
|
||||
(flags & kImportantCloneVforkFlags) == kImportantCloneVforkFlags);
|
||||
|
||||
- return If(IsAndroid() ? android_test : glibc_test, Allow())
|
||||
+ return If(thread_clone_ok, Allow())
|
||||
.ElseIf(is_fork_or_clone_vfork, Error(EPERM))
|
||||
.Else(CrashSIGSYSClone());
|
||||
}
|
||||
@@ -427,4 +418,10 @@ ResultExpr RestrictPtrace() {
|
||||
}
|
||||
#endif // defined(OS_NACL_NONSFI)
|
||||
|
||||
+ResultExpr RestrictSetTIDAddress() {
|
||||
+ const Arg<uintptr_t> address(0);
|
||||
+ // Only allow clearing the TID address.
|
||||
+ return If(address == 0, Allow()).Else(CrashSIGSYS());
|
||||
+}
|
||||
+
|
||||
} // namespace sandbox.
|
||||
diff --git chromium-75.0.3770.100/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.h chromium-75.0.3770.100/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.h
|
||||
index cb563df..8aef632 100644
|
||||
--- chromium-75.0.3770.100/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.h
|
||||
+++ chromium-75.0.3770.100/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.h
|
||||
@@ -107,6 +107,9 @@ SANDBOX_EXPORT bpf_dsl::ResultExpr RestrictPrlimit(pid_t target_pid);
|
||||
// reporting. See https://crbug.com/933418 for details.
|
||||
SANDBOX_EXPORT bpf_dsl::ResultExpr RestrictPtrace();
|
||||
|
||||
+// Restrict the address to NULL.
|
||||
+SANDBOX_EXPORT bpf_dsl::ResultExpr RestrictSetTIDAddress();
|
||||
+
|
||||
} // namespace sandbox.
|
||||
|
||||
#endif // SANDBOX_LINUX_SECCOMP_BPF_HELPERS_SYSCALL_PARAMETERS_RESTRICTIONS_H_
|
||||
diff --git chromium-75.0.3770.100/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc chromium-75.0.3770.100/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc
|
||||
index 7dbcc87..41f3fd5 100644
|
||||
--- chromium-75.0.3770.100/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc
|
||||
+++ chromium-75.0.3770.100/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc
|
||||
@@ -386,6 +386,7 @@ bool SyscallSets::IsAllowedProcessStartOrDeath(int sysno) {
|
||||
switch (sysno) {
|
||||
case __NR_exit:
|
||||
case __NR_exit_group:
|
||||
+ case __NR_membarrier:
|
||||
case __NR_wait4:
|
||||
case __NR_waitid:
|
||||
#if defined(__i386__)
|
||||
@@ -513,6 +514,7 @@ bool SyscallSets::IsAllowedAddressSpaceAccess(int sysno) {
|
||||
case __NR_mlock:
|
||||
case __NR_munlock:
|
||||
case __NR_munmap:
|
||||
+ case __NR_mremap:
|
||||
return true;
|
||||
case __NR_madvise:
|
||||
case __NR_mincore:
|
||||
@@ -530,7 +532,6 @@ bool SyscallSets::IsAllowedAddressSpaceAccess(int sysno) {
|
||||
case __NR_modify_ldt:
|
||||
#endif
|
||||
case __NR_mprotect:
|
||||
- case __NR_mremap:
|
||||
case __NR_msync:
|
||||
case __NR_munlockall:
|
||||
case __NR_readahead:
|
||||
diff --git chromium-75.0.3770.100/sandbox/linux/system_headers/x86_64_linux_syscalls.h chromium-75.0.3770.100/sandbox/linux/system_headers/x86_64_linux_syscalls.h
|
||||
index 349504a..ea3c7c9 100644
|
||||
--- chromium-75.0.3770.100/sandbox/linux/system_headers/x86_64_linux_syscalls.h
|
||||
+++ chromium-75.0.3770.100/sandbox/linux/system_headers/x86_64_linux_syscalls.h
|
||||
@@ -1290,5 +1290,9 @@
|
||||
#define __NR_memfd_create 319
|
||||
#endif
|
||||
|
||||
+#if !defined(__NR_membarrier)
|
||||
+#define __NR_membarrier 324
|
||||
+#endif
|
||||
+
|
||||
#endif // SANDBOX_LINUX_SYSTEM_HEADERS_X86_64_LINUX_SYSCALLS_H_
|
||||
|
@ -1,15 +0,0 @@
|
||||
diff --git chromium-69.0.3497.100/third_party/angle/third_party/vulkan-loader/BUILD.gn
|
||||
index 0d662fd..de5a0b1 100644
|
||||
--- chromium-69.0.3497.100/third_party/angle/third_party/vulkan-loader/BUILD.gn
|
||||
+++ chromium-69.0.3497.100/third_party/angle/third_party/vulkan-loader/BUILD.gn
|
||||
@@ -192,10 +192,6 @@ config("vulkan_loader_config") {
|
||||
if (is_win) {
|
||||
cflags = [ "/wd4201" ]
|
||||
}
|
||||
- if (is_linux) {
|
||||
- # assume secure_getenv() is available
|
||||
- defines += [ "HAVE_SECURE_GETENV" ]
|
||||
- }
|
||||
}
|
||||
|
||||
if (!is_android) {
|
@ -1,13 +0,0 @@
|
||||
diff --git chromium-75.0.3770.100/sandbox/linux/seccomp-bpf/trap.cc chromium-75.0.3770.100/sandbox/linux/seccomp-bpf/trap.cc
|
||||
index 003708d..0fef314 100644
|
||||
--- chromium-75.0.3770.100/sandbox/linux/seccomp-bpf/trap.cc
|
||||
+++ chromium-75.0.3770.100/sandbox/linux/seccomp-bpf/trap.cc
|
||||
@@ -168,7 +168,7 @@ void Trap::SigSys(int nr, LinuxSigInfo* info, ucontext_t* ctx) {
|
||||
// most versions of glibc don't include this information in siginfo_t. So,
|
||||
// we need to explicitly copy it into a arch_sigsys structure.
|
||||
struct arch_sigsys sigsys;
|
||||
- memcpy(&sigsys, &info->_sifields, sizeof(sigsys));
|
||||
+ memcpy(&sigsys, &info->__si_fields, sizeof(sigsys));
|
||||
|
||||
#if defined(__mips__)
|
||||
// When indirect syscall (syscall(__NR_foo, ...)) is made on Mips, the
|
@ -1,25 +0,0 @@
|
||||
diff --git chromium-69.0.3497.100/third_party/swiftshader/src/Common/Socket.hpp
|
||||
index b6b9abd..aa61d9f 100644
|
||||
--- chromium-69.0.3497.100/third_party/swiftshader/src/Common/Socket.hpp
|
||||
+++ chromium-69.0.3497.100/third_party/swiftshader/src/Common/Socket.hpp
|
||||
@@ -18,6 +18,7 @@
|
||||
#if defined(_WIN32)
|
||||
#include <winsock2.h>
|
||||
#else
|
||||
+ #include <sys/select.h>
|
||||
#include <sys/socket.h>
|
||||
typedef int SOCKET;
|
||||
#endif
|
||||
diff --git chromium-75.0.3770.100/net/socket/udp_socket_posix.cc
|
||||
index 08bf79c..3ee5353 100644
|
||||
--- chromium-75.0.3770.100/net/socket/udp_socket_posix.cc.orig
|
||||
+++ chromium-75.0.3770.100/net/socket/udp_socket_posix.cc
|
||||
@@ -1194,7 +1194,7 @@ SendResult UDPSocketPosixSender::InternalSendmmsgBuffers(
|
||||
msg_iov->push_back({const_cast<char*>(buffer->data()), buffer->length()});
|
||||
msgvec->reserve(buffers.size());
|
||||
for (size_t j = 0; j < buffers.size(); j++)
|
||||
- msgvec->push_back({{nullptr, 0, &msg_iov[j], 1, nullptr, 0, 0}, 0});
|
||||
+ msgvec->push_back({{nullptr, 0, &msg_iov[j], 1, 0, nullptr, 0, 0, 0}, 0});
|
||||
int result = HANDLE_EINTR(Sendmmsg(fd, &msgvec[0], buffers.size(), 0));
|
||||
SendResult send_result(0, 0, std::move(buffers));
|
||||
if (result < 0) {
|
@ -1,46 +0,0 @@
|
||||
diff --git chromium-75.0.3770.100/base/threading/platform_thread_linux.cc chromium-75.0.3770.100/base/threading/platform_thread_linux.cc
|
||||
index 095c49b..b81b050 100644
|
||||
--- chromium-75.0.3770.100/base/threading/platform_thread_linux.cc
|
||||
+++ chromium-75.0.3770.100/base/threading/platform_thread_linux.cc
|
||||
@@ -185,12 +185,14 @@ void InitThreading() {}
|
||||
void TerminateOnThread() {}
|
||||
|
||||
size_t GetDefaultThreadStackSize(const pthread_attr_t& attributes) {
|
||||
-#if !defined(THREAD_SANITIZER)
|
||||
- return 0;
|
||||
-#else
|
||||
+#if defined(THREAD_SANITIZER)
|
||||
// ThreadSanitizer bloats the stack heavily. Evidence has been that the
|
||||
// default stack size isn't enough for some browser tests.
|
||||
return 2 * (1 << 23); // 2 times 8192K (the default stack size on Linux).
|
||||
+#elif defined(__GLIBC__)
|
||||
+ return 0;
|
||||
+#else
|
||||
+ return 1 * (1 << 23); // 8192K (the default stack size on glibc)
|
||||
#endif
|
||||
}
|
||||
|
||||
diff --git chromium-75.0.3770.100/chrome/app/shutdown_signal_handlers_posix.cc chromium-75.0.3770.100/chrome/app/shutdown_signal_handlers_posix.cc
|
||||
index 621d441..132e0f2 100644
|
||||
--- chromium-75.0.3770.100/chrome/app/shutdown_signal_handlers_posix.cc
|
||||
+++ chromium-75.0.3770.100/chrome/app/shutdown_signal_handlers_posix.cc
|
||||
@@ -186,12 +186,19 @@ void InstallShutdownSignalHandlers(
|
||||
g_pipe_pid = getpid();
|
||||
g_shutdown_pipe_read_fd = pipefd[0];
|
||||
g_shutdown_pipe_write_fd = pipefd[1];
|
||||
+#ifdef __GLIBC__
|
||||
#if !defined(ADDRESS_SANITIZER)
|
||||
const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 2;
|
||||
#else
|
||||
// ASan instrumentation bloats the stack frames, so we need to increase the
|
||||
// stack size to avoid hitting the guard page.
|
||||
const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 4;
|
||||
+#endif
|
||||
+#else
|
||||
+ // PTHREAD_STACK_MIN is much smaller on musl. ConstructTlsVector uses
|
||||
+ // 6616 bytes of stack by itself. This matches the value of the GLIBC
|
||||
+ // minumum * 2.
|
||||
+ const size_t kShutdownDetectorThreadStackSize = 32768;
|
||||
#endif
|
||||
ShutdownDetector* detector = new ShutdownDetector(
|
||||
g_shutdown_pipe_read_fd, std::move(shutdown_callback), task_runner);
|
@ -1,38 +0,0 @@
|
||||
diff --git chromium-75.0.3770.100/base/debug/stack_trace.cc chromium-75.0.3770.100/base/debug/stack_trace.cc
|
||||
index d8ca822..d78f128 100644
|
||||
--- chromium-75.0.3770.100/base/debug/stack_trace.cc
|
||||
+++ chromium-75.0.3770.100/base/debug/stack_trace.cc
|
||||
@@ -225,7 +225,9 @@ void StackTrace::Print() const {
|
||||
}
|
||||
|
||||
void StackTrace::OutputToStream(std::ostream* os) const {
|
||||
+#if defined(__GLIBC__) && !defined(__UCLIBC__) && !defined(_AIX)
|
||||
OutputToStreamWithPrefix(os, nullptr);
|
||||
+#endif
|
||||
}
|
||||
|
||||
std::string StackTrace::ToString() const {
|
||||
@@ -233,7 +235,7 @@ std::string StackTrace::ToString() const {
|
||||
}
|
||||
std::string StackTrace::ToStringWithPrefix(const char* prefix_string) const {
|
||||
std::stringstream stream;
|
||||
-#if !defined(__UCLIBC__) && !defined(_AIX)
|
||||
+#if defined(__GLIBC__) && !defined(__UCLIBC__) && !defined(_AIX)
|
||||
OutputToStreamWithPrefix(&stream, prefix_string);
|
||||
#endif
|
||||
return stream.str();
|
||||
diff --git chromium-75.0.3770.100/base/logging.cc chromium-75.0.3770.100/base/logging.cc
|
||||
index 52720c4..8b759c7 100644
|
||||
--- chromium-75.0.3770.100/base/logging.cc
|
||||
+++ chromium-75.0.3770.100/base/logging.cc
|
||||
@@ -582,8 +582,8 @@ LogMessage::LogMessage(const char* file, int line, LogSeverity severity,
|
||||
|
||||
LogMessage::~LogMessage() {
|
||||
size_t stack_start = stream_.tellp();
|
||||
-#if !defined(OFFICIAL_BUILD) && !defined(OS_NACL) && !defined(__UCLIBC__) && \
|
||||
- !defined(OS_AIX)
|
||||
+#if !defined(OFFICIAL_BUILD) && !defined(OS_NACL) && defined(__GLIBC__) && \
|
||||
+ !defined(__UCLIBC__) && !defined(OS_AIX)
|
||||
if (severity_ == LOG_FATAL && !base::debug::BeingDebugged()) {
|
||||
// Include a stack trace on a fatal, unless a debugger is attached.
|
||||
base::debug::StackTrace stack_trace;
|
@ -1,18 +0,0 @@
|
||||
diff --git chromium-69.0.3497.100/third_party/lss/linux_syscall_support.h
|
||||
index 5d9c2e8..2682349 100644
|
||||
--- chromium-69.0.3497.100/third_party/lss/linux_syscall_support.h
|
||||
+++ chromium-69.0.3497.100/third_party/lss/linux_syscall_support.h
|
||||
@@ -166,6 +166,13 @@ extern "C" {
|
||||
# undef __NR_waitpid
|
||||
#endif
|
||||
|
||||
+#ifdef pread64
|
||||
+#undef pread64
|
||||
+#endif
|
||||
+#ifdef pwrite64
|
||||
+#undef pwrite64
|
||||
+#endif
|
||||
+
|
||||
/* As glibc often provides subtly incompatible data structures (and implicit
|
||||
* wrapper functions that convert them), we provide our own kernel data
|
||||
* structures for use by the system calls.
|
@ -1,25 +0,0 @@
|
||||
diff --git chromium-69.0.3497.100/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc
|
||||
index b895f6d..4f13352 100644
|
||||
--- chromium-69.0.3497.100/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc
|
||||
+++ chromium-69.0.3497.100/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc
|
||||
@@ -490,7 +490,9 @@ bool ExceptionHandler::SimulateSignalDelivery(int sig) {
|
||||
siginfo.si_code = SI_USER;
|
||||
siginfo.si_pid = getpid();
|
||||
ucontext_t context;
|
||||
+#if defined(__GLIBC__)
|
||||
getcontext(&context);
|
||||
+#endif
|
||||
return HandleSignal(sig, &siginfo, &context);
|
||||
}
|
||||
|
||||
@@ -675,8 +677,10 @@ bool ExceptionHandler::WriteMinidump() {
|
||||
sys_prctl(PR_SET_DUMPABLE, 1, 0, 0, 0);
|
||||
|
||||
CrashContext context;
|
||||
+#if defined(__GLIBC__)
|
||||
int getcontext_result = getcontext(&context.context);
|
||||
if (getcontext_result)
|
||||
+#endif
|
||||
return false;
|
||||
|
||||
#if defined(__i386__)
|
@ -1,24 +0,0 @@
|
||||
Use monotonic clock for pthread_cond_timedwait with musl too.
|
||||
|
||||
diff --git a/v8/src/base/platform/condition-variable.cc b/v8/src/base/platform/condition-variable.cc
|
||||
index 5ea7083..c13027e 100644
|
||||
--- ./v8/src/base/platform/condition-variable.cc
|
||||
+++ ./v8/src/base/platform/condition-variable.cc
|
||||
@@ -16,7 +16,7 @@ namespace base {
|
||||
|
||||
ConditionVariable::ConditionVariable() {
|
||||
#if (V8_OS_FREEBSD || V8_OS_NETBSD || V8_OS_OPENBSD || \
|
||||
- (V8_OS_LINUX && V8_LIBC_GLIBC))
|
||||
+ V8_OS_LINUX)
|
||||
// On Free/Net/OpenBSD and Linux with glibc we can change the time
|
||||
// source for pthread_cond_timedwait() to use the monotonic clock.
|
||||
pthread_condattr_t attr;
|
||||
@@ -92,7 +92,7 @@ bool ConditionVariable::WaitFor(Mutex* mutex, const TimeDelta& rel_time) {
|
||||
&native_handle_, &mutex->native_handle(), &ts);
|
||||
#else
|
||||
#if (V8_OS_FREEBSD || V8_OS_NETBSD || V8_OS_OPENBSD || \
|
||||
- (V8_OS_LINUX && V8_LIBC_GLIBC))
|
||||
+ V8_OS_LINUX)
|
||||
// On Free/Net/OpenBSD and Linux with glibc we can change the time
|
||||
// source for pthread_cond_timedwait() to use the monotonic clock.
|
||||
result = clock_gettime(CLOCK_MONOTONIC, &ts);
|
@ -1,24 +0,0 @@
|
||||
diff --git chromium-69.0.3497.100/third_party/breakpad/breakpad/src/common/linux/elf_core_dump.h
|
||||
index d03c7a8..78ca9dd 100644
|
||||
--- chromium-69.0.3497.100/third_party/breakpad/breakpad/src/common/linux/elf_core_dump.h
|
||||
+++ chromium-69.0.3497.100/third_party/breakpad/breakpad/src/common/linux/elf_core_dump.h
|
||||
@@ -36,6 +36,7 @@
|
||||
#include <elf.h>
|
||||
#include <link.h>
|
||||
#include <stddef.h>
|
||||
+#include <limits.h>
|
||||
|
||||
#include "common/memory_range.h"
|
||||
|
||||
@@ -51,9 +52,9 @@ class ElfCoreDump {
|
||||
typedef ElfW(Phdr) Phdr;
|
||||
typedef ElfW(Word) Word;
|
||||
typedef ElfW(Addr) Addr;
|
||||
-#if __WORDSIZE == 32
|
||||
+#if ULONG_MAX == 0xffffffff
|
||||
static const int kClass = ELFCLASS32;
|
||||
-#elif __WORDSIZE == 64
|
||||
+#elif ULONG_MAX == 0xffffffffffffffff
|
||||
static const int kClass = ELFCLASS64;
|
||||
#else
|
||||
#error "Unsupported __WORDSIZE for ElfCoreDump."
|
@ -1,14 +0,0 @@
|
||||
description: disable dependencies on third_party/perfetto
|
||||
author: Michael Gilbert <mgilbert@debian.org>
|
||||
|
||||
--- a/BUILD.gn
|
||||
+++ b/BUILD.gn
|
||||
@@ -666,7 +666,7 @@ group("gn_all") {
|
||||
}
|
||||
}
|
||||
|
||||
- if (is_mac || is_linux || is_android || is_fuchsia) {
|
||||
+ if (false) {
|
||||
deps += [ "//third_party/perfetto:all" ]
|
||||
}
|
||||
|
@ -1,75 +0,0 @@
|
||||
From fe92c640c7e02841dcf5dbc20a5eddbd07fd7edf Mon Sep 17 00:00:00 2001
|
||||
From: Joachim Bauch <jojo@struktur.de>
|
||||
Date: Tue, 7 Jul 2015 17:02:09 +0200
|
||||
Subject: [PATCH 47/66] safe_browsing: disable incident reporting
|
||||
|
||||
Disables the safebrowsing incident reporting where you could upload
|
||||
information about a blocked URL to Google (also added a trk prefix to
|
||||
the URL so we get notified if this happens again in the future).
|
||||
---
|
||||
.../safe_browsing/incident_reporting/incident_report_uploader_impl.cc | 2 +-
|
||||
.../safe_browsing/incident_reporting/incident_reporting_service.cc | 3 +++
|
||||
chrome/browser/safe_browsing/safe_browsing_blocking_page.cc | 3 +--
|
||||
chrome/browser/safe_browsing/safe_browsing_service.cc | 2 ++
|
||||
components/security_interstitials/core/safe_browsing_loud_error_ui.cc | 2 ++
|
||||
5 files changed, 9 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/chrome/browser/safe_browsing/incident_reporting/incident_report_uploader_impl.cc
|
||||
+++ b/chrome/browser/safe_browsing/incident_reporting/incident_report_uploader_impl.cc
|
||||
@@ -23,7 +23,7 @@ namespace safe_browsing {
|
||||
namespace {
|
||||
|
||||
const char kSbIncidentReportUrl[] =
|
||||
- "https://sb-ssl.google.com/safebrowsing/clientreport/incident";
|
||||
+ "trk:268:https://sb-ssl.google.com/safebrowsing/clientreport/incident";
|
||||
|
||||
constexpr net::NetworkTrafficAnnotationTag
|
||||
kSafeBrowsingIncidentTrafficAnnotation =
|
||||
--- a/chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc
|
||||
+++ b/chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc
|
||||
@@ -311,11 +311,7 @@ IncidentReportingService::UploadContext:
|
||||
|
||||
// static
|
||||
bool IncidentReportingService::IsEnabledForProfile(Profile* profile) {
|
||||
- if (profile->IsOffTheRecord())
|
||||
- return false;
|
||||
- if (!profile->GetPrefs()->GetBoolean(prefs::kSafeBrowsingEnabled))
|
||||
- return false;
|
||||
- return IsExtendedReportingEnabled(*profile->GetPrefs());
|
||||
+ return false;
|
||||
}
|
||||
|
||||
IncidentReportingService::IncidentReportingService(
|
||||
--- a/chrome/browser/safe_browsing/safe_browsing_blocking_page.cc
|
||||
+++ b/chrome/browser/safe_browsing/safe_browsing_blocking_page.cc
|
||||
@@ -62,8 +62,7 @@ class SafeBrowsingBlockingPageFactoryImp
|
||||
PrefService* prefs =
|
||||
Profile::FromBrowserContext(web_contents->GetBrowserContext())
|
||||
->GetPrefs();
|
||||
- bool is_extended_reporting_opt_in_allowed =
|
||||
- IsExtendedReportingOptInAllowed(*prefs);
|
||||
+ bool is_extended_reporting_opt_in_allowed = false;
|
||||
bool is_proceed_anyway_disabled =
|
||||
prefs->GetBoolean(prefs::kSafeBrowsingProceedAnywayDisabled);
|
||||
|
||||
--- a/chrome/browser/safe_browsing/safe_browsing_service.cc
|
||||
+++ b/chrome/browser/safe_browsing/safe_browsing_service.cc
|
||||
@@ -358,7 +358,7 @@ SafeBrowsingUIManager* SafeBrowsingServi
|
||||
}
|
||||
|
||||
void SafeBrowsingService::RegisterAllDelayedAnalysis() {
|
||||
-#if defined(FULL_SAFE_BROWSING)
|
||||
+#if 0
|
||||
RegisterBinaryIntegrityAnalysis();
|
||||
#endif
|
||||
}
|
||||
--- a/components/security_interstitials/core/safe_browsing_loud_error_ui.cc
|
||||
+++ b/components/security_interstitials/core/safe_browsing_loud_error_ui.cc
|
||||
@@ -22,6 +22,7 @@ namespace {
|
||||
|
||||
// For malware interstitial pages, we link the problematic URL to Google's
|
||||
// diagnostic page.
|
||||
+// trk:228
|
||||
const char kSbDiagnosticUrl[] =
|
||||
"https://transparencyreport.google.com/safe-browsing/search?url=%s";
|
||||
|
@ -1,209 +0,0 @@
|
||||
From 8f348bf2c249701de2f6049ac57fe346bd6b665f Mon Sep 17 00:00:00 2001
|
||||
From: Joachim Bauch <jojo@struktur.de>
|
||||
Date: Tue, 7 Jul 2015 18:28:46 +0200
|
||||
Subject: [PATCH 48/66] safe_browsing: disable reporting of safebrowsing
|
||||
override
|
||||
|
||||
Disables reporting of the safebrowsing override, i.e. the report sent
|
||||
if a user decides to visit a page that was flagged as "insecure".
|
||||
This prevents trk:148 (phishing) and trk:149 (malware).
|
||||
---
|
||||
.../browser/safe_browsing/client_side_detection_service.cc | 12 ++++++++++++
|
||||
1 file changed, 12 insertions(+)
|
||||
|
||||
--- a/chrome/browser/safe_browsing/client_side_detection_service.cc
|
||||
+++ b/chrome/browser/safe_browsing/client_side_detection_service.cc
|
||||
@@ -64,12 +64,6 @@ enum MalwareReportTypes {
|
||||
REPORT_RESULT_MAX
|
||||
};
|
||||
|
||||
-void UpdateEnumUMAHistogram(MalwareReportTypes report_type) {
|
||||
- DCHECK(report_type >= 0 && report_type < REPORT_RESULT_MAX);
|
||||
- UMA_HISTOGRAM_ENUMERATION("SBClientMalware.SentReports", report_type,
|
||||
- REPORT_RESULT_MAX);
|
||||
-}
|
||||
-
|
||||
} // namespace
|
||||
|
||||
const int ClientSideDetectionService::kInitialClientModelFetchDelayMs = 10000;
|
||||
@@ -284,94 +278,8 @@ void ClientSideDetectionService::StartCl
|
||||
DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
||||
std::unique_ptr<ClientPhishingRequest> request(verdict);
|
||||
|
||||
- if (!enabled_) {
|
||||
- if (!callback.is_null())
|
||||
- callback.Run(GURL(request->url()), false);
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- // Fill in metadata about which model we used.
|
||||
- if (is_extended_reporting) {
|
||||
- request->set_model_filename(model_loader_extended_->name());
|
||||
- request->mutable_population()->set_user_population(
|
||||
- ChromeUserPopulation::EXTENDED_REPORTING);
|
||||
- } else {
|
||||
- request->set_model_filename(model_loader_standard_->name());
|
||||
- request->mutable_population()->set_user_population(
|
||||
- ChromeUserPopulation::SAFE_BROWSING);
|
||||
- }
|
||||
- DVLOG(2) << "Starting report for hit on model " << request->model_filename();
|
||||
-
|
||||
- request->mutable_population()->set_profile_management_status(
|
||||
- GetProfileManagementStatus(
|
||||
- g_browser_process->browser_policy_connector()));
|
||||
-
|
||||
- std::string request_data;
|
||||
- if (!request->SerializeToString(&request_data)) {
|
||||
- UMA_HISTOGRAM_COUNTS_1M("SBClientPhishing.RequestNotSerialized", 1);
|
||||
- DVLOG(1) << "Unable to serialize the CSD request. Proto file changed?";
|
||||
- if (!callback.is_null())
|
||||
- callback.Run(GURL(request->url()), false);
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- net::NetworkTrafficAnnotationTag traffic_annotation =
|
||||
- net::DefineNetworkTrafficAnnotation(
|
||||
- "safe_browsing_client_side_phishing_detector", R"(
|
||||
- semantics {
|
||||
- sender: "Safe Browsing Client-Side Phishing Detector"
|
||||
- description:
|
||||
- "If the client-side phishing detector determines that the "
|
||||
- "current page contents are similar to phishing pages, it will "
|
||||
- "send a request to Safe Browsing to ask for a final verdict. If "
|
||||
- "Safe Browsing agrees the page is dangerous, Chrome will show a "
|
||||
- "full-page interstitial warning."
|
||||
- trigger:
|
||||
- "Whenever the clinet-side detector machine learning model "
|
||||
- "computes a phishy-ness score above a threshold, after page-load."
|
||||
- data:
|
||||
- "Top-level page URL without CGI parameters, boolean and double "
|
||||
- "features extracted from DOM, such as the number of resources "
|
||||
- "loaded in the page, if certain likely phishing and social "
|
||||
- "engineering terms found on the page, etc."
|
||||
- destination: GOOGLE_OWNED_SERVICE
|
||||
- }
|
||||
- policy {
|
||||
- cookies_allowed: YES
|
||||
- cookies_store: "Safe browsing cookie store"
|
||||
- setting:
|
||||
- "Users can enable or disable this feature by toggling 'Protect "
|
||||
- "you and your device from dangerous sites' in Chrome settings "
|
||||
- "under Privacy. This feature is enabled by default."
|
||||
- chrome_policy {
|
||||
- SafeBrowsingEnabled {
|
||||
- policy_options {mode: MANDATORY}
|
||||
- SafeBrowsingEnabled: false
|
||||
- }
|
||||
- }
|
||||
- })");
|
||||
- auto resource_request = std::make_unique<network::ResourceRequest>();
|
||||
- resource_request->url = GetClientReportUrl(kClientReportPhishingUrl);
|
||||
- resource_request->method = "POST";
|
||||
- resource_request->load_flags = net::LOAD_DISABLE_CACHE;
|
||||
- auto loader = network::SimpleURLLoader::Create(std::move(resource_request),
|
||||
- traffic_annotation);
|
||||
- loader->AttachStringForUpload(request_data, "application/octet-stream");
|
||||
- loader->DownloadToStringOfUnboundedSizeUntilCrashAndDie(
|
||||
- url_loader_factory_.get(),
|
||||
- base::BindOnce(&ClientSideDetectionService::OnURLLoaderComplete,
|
||||
- base::Unretained(this), loader.get()));
|
||||
-
|
||||
- // Remember which callback and URL correspond to the current fetcher object.
|
||||
- std::unique_ptr<ClientPhishingReportInfo> info(new ClientPhishingReportInfo);
|
||||
- auto* loader_ptr = loader.get();
|
||||
- info->loader = std::move(loader);
|
||||
- info->callback = callback;
|
||||
- info->phishing_url = GURL(request->url());
|
||||
- client_phishing_reports_[loader_ptr] = std::move(info);
|
||||
-
|
||||
- // Record that we made a request
|
||||
- phishing_report_times_.push(base::Time::Now());
|
||||
+ if (!callback.is_null())
|
||||
+ callback.Run(GURL(request->url()), false);
|
||||
}
|
||||
|
||||
void ClientSideDetectionService::StartClientReportMalwareRequest(
|
||||
@@ -380,81 +288,8 @@ void ClientSideDetectionService::StartCl
|
||||
DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
||||
std::unique_ptr<ClientMalwareRequest> request(verdict);
|
||||
|
||||
- if (!enabled_) {
|
||||
- if (!callback.is_null())
|
||||
- callback.Run(GURL(request->url()), GURL(request->url()), false);
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- std::string request_data;
|
||||
- if (!request->SerializeToString(&request_data)) {
|
||||
- UpdateEnumUMAHistogram(REPORT_FAILED_SERIALIZATION);
|
||||
- DVLOG(1) << "Unable to serialize the CSD request. Proto file changed?";
|
||||
- if (!callback.is_null())
|
||||
- callback.Run(GURL(request->url()), GURL(request->url()), false);
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- net::NetworkTrafficAnnotationTag traffic_annotation =
|
||||
- net::DefineNetworkTrafficAnnotation(
|
||||
- "safe_browsing_client_side_malware_detector", R"(
|
||||
- semantics {
|
||||
- sender: "Safe Browsing Client-Side Malware Detector"
|
||||
- description:
|
||||
- "If the client-side malware detector determines that a requested "
|
||||
- "page's IP is in the blacklisted malware IPs, it will send a "
|
||||
- "request to Safe Browsing to ask for a final verdict. If Safe "
|
||||
- "Browsing agrees the page is dangerous, Chrome will show a "
|
||||
- "full-page interstitial warning."
|
||||
- trigger:
|
||||
- "Whenever the IP of the page is in malware blacklist."
|
||||
- data:
|
||||
- "Top-level page URL without CGI parameters, its non-https "
|
||||
- "referrer, URLs of resources that match IP blacklist."
|
||||
- destination: GOOGLE_OWNED_SERVICE
|
||||
- }
|
||||
- policy {
|
||||
- cookies_allowed: YES
|
||||
- cookies_store: "Safe browsing cookie store"
|
||||
- setting:
|
||||
- "Users can enable or disable this feature by toggling 'Protect "
|
||||
- "you and your device from dangerous sites' in Chrome settings "
|
||||
- "under Privacy. This feature is enabled by default."
|
||||
- chrome_policy {
|
||||
- SafeBrowsingEnabled {
|
||||
- policy_options {mode: MANDATORY}
|
||||
- SafeBrowsingEnabled: false
|
||||
- }
|
||||
- }
|
||||
- })");
|
||||
- auto resource_request = std::make_unique<network::ResourceRequest>();
|
||||
- resource_request->url = GetClientReportUrl(kClientReportMalwareUrl);
|
||||
- resource_request->method = "POST";
|
||||
- resource_request->load_flags = net::LOAD_DISABLE_CACHE;
|
||||
- auto loader = network::SimpleURLLoader::Create(std::move(resource_request),
|
||||
- traffic_annotation);
|
||||
- loader->AttachStringForUpload(request_data, "application/octet-stream");
|
||||
- loader->DownloadToStringOfUnboundedSizeUntilCrashAndDie(
|
||||
- url_loader_factory_.get(),
|
||||
- base::BindOnce(&ClientSideDetectionService::OnURLLoaderComplete,
|
||||
- base::Unretained(this), loader.get()));
|
||||
-
|
||||
- // Remember which callback and URL correspond to the current fetcher object.
|
||||
- std::unique_ptr<ClientMalwareReportInfo> info(new ClientMalwareReportInfo);
|
||||
- auto* loader_ptr = loader.get();
|
||||
- info->loader = std::move(loader);
|
||||
- info->callback = callback;
|
||||
- info->original_url = GURL(request->url());
|
||||
- client_malware_reports_[loader_ptr] = std::move(info);
|
||||
-
|
||||
- UMA_HISTOGRAM_ENUMERATION("SBClientMalware.SentReports", REPORT_SENT,
|
||||
- REPORT_RESULT_MAX);
|
||||
-
|
||||
- UMA_HISTOGRAM_COUNTS_1M("SBClientMalware.IPBlacklistRequestPayloadSize",
|
||||
- request_data.size());
|
||||
-
|
||||
- // Record that we made a malware request
|
||||
- malware_report_times_.push(base::Time::Now());
|
||||
+ if (!callback.is_null())
|
||||
+ callback.Run(GURL(request->url()), GURL(request->url()), false);
|
||||
}
|
||||
|
||||
void ClientSideDetectionService::HandlePhishingVerdict(
|
@ -1,87 +0,0 @@
|
||||
description: disable support for safe browsing inspection of rar files
|
||||
author: Michael Gilbert <mgilbert@debian.org>
|
||||
bug: http://bugs.debian.org/914487
|
||||
|
||||
--- a/chrome/common/safe_browsing/BUILD.gn
|
||||
+++ b/chrome/common/safe_browsing/BUILD.gn
|
||||
@@ -64,41 +64,6 @@ if (safe_browsing_mode == 1) {
|
||||
]
|
||||
}
|
||||
|
||||
- source_set("rar_analyzer") {
|
||||
- sources = [
|
||||
- "rar_analyzer.cc",
|
||||
- "rar_analyzer.h",
|
||||
- ]
|
||||
-
|
||||
- deps = [
|
||||
- ":archive_analyzer_results",
|
||||
- ":download_type_util",
|
||||
- ":file_type_policies",
|
||||
- "//base",
|
||||
- "//base:i18n",
|
||||
- "//components/safe_browsing:features",
|
||||
- "//third_party/unrar:unrar",
|
||||
- ]
|
||||
-
|
||||
- defines = [
|
||||
- "_FILE_OFFSET_BITS=64",
|
||||
- "LARGEFILE_SOURCE",
|
||||
- "RAR_SMP",
|
||||
- "SILENT",
|
||||
-
|
||||
- # The following is set to disable certain macro definitions in the unrar
|
||||
- # source code.
|
||||
- "CHROMIUM_UNRAR",
|
||||
-
|
||||
- # Disables exceptions in unrar, replaces them with process termination.
|
||||
- "UNRAR_NO_EXCEPTIONS",
|
||||
- ]
|
||||
-
|
||||
- public_deps = [
|
||||
- "//components/safe_browsing:csd_proto",
|
||||
- ]
|
||||
- }
|
||||
-
|
||||
source_set("disk_image_type_sniffer_mac") {
|
||||
sources = [
|
||||
"disk_image_type_sniffer_mac.cc",
|
||||
@@ -167,7 +132,6 @@ source_set("safe_browsing") {
|
||||
":archive_analyzer_results",
|
||||
":binary_feature_extractor",
|
||||
":download_type_util",
|
||||
- ":rar_analyzer",
|
||||
"//components/safe_browsing:features",
|
||||
]
|
||||
|
||||
--- a/chrome/services/file_util/safe_archive_analyzer.cc
|
||||
+++ b/chrome/services/file_util/safe_archive_analyzer.cc
|
||||
@@ -7,7 +7,6 @@
|
||||
#include "base/macros.h"
|
||||
#include "build/build_config.h"
|
||||
#include "chrome/common/safe_browsing/archive_analyzer_results.h"
|
||||
-#include "chrome/common/safe_browsing/rar_analyzer.h"
|
||||
#include "chrome/common/safe_browsing/zip_analyzer.h"
|
||||
#include "mojo/public/cpp/bindings/strong_binding.h"
|
||||
|
||||
@@ -50,8 +49,7 @@ void SafeArchiveAnalyzer::AnalyzeRarFile
|
||||
AnalyzeRarFileCallback callback) {
|
||||
DCHECK(rar_file.IsValid());
|
||||
|
||||
+ LOG(FATAL) << "AnalyzeRarFile is disabled in this build";
|
||||
safe_browsing::ArchiveAnalyzerResults results;
|
||||
- safe_browsing::rar_analyzer::AnalyzeRarFile(
|
||||
- std::move(rar_file), std::move(temporary_file), &results);
|
||||
std::move(callback).Run(results);
|
||||
}
|
||||
--- a/chrome/browser/safe_browsing/download_protection/file_analyzer.cc
|
||||
+++ b/chrome/browser/safe_browsing/download_protection/file_analyzer.cc
|
||||
@@ -101,7 +101,7 @@ void FileAnalyzer::Start(const base::Fil
|
||||
if (inspection_type == DownloadFileType::ZIP) {
|
||||
StartExtractZipFeatures();
|
||||
} else if (inspection_type == DownloadFileType::RAR) {
|
||||
- StartExtractRarFeatures();
|
||||
+ LOG(WARNING) << "Safebrowser inspection of rar files is disabled in this build";
|
||||
#if defined(OS_MACOSX)
|
||||
} else if (inspection_type == DownloadFileType::DMG) {
|
||||
StartExtractDmgFeatures();
|
@ -1,15 +0,0 @@
|
||||
description: do not override the welcome page setting set in master_preferences
|
||||
author: Michael Gilbert <mgilbert@debian.org>
|
||||
bug-debian: http://bugs.debian.org/857767
|
||||
|
||||
--- a/chrome/browser/profiles/profile_manager.cc
|
||||
+++ b/chrome/browser/profiles/profile_manager.cc
|
||||
@@ -1072,7 +1072,7 @@ void ProfileManager::InitProfileUserPref
|
||||
profile->GetPrefs()->SetString(prefs::kSupervisedUserId,
|
||||
supervised_user_id);
|
||||
}
|
||||
-#if !defined(OS_ANDROID)
|
||||
+#if 0
|
||||
// TODO(pmonette): Fix IsNewProfile() to handle the case where the profile is
|
||||
// new even if the "Preferences" file already existed. (For example: The
|
||||
// master_preferences file is dumped into the default profile on first run,
|
@ -1,74 +0,0 @@
|
||||
https://commondatastorage.googleapis.com/chromium-browser-official/chromium-75.0.3770.142.tar.xz
|
||||
patches/0000-build.patch
|
||||
patches/0001-fix-building-without-safebrowsing.patch
|
||||
patches/0001-simd.patch
|
||||
patches/0002-uninitializedcheck.patch
|
||||
patches/0003-disable-autofill-download-manager.patch
|
||||
patches/0004-disable-google-url-tracker.patch
|
||||
patches/0005-disable-default-extensions.patch
|
||||
patches/0006-modify-default-prefs.patch
|
||||
patches/0007-disable-web-resource-service.patch
|
||||
patches/0008-restore-classic-ntp.patch
|
||||
patches/0009-disable-google-ipv6-probes.patch
|
||||
patches/0010-disable-gcm-status-check.patch
|
||||
patches/0014-disable-translation-lang-fetch.patch
|
||||
patches/0015-disable-update-pings.patch
|
||||
patches/0019-disable-battery-status-service.patch
|
||||
patches/0021-disable-rlz.patch
|
||||
patches/android.patch
|
||||
patches/chromium-75-fix-gn-gen.patch
|
||||
patches/chromium-75-gcc-angle-fix.patch
|
||||
patches/chromium-75-llvm8.patch
|
||||
patches/chromium-75-lss.patch
|
||||
patches/chromium-75-noexcept.patch
|
||||
patches/chromium-75-pure-virtual.patch
|
||||
patches/chromium-75-unique_ptr.patch
|
||||
patches/chromium-compiler-r9.patch
|
||||
patches/chromium-fix-char_traits.patch
|
||||
patches/chromium-optional-atk-r1.patch
|
||||
patches/chromium-optional-dbus-r5.patch
|
||||
patches/chromium-url-formatter.patch
|
||||
patches/chromium-widevine-r4.patch
|
||||
patches/device-notifications.patch
|
||||
patches/disable-crash-reporter.patch
|
||||
patches/disable-domain-reliability.patch
|
||||
patches/disable-download-quarantine.patch
|
||||
patches/disable-fetching-field-trials.patch
|
||||
patches/disable-fonts-googleapis-references.patch
|
||||
patches/disable-gaia.patch
|
||||
patches/disable-gcm.patch
|
||||
patches/disable-google-host-detection.patch
|
||||
patches/disable-mei-preload.patch
|
||||
patches/disable-network-time-tracker.patch
|
||||
patches/disable-webrtc-log-uploader.patch
|
||||
patches/disable_swiftshader.patch
|
||||
patches/fix-building-without-mdns-and-service-discovery.patch
|
||||
patches/fix-building-without-safebrowsing.patch
|
||||
patches/fuzzers.patch
|
||||
patches/google-api-warning.patch
|
||||
patches/musl-cdefs-r2.patch
|
||||
patches/musl-dlopen.patch
|
||||
patches/musl-dns-r2.patch
|
||||
patches/musl-execinfo-r8.patch
|
||||
patches/musl-fpstate-r1.patch
|
||||
patches/musl-headers-r1.patch
|
||||
patches/musl-libcpp.patch
|
||||
patches/musl-mallinfo-r7.patch
|
||||
patches/musl-pthread-r5.patch
|
||||
patches/musl-ptrace.patch
|
||||
patches/musl-realpath.patch
|
||||
patches/musl-sandbox-r3.patch
|
||||
patches/musl-secure_getenv-r1.patch
|
||||
patches/musl-siginfo.patch
|
||||
patches/musl-socket.patch
|
||||
patches/musl-stacksize-r3.patch
|
||||
patches/musl-stacktrace-r2.patch
|
||||
patches/musl-syscall.patch
|
||||
patches/musl-ucontext-r1.patch
|
||||
patches/musl-v8-monotonic-pthread-cont_timedwait.patch
|
||||
patches/musl-wordsize-r1.patch
|
||||
patches/perfetto.patch
|
||||
patches/safe_browsing-disable-incident-reporting.patch
|
||||
patches/safe_browsing-disable-reporting-of-safebrowsing-over.patch
|
||||
patches/unrar.patch
|
||||
patches/welcome-page.patch
|
@ -1 +0,0 @@
|
||||
75.0.3770.142 1
|
@ -1,11 +0,0 @@
|
||||
#!/bin/sh -e
|
||||
|
||||
cmake \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr \
|
||||
-DCMAKE_INSTALL_LIBDIR=/usr/lib \
|
||||
-DBUILD_SHARED_LIBS=1 \
|
||||
-DJSONCPP_WITH_TESTS=0 \
|
||||
-DCMAKE_BUILD_TYPE=Release
|
||||
|
||||
make
|
||||
make DESTDIR="$1" install
|
@ -1 +0,0 @@
|
||||
c49deac9e0933bcb7044f08516861a2d560988540b23de2ac1ad443b219afdb6 1.8.4.tar.gz
|
@ -1 +0,0 @@
|
||||
cmake make
|
@ -1 +0,0 @@
|
||||
https://github.com/open-source-parsers/jsoncpp/archive/1.8.4.tar.gz
|
@ -1 +0,0 @@
|
||||
1.8.4 1
|
@ -1,4 +0,0 @@
|
||||
#!/bin/sh -e
|
||||
|
||||
make
|
||||
make DESTDIR="$1" RAISE_SETFCAP=no lib=lib prefix=/usr install
|
@ -1 +0,0 @@
|
||||
dac1792d0118bee6aae6ba7fb93ff1602c6a9bda812fd63916eee1435b9c486a libcap-2.27.tar.xz
|
@ -1 +0,0 @@
|
||||
https://kernel.org/pub/linux/libs/security/linux-privs/libcap2/libcap-2.27.tar.xz
|
@ -1 +0,0 @@
|
||||
2.27 1
|
@ -1,14 +0,0 @@
|
||||
#!/bin/sh -e
|
||||
|
||||
cd contrib/minizip
|
||||
|
||||
autoreconf -fi
|
||||
|
||||
./configure \
|
||||
--prefix=/usr \
|
||||
--enable-static=no
|
||||
|
||||
make
|
||||
make DESTDIR="$1" install
|
||||
|
||||
rm -f "$1/usr/include/minizip/crypt.h"
|
@ -1 +0,0 @@
|
||||
c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1 zlib-1.2.11.tar.gz
|
@ -1,4 +0,0 @@
|
||||
#zlib make
|
||||
#automake make
|
||||
#autoconf make
|
||||
#libtool make
|
@ -1 +0,0 @@
|
||||
https://zlib.net/zlib-1.2.11.tar.gz
|
@ -1 +0,0 @@
|
||||
1.2.11 1
|
@ -1,19 +0,0 @@
|
||||
#!/bin/sh -e
|
||||
|
||||
make \
|
||||
PREFIX=/usr \
|
||||
SHAREDIR=/usr/share/hwdata \
|
||||
SHARED=yes \
|
||||
MANDIR=/usr/share/man \
|
||||
SBINDIR=/usr/bin
|
||||
|
||||
make \
|
||||
PREFIX=/usr \
|
||||
SHAREDIR=/usr/share/hwdata \
|
||||
SHARED=yes \
|
||||
MANDIR=/usr/share/man \
|
||||
SBINDIR=/usr/bin \
|
||||
DESTDIR="$1" \
|
||||
install install-lib
|
||||
|
||||
chmod -v 755 "$1/usr/lib/libpci.so"
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user