FRE-709: Document duplicate recovery wake - FRE-635 already recovered via FRE-708

This commit is contained in:
2026-04-26 20:23:14 -04:00
parent e07237b6b0
commit 0ff6c74871
5880 changed files with 1643723 additions and 908 deletions

183
node_modules/chromium/README.MD generated vendored Normal file
View File

@@ -0,0 +1,183 @@
# node-chromium [![Build Status](https://travis-ci.org/dtolstyi/node-chromium.svg?branch=master)](https://travis-ci.org/dtolstyi/node-chromium) [![XO code style](https://img.shields.io/badge/code_style-XO-blue.svg)](https://github.com/sindresorhus/xo) [![npm version](https://badge.fury.io/js/chromium.svg)](https://badge.fury.io/js/chromium) [![Platforms](https://img.shields.io/badge/platforms-Win/Linux/Mac-lightgrey.svg)](https://github.com/dtolstyi/node-chromium)
> Chromium binaries for your NodeJS project
**node-chromium** allows you to easily add [Chromium](https://www.chromium.org/) binaries to your project and use it for automation, testing, web scraping or just for fun.
## Why Chromium?
[Chromium](https://www.chromium.org/) is an open-source web browser developed and maintained by The Chromium Project. Google Chrome, also released in 2008, is a proprietary web browser developed and maintained by Google. The reason why Chrome and Chromium are tied to each other is that Chome borrows Chromiums source code.
The main benefit of using Chromium is that it **doesn't** include all the proprietary modifications made by Google, thus it's more lightweight and more suitable for automation purposes.
You can see full list of differences in [Fossbytes article](https://fossbytes.com/difference-google-chrome-vs-chromium-browser/).
## Requirements
Starting from version `2.2.0` `node-chromium` is tested against and supports Node.js LTS and latest stable releases
Versions `2.0.0` - `2.1.2` support Node.js 7+
If you need to use older versions of Node.js try `node-chromium 1.x.x` releases.
## Usage
Depending on your needs, you can install module into **devDependencies** (`--save-dev`) or production **dependencies** (`--save`)
```
npm install --save chromium
```
During the installation process **node-chromium** will find the latest suitable build for your platform, download it and extract into libraries folder. As soon as installation is finished, you are ready to use Chromium in your project:
```js
const chromium = require('chromium');
const {execFile} = require('child_process');
execFile(chromium.path, ['https://google.com'], err => {
console.log('Hello Google!');
});
```
### Proxy Configuration
When downloading the chromium binary **node-chromium** will use the proxy configured for `npm` to establish HTTP(S) connections. The proxy used by `npm` can be configured using
```
npm config set proxy http://<username>:<password>@<the.proxy.hostname>:<port>
npm config set https-proxy http://<username>:<password>@<the.proxy.hostname>:<port
npm config set no-proxy localhost,127.0.0.1,example.org
```
Additionally proxy settings found in the environment variables `HTTP_PROXY`, `HTTPS_PROXY` and `NO_PROXY` will be used if they are not defined in the `.npmrc` file.
### Install a concrete revision
If you want to specify the revision of Chromium to be installed, just set the environment variable `NODE_CHROMIUM_REVISION` to the number of the revision you want to install, as in:
```shell script
export NODE_CHROMIUM_REVISION=729994
```
Note - may also be set in .npmrc like so:
```ini
node_chromium_revision=729994
```
### Use a Download Mirror
You may download a specific revision from an alternate download host using the environment variable `NODE_CHROMIUM_DOWNLOAD_HOST`, for example:
```bash
export NODE_CHROMIUM_REVISION=737027
export NODE_CHROMIUM_DOWNLOAD_HOST=https://npm.taobao.org/mirrors/chromium-browser-snapshots/
# If running on Linux x64 this will download binary from:
# https://npm.taobao.org/mirrors/chromium-browser-snapshots/Linux_x64/737027/chrome-linux.zip?alt=media
```
Notes on `NODE_CHROMIUM_DOWNLOAD_HOST`:
* The default download host is `https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/`
* Mirrors are expected to host binaries in the structure: `<NODE_CHROMIUM_DOWNLOAD_HOST>/<PLATFORM_ARCHITECTURE>/<REVISION>/<OS_CHROMIUM_FILE_NAME>.zip?alt=media` for example see the taobao mirror [chromium-browser-snapshots](https://npm.taobao.org/mirrors/chromium-browser-snapshots/).
* May also be set in .npmrc like so:
```ini
node_chromium_download_host=https://npm.taobao.org/mirrors/chromium-browser-snapshots/
node_chromium_revision=737027
```
## Selenium WebDriver Headless (without UI) tests
It's extremely easy to use **node-chromium** with **selenium-webdriver** to perform e2e tests without spawning browser UI.
First, install all dependencies
```
npm install --save chromium chromedriver selenium-webdriver
```
After the installation is finished, create simple script that opens Google Search home page and takes it's screenshot in headless mode.
```js
const fs = require('fs');
const webdriver = require('selenium-webdriver');
const chrome = require('selenium-webdriver/chrome');
const chromium = require('chromium');
require('chromedriver');
async function start() {
let options = new chrome.Options();
options.setChromeBinaryPath(chromium.path);
options.addArguments('--headless');
options.addArguments('--disable-gpu');
options.addArguments('--window-size=1280,960');
const driver = await new webdriver.Builder()
.forBrowser('chrome')
.setChromeOptions(options)
.build();
await driver.get('http://google.com');
console.log('Hello Google!');
await takeScreenshot(driver, 'google-start-page');
await driver.quit();
}
async function takeScreenshot(driver, name) {
await driver.takeScreenshot().then((data) => {
fs.writeFileSync(name + '.png', data, 'base64');
console.log('Screenshot is saved');
});
}
start();
```
### Cache Downloaded Binaries
By default downloaded chromium binaries are cached in the appropriate cache directory for your operating system.
You may override the cache path by setting the `NODE_CHROMIUM_CACHE_PATH` environment variable to a directory path, for example:
```bash
export NODE_CHROMIUM_CACHE_PATH=/path/to/cache/dir/
# or in .npmrc like so:
# node_chromium_cache_path=/path/to/cache/dir/
```
You may disable caching by setting `NODE_CHROMIUM_CACHE_DISABLE` to `true`:
```bash
export NODE_CHROMIUM_CACHE_DISABLE=true
# or in .npmrc like so:
# node_chromium_cache_disable=true
```
### Skip Automatic Chromium Install
Chromium will ordinarily be installed when you exectute `npm install` however you may wish to skip this step if you are going to defer installation and perform it programatically at a later stage. Below is an example of how to do so.
```bash
export NODE_CHROMIUM_SKIP_INSTALL=true
# or in .npmrc like so:
# node_chromium_skip_install=true
```
Then install it programatically when you need it:
```js
chromium.install().then(function() {
// do stuff...
});
```
## Contributors
<table>
<tr style="background: #ffec86">
<td align="center" style="border: 1px solid gold"><a href="https://github.com/ricksbrown"><img src="https://avatars0.githubusercontent.com/u/4993735?s=460&u=2920cd32369fa4767be1c4ed86c8996807b7977a&v=4" width="100px;" alt=""/><br /><sub><b>Rick Brown</b></sub></a></td>
</tr>
</table>
<table>
<tr>
<td align="center"><a href="https://github.com/aschlosser-tf"><img src="https://avatars2.githubusercontent.com/u/32895827?s=460&v=4" width="100px;" alt=""/><br /><sub><b>Alex Schlosser</b></sub></a></td>
<td align="center"><a href="https://github.com/psociety"><img src="https://avatars3.githubusercontent.com/u/29523682?s=460&u=51a0fc950ef63ebf7de73701454da97b29c4f9be&v=4" width="100px;" alt=""/><br /><sub><b>psociety</b></sub></a></td>
<td align="center"><a href="https://github.com/dhAlcojor"><img src="https://avatars3.githubusercontent.com/u/567687?s=460&u=4fe23913c4a02531192701bc5ff393a296f38ac2&v=4" width="100px;" alt=""/><br /><sub><b>Daniel Hernández Alcojor</b></sub></a></td>
<td align="center"><a href="https://github.com/rcooney"><img src="https://avatars3.githubusercontent.com/u/5251278?s=460&v=4" width="100px;" alt=""/><br /><sub><b>Ryan Cooney</b></sub></a></td>
<td align="center"><a href="https://github.com/amilajack"><img src="https://avatars1.githubusercontent.com/u/6374832?s=460&u=8e2f43ba7405c7d991351d95854ec1c64e7e4d52&v=4" width="100px;" alt=""/><br /><sub><b>Amila Welihinda</b></sub></a></td>
<td align="center"><a href="https://github.com/Timon0"><img src="https://avatars3.githubusercontent.com/u/26453313?s=460&v=4" width="100px;" alt=""/><br /><sub><b>Timon Kurmann</b></sub></a></td>
<td align="center"><a href="https://github.com/Eghizio"><img src="https://avatars.githubusercontent.com/u/32049761?v=4" width="100px;" alt=""/><br /><sub><b>Jakub Wąsik</b></sub></a></td>
</tr>
</table>
## License
MIT

57
node_modules/chromium/cache.js generated vendored Normal file
View File

@@ -0,0 +1,57 @@
'use strict';
const path = require('path');
const fs = require('fs');
const cachedir = require('cachedir');
const config = require('./config');
/**
* Retrieve a Chromium archive from filesystem cache.
* @param {string} revision The Chromium revision to retrieve.
* @returns {string} The path to the cached Chromium archive. Falsy if not found.
*/
function get(revision) {
const cachePath = buildCachePath(revision);
if (fs.existsSync(cachePath)) {
return cachePath;
}
return '';
}
/**
* Store a Chromium archive in filesystem cache for future use.
* Has no effect if the user has not configured a cache location.
* @param {string} revision The Chromium revision in the archive file.
* @param {string} filePath The path to the Chromium archive file to store in cache.
*/
function put(revision, filePath) {
const cachePath = buildCachePath(revision);
if (cachePath && filePath) {
try {
fs.mkdirSync(path.dirname(cachePath), {recursive: true});
fs.copyFileSync(filePath, cachePath);
} catch (error) {
// Don't die on cache fail
console.error('Could not cache file', cachePath, error);
}
}
}
/**
* Get the unique cache path for this revision, on this platform and architecture.
* @param {string} revision The revision of this Chromium binary, essentially a unique cache key.
* @returns {string} The cache path, or falsy if caching is not enabled.
*/
function buildCachePath(revision) {
if (!revision || config.getEnvVar('NODE_CHROMIUM_CACHE_DISABLE').toLowerCase() === 'true') {
return '';
}
const cachePath = config.getEnvVar('NODE_CHROMIUM_CACHE_PATH') || cachedir('node-chromium');
return path.join(cachePath, `chromium-${revision}-${process.platform}-${process.arch}.zip`);
}
module.exports = {
get,
put
};

28
node_modules/chromium/config.js generated vendored Normal file
View File

@@ -0,0 +1,28 @@
'use strict';
const path = require('path');
module.exports = {
/**
* The default CDN URL, used if not overridden by user
*/
CDN_URL: 'https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/',
/**
* The default filesystem path where chromium will be installed.
*/
BIN_OUT_PATH: path.join(__dirname, 'lib', 'chromium'),
/**
* Gets a configuration parameter from the environment.
* Will first check for a lowercase variant set via npm config in the format: `npm_config_${name.toLowerCase()}`.
* If not set then will check the environment for the variable, as provided.
* @param {string} name The name of the environment variable, case sensitive, conventionally uppercase.
* @returns {string} The value of the environment variable.
*/
getEnvVar: name => {
if (!name) {
return '';
}
return process.env[`npm_config_${name.toLowerCase()}`] || process.env[name] || '';
}
};

26
node_modules/chromium/index.js generated vendored Normal file
View File

@@ -0,0 +1,26 @@
'use strict';
const fs = require('fs');
const utils = require('./utils');
function getBinaryPath() {
const path = utils.getOsChromiumBinPath();
if (fs.existsSync(path)) {
return path;
}
return undefined;
}
module.exports = {
/*
* The path property needs to use a getter because the binaries may not be present for any number of reasons.
* Using a getter allows this property to update itself as needed and reflect the current state of the filesystem.
*/
get path() {
return getBinaryPath();
},
install: require('./install')
};

154
node_modules/chromium/install.js generated vendored Normal file
View File

@@ -0,0 +1,154 @@
'use strict';
const path = require('path');
const fs = require('fs');
const extractZip = require('extract-zip');
const got = require('got');
const tmp = require('tmp');
const debug = require('debug')('node-chromium');
const rimraf = require('rimraf');
const ProgressBar = require('progress');
const config = require('./config');
const utils = require('./utils');
const cache = require('./cache');
let progressBar = null;
/* eslint unicorn/prevent-abbreviations: ["off"] */
function createTempFile() {
return new Promise((resolve, reject) => {
tmp.file((error, path) => {
if (error) {
console.log('An error occured while trying to create temporary file', error);
reject(error);
} else {
resolve(path);
}
});
});
}
/**
* Downloads the Chromium archive from the default CDN or mirror if configured.
* If the required archive is retrieved from the cache directory then the download will be skipped.
* @param {string} revision The Chromium revision to download.
*/
async function downloadChromiumRevision(revision) {
const cacheEntry = cache.get(revision);
if (cacheEntry) {
debug('Found Chromium archive in cache, skipping download');
return Promise.resolve(cacheEntry);
}
debug('Downloading Chromium archive from Google CDN');
const url = utils.getDownloadUrl(revision);
const tmpPath = await createTempFile();
return _downloadFile(url, tmpPath).then(tmpPath => {
cache.put(revision, tmpPath);
return tmpPath;
});
}
function _downloadFile(url, destPath) {
return new Promise((resolve, reject) => {
got.stream(url, utils.getRequestOptions(url))
.on('downloadProgress', onProgress)
.on('error', error => {
console.error('An error occurred while trying to download file', error.message);
reject(error);
})
.pipe(fs.createWriteStream(destPath))
.on('error', error => {
console.error('An error occurred while trying to save file to disk', error);
reject(error);
})
.on('finish', () => {
resolve(destPath);
});
});
}
/**
* Handles download progress events.
* @param progress Information about progress so far.
*/
function onProgress(progress) {
const fakeProgressBar = {tick: () => {}};
try {
if (!progressBar) {
const formatBytes = bytes => {
const mb = bytes / 1024 / 1024;
return `${Math.round(mb * 10) / 10} MB`;
};
if (progress.total) {
progressBar = new ProgressBar(`Downloading Chromium - ${formatBytes(progress.total)} [:bar] :percent :etas `, {
width: 20,
total: progress.total
});
} else {
progressBar = fakeProgressBar;
console.info('\tPlease wait, this may take a while...');
}
}
progressBar.tick(progress.transferred - progressBar.curr);
} catch (error) {
// Don't die on progress bar failure, log it and stop progress
console.error('Error displaying progress bar. Continuing anyway...', error);
progressBar = fakeProgressBar;
}
}
function unzipArchive(archivePath, outputFolder) {
debug('Started extracting archive', archivePath);
return new Promise((resolve, reject) => {
const osOutputFolder = path.join(outputFolder, utils.getOsChromiumFolderName());
rimraf(osOutputFolder, () => {
extractZip(archivePath, {dir: outputFolder}, error => {
if (error) {
console.error('An error occurred while trying to extract archive', error);
reject(error);
} else {
debug('Archive was successfully extracted');
resolve(true);
}
});
});
});
}
async function install() {
const chromiumRevision = config.getEnvVar('NODE_CHROMIUM_REVISION');
try {
console.info('Step 1. Retrieving Chromium revision number');
const revision = chromiumRevision || await utils.getLatestRevisionNumber();
console.info(`Step 2. Downloading Chromium revision ${revision}`);
const archivePath = await downloadChromiumRevision(revision);
console.info('Step 3. Setting up Chromium binaries');
await unzipArchive(archivePath, config.BIN_OUT_PATH);
console.info('Process is successfully finished');
} catch (error) {
console.error('An error occurred while trying to setup Chromium. Resolve all issues and restart the process', error);
}
}
if (require.main === module) {
// Module called directly, not via "require", so execute install...
if (config.getEnvVar('NODE_CHROMIUM_SKIP_INSTALL').toLowerCase() === 'true') {
console.info('Skipping chromium install');
} else {
install();
}
}
tmp.setGracefulCleanup(); // Ensure temporary files are cleaned up when process exits
module.exports = install;

View File

@@ -0,0 +1,8 @@
{
"name": "MEI Preload",
"icons": {},
"version": "1.0.7.1652906823",
"manifest_version": 2,
"update_url": "https://clients2.google.com/service/update2/crx",
"description": "Contains preloaded data for Media Engagement"
}

Binary file not shown.

View File

@@ -0,0 +1,6 @@
{
"manifest_version": 2,
"name": "Privacy Sandbox Attestations",
"version": "2025.7.18.0",
"pre_installed": true
}

View File

@@ -0,0 +1,262 @@
https://2k.comhttps://33across.comhttps://360yield.comhttps://3lift.comhttps://ad-score.com
https://ad.gthttps://adentifi.comhttps://adform.nethttps://adingo.jphttps://admatrix.jphttps://admixer.nethttps://adnami.iohttps://adnxs.comhttps://adsafeprotected.comhttps://adsrvr.orghttps://adthrive.comhttps://advividnetwork.comNhttps://aggregation-service-site-dot-clz200258-datateam-italy.ew.r.appspot.comhttps://anonymised.iohttps://aphub.aihttps://appier.nethttps://avads.nethttps://ayads.iohttps://bidswitch.nethttps://bidtheatre.nethttps://bing.comhttps://blendee.comhttps://bounceexchange.comhttps://bypass.jphttps://casalemedia.comhttps://cdn-net.comhttps://clickonometrics.plhttps://connected-stories.comhttps://crcldu.comhttps://creativecdn.comhttps://criteo.comhttps://ctnsnet.comhttps://daum.nethttps://display.iohttps://dotdashmeredith.comhttps://dotomi.comhttps://doubleclick.nethttps://dynalyst.jphttps://edkt.iohttps://ezoic.comhttps://fanbyte.comhttps://flashtalking.comhttps://fout.jphttps://fwmrm.nethttps://gama.globohttps://ghtinc.comhttps://gmossp-sp.jphttps://google-analytics.comhttps://gsspat.jphttps://gumgum.comhttps://html-load.comhttps://im-apps.nethttps://impact-ad.jphttps://indexww.comhttps://inmobi.comhttps://innovid.comhttps://jivox.comhttps://kakao.comhttps://kidoz.nethttps://ladsp.comhttps://lucead.comhttps://mail.ruhttps://media.nethttps://mediaintelligence.dehttps://mediamath.comhttps://mediavine.comhttps://microad.jphttps://naver.comhttps://nhnace.comhttps://nodals.iohttps://onetag-sys.comhttps://openx.nethttps://optable.cohttps://outbrain.comhttps://pixfuture.com+https://privacy-sandbox-demos-ad-server.dev'https://privacy-sandbox-demos-dsp-a.dev'https://privacy-sandbox-demos-dsp-b.dev'https://privacy-sandbox-demos-dsp-x.dev'https://privacy-sandbox-demos-dsp-y.dev%https://privacy-sandbox-demos-dsp.dev*https://privacy-sandbox-demos-services.dev'https://privacy-sandbox-demos-ssp-a.dev'https://privacy-sandbox-demos-ssp-b.dev'https://privacy-sandbox-demos-ssp-x.dev'https://privacy-sandbox-demos-ssp-y.dev%https://privacy-sandbox-demos-ssp.dev https://privacy-sandbox-test.com0https://privacy-sandcastle-dev-ad-server.web.app-https://privacy-sandcastle-dev-dsp-a1.web.app-https://privacy-sandcastle-dev-dsp-b1.web.app,https://privacy-sandcastle-dev-dsp-x.web.app,https://privacy-sandcastle-dev-dsp-y.web.app*https://privacy-sandcastle-dev-dsp.web.app/https://privacy-sandcastle-dev-services.web.app,https://privacy-sandcastle-dev-ssp-a.web.app,https://privacy-sandcastle-dev-ssp-b.web.app,https://privacy-sandcastle-dev-ssp-x.web.app,https://privacy-sandcastle-dev-ssp-y.web.app*https://privacy-sandcastle-dev-ssp.web.apphttps://pub.networkhttps://pubmatic.comhttps://pubtm.comhttps://quantserve.comhttps://relevant-digital.comhttps://sascdn.comhttps://shinystat.comhttps://shop.byhttps://singular.nethttps://sportradarserving.comhttps://t13.iohttps://teads.tvhttps://thepopradar.comhttps://theryn.iohttps://tncid.apphttps://toponad.comhttps://tpmark.nethttps://tribalfusion.comhttps://triptease.iohttps://uinterbox.comhttps://uol.com.br
https://vg.nohttps://vpadn.comhttps://washingtonpost.comhttps://yahoo.co.jphttps://yahoo.comhttps://yandex.ruhttps://yelp.com
https://stackadapt.com

https://yieldlab.net
%
https://googlesyndication.com

https://worldhistory.org

https://sitescout.com

https://docomo.ne.jp

https://tamedia.com.tw

https://connatix.com

https://quora.com

https://presage.io

https://onet.pl
%
https://creative-serving.com

https://dreammail.jp

https://bluems.com

https://storygize.net
#
https://amazon-adsystem.com

https://undertone.com

https://finn.no

https://ad-stir.com
#
https://youronlinechoices.eu

https://disqus.com
&
https://adtrafficquality.google

https://tya-dev.com
&
https://googleadservices.com

https://akpytela.cz
!
https://ebayadservices.com

https://linkedin.com

https://postrelease.com

https://shinobi.jp

https://tiktok.com

https://torneos.gg

https://primecaster.net

https://payment.goog

https://ebis.ne.jp

https://iobeya.com

https://ingereck.net
"
https://kompaspublishing.nl

https://r2b2.io

https://dailymail.co.uk

https://pinterest.com

https://verve.com

https://fandom.com

https://trkkn.com

https://azubiyo.de

https://jkforum.net

https://lwadm.com
%
https://audienceproject.com

https://facebook.com

https://trip.com
"
https://rubiconproject.com

https://apex-football.com

https://adswizz.com
#
https://adsmeasurement.com

https://a-mo.net

https://tangooserver.com

https://retargetly.com

https://elle.com

https://yieldmo.com

https://momento.dev
"
https://appsflyersdk.com

https://gokwik.co

https://snapchat.com
7
/https://shared-storage-demo-publisher-b.web.app

https://tailtarget.com

https://alketech.eu

https://aniview.com

https://demand.supply

https://doubleverify.com
!
https://weborama-tech.ru
%
https://wepowerconnections.com

https://beaconmax.com

https://nexxen.tech

https://permutive.app

https://admission.net
1
(https://paa-reporting-advertising.amazon
(
https://smadexprivacysandbox.com

https://eloan.co.jp

https://cpx.to

https://atirun.com

https://adscale.de

https://semafor.com
6
/https://ptb-msmt-static-5jyy5ulagq-uc.a.run.app

https://i-mobile.co.jp

https://atomex.net

https://sephora.com
#
https://explorefledge.com

https://weborama.fr

https://aqfer.com

https://taboola.com

https://elnacional.cat

https://coupang.com
<
4https://shared-storage-demo-content-producer.web.app
!
https://dailymotion.com

https://gunosy.com

https://xsoda.net

https://getyourguide.com

https://get3rdspace.com

https://boost-web.com
"
https://rocksolidrustic.com

https://grxchange.gr
"
https://d-edgeconnect.media

https://samplicio.us
!
https://audience360.com.au

https://getcapi.co

https://logly.co.jp

https://kargo.com

https://appconsent.io

https://open-bid.com

https://insyta.com

https://adroll.com

https://moshimo.com

https://convertunits.com

https://appsflyer.com

https://vidazoo.com

https://validate.audio

https://globo.com

https://seedtag.com
7
/https://shared-storage-demo-publisher-a.web.app

https://metro.co.uk

https://usemax.de

https://deepintent.com

https://cazamba.com

https://superfine.org
"
https://authorizedvault.com
"
https://media6degrees.com

https://socdm.com

https://euleriancdn.net

https://wp.pl

https://acxiom.com

BIN
node_modules/chromium/lib/chromium/chrome-linux/chrome generated vendored Executable file

Binary file not shown.

View File

@@ -0,0 +1,153 @@
#!/bin/bash
# Copyright 2011 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# Running Chromium via this script makes it possible to set Chromium as the
# default browser directly out of a compile, without needing to package it.
DESKTOP="chromium-devel"
TITLE="Chromium"
usage() {
echo "$0 [--gdb] [--help] [--man-page] [--] [chrome-options]"
echo
echo " --gdb Start within gdb"
echo " --help This help screen"
echo " --man-page Open the man page in the tree"
}
# Check to see if there is a desktop file of the given name.
exists_desktop_file() {
# Build a search list from $XDG_DATA_HOME and $XDG_DATA_DIRS, the latter
# of which can itself be a colon-separated list of directories to search.
search="${XDG_DATA_HOME:-$HOME/.local/share}:${XDG_DATA_DIRS:-/usr/local/share:/usr/share}"
IFS=:
for dir in $search; do
unset IFS
[ "$dir" -a -d "$dir/applications" ] || continue
[ -r "$dir/applications/$DESKTOP.desktop" ] && return
done
# Didn't find it in the search path.
return 1
}
# Checks a file to see if it's a 32 or 64-bit.
check_executable() {
out=$(file $(readlink -f $1) 2> /dev/null)
echo $out | grep -qs "ELF 32-bit LSB"
if [ $? = 0 ]; then
echo 32
return
fi
echo $out | grep -qs "ELF 64-bit LSB"
if [ $? = 0 ]; then
echo 64
return
fi
echo neither
}
# Generate a desktop file that will run this script.
generate_desktop_file() {
apps="${XDG_DATA_HOME:-$HOME/.local/share}/applications"
mkdir -p "$apps"
cat > "$apps/$DESKTOP.desktop" << EOF
[Desktop Entry]
Version=1.0
Encoding=UTF-8
Name=$TITLE
Exec=$CHROME_WRAPPER %U
Terminal=false
Icon=$HERE/product_logo_48.png
Type=Application
Categories=Application;Network;WebBrowser;
MimeType=text/html;text/xml;application/xhtml_xml;
EOF
}
# Let the wrapped binary know that it has been run through the wrapper.
export CHROME_WRAPPER="`readlink -f "$0"`"
export CHROME_DESKTOP="$DESKTOP.desktop"
HERE="`dirname "$CHROME_WRAPPER"`"
# Use system xdg utilities. But first create mimeapps.list if it doesn't
# exist; some systems have bugs in xdg-mime that make it fail without it.
xdg_app_dir="${XDG_DATA_HOME:-$HOME/.local/share/applications}"
mkdir -p "$xdg_app_dir"
[ -f "$xdg_app_dir/mimeapps.list" ] || touch "$xdg_app_dir/mimeapps.list"
# Always use our ffmpeg and other shared libs.
export LD_LIBRARY_PATH="$HERE:$HERE/lib:$HERE/lib.target${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}"
MISSING_LIBS=$(ldd "$HERE/chrome" 2> /dev/null |grep "not found$" | cut -d" " -f 1|sed 's/\t//')
CHROME_ARCH=$(check_executable "$HERE/chrome")
uname -m | grep -qs x86_64
if [ $? = 1 ]; then
LIBDIRS="/lib /lib32 /usr/lib /usr/lib32"
else
LIBDIRS="/lib64 /lib /usr/lib64 /usr/lib"
fi
echo $MISSING_LIBS | grep -qs libbz2.so.1.0
if [ $? = 0 ]; then
for dir in $LIBDIRS
do
if [ -e "$dir/libbz2.so.1" ]; then
LIB_ARCH=$(check_executable "$dir/libbz2.so.1")
if [ "$CHROME_ARCH" = "$LIB_ARCH" ]; then
ln -snf "$dir/libbz2.so.1" "$HERE/libbz2.so.1.0"
break;
fi
fi
done
fi
for lib in libnspr4.so.0d libnss3.so.1d libnssutil3.so.1d libplc4.so.0d libplds4.so.0d libsmime3.so.1d libssl3.so.1d
do
echo $MISSING_LIBS | grep -qs $lib
if [ $? = 0 ]; then
reallib=$(echo $lib | sed 's/\.[01]d$//')
for dir in $LIBDIRS
do
if [ -e "$dir/$reallib" ]; then
LIB_ARCH=$(check_executable "$dir/$reallib")
if [ "$CHROME_ARCH" = "$LIB_ARCH" ]; then
ln -snf "$dir/$reallib" "$HERE/$lib"
break;
fi
fi
done
fi
done
# Custom version string for this release. This can be used to add a downstream
# vendor string or release channel information.
export CHROME_VERSION_EXTRA="custom"
exists_desktop_file || generate_desktop_file
CMD_PREFIX=
ARGS=()
while [ "$#" -gt 0 ]; do
case "$1" in
"--")
shift
break ;;
"--gdb")
CMD_PREFIX="gdb --args" ;;
"--help")
usage
exit 0 ;;
"--man-page")
exec man "$HERE/../../chrome/app/resources/manpage.1.in" ;;
*)
ARGS=( "${ARGS[@]}" "$1" ) ;;
esac
shift
done
set -- "${ARGS[@]}" "$@"
exec $CMD_PREFIX "$HERE/chrome" "$@"

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
node_modules/chromium/lib/chromium/chrome-linux/libEGL.so generated vendored Executable file

Binary file not shown.

BIN
node_modules/chromium/lib/chromium/chrome-linux/libGLESv2.so generated vendored Executable file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More