Commit graph

352 commits

Author SHA1 Message Date
George Xu
bc508c6113
feat: add electron.safeStorage encryption API (#30020)
* feat: add SafeStorage api; first commit

* chore: rename files to fit semantically

* chore: add linkedBindings

* chore: fix function signatures

* chore: refactor eisCookieEncryptionEnabled() fuse

* chore: create test file

* chore: add tests and documentation

* chore: add copyright and lint

* chore: add additional tests

* chore: fix constructor

* chore: commit for pair programming

* wip: commit for keeley pairing

* chore: docs change and code cleanup

* chore: add linux import

* chore: add description to documentation

* chore: fixing tests

* chore: modify behaviour to not allow unencrypted strings as decyption input

* fix add patch for enabling default v11 encryption on Linux

* chore: remove file after each test

* chore: fix patch

* chore: remove chromium patch

* chore: add linux specific tests

* chore: fix path

* chore: add checker for linuux file deletion

* chore: add dcheck back

* chore: remove reference to headless mode

* chore: remove tests for linux

* chore: edit commit message

* chore: refactor safeStorage to not be a class

* chore: remove static variable from header

* chore:  spec file remove settimeout

Co-authored-by: VerteDinde <keeleymhammond@gmail.com>
2021-08-05 15:12:54 -07:00
Jeremy Rose
ec6cd0053e
chore: more crash-keys for gin::Wrappable debugging (#30404) 2021-08-05 11:39:07 -07:00
Samuel Attard
320bea4c28
feat: add fuses for NODE_OPTIONS and --inspect (#30190)
* feat: add fuses for NODE_OPTIONS and --inspect

* chore: add node patch to ensure NODE_OPTIONS are never parsed when fuse is disabledd

* chore: fix lint

* chore: flip boolean logic

* chore: update patches

* chore: add trailing _ to static member

* Update add_should_read_node_options_from_env_option_to_disable_node_options.patch

* chore: update patches

Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
2021-08-05 10:50:11 -07:00
Milan Burda
1c29734c91
build: fix building with enable_desktop_capturer = false (#30372) 2021-08-03 15:12:46 -07:00
Biru Mohanathas
ced2e8779f
feat: Allow detection of MITM HTTPS proxies like ZScaler (#30174)
* feat: Allow detection of MITM HTTPS proxies like ZScaler

For security purposes, Figma heavily restrics the origins that are
allowed to load within our Electron app. Unfortunately some corporate
environments use MITM proxies like ZScaler, which intercepts our
connection to `https://www.figma.com` and serves a redirect to e.g.
`https://gateway.zscloud.net` before finally redirecting back to
`https://www.figma.com`.

In order to detect this situation and handle it gracefully, we need to
be able to know whether or not the certificate for our own origin
(`https://www.figma.com`) is chained to a known root. We do this by
exposesing `CertVerifyResult::is_issued_by_known_root`.

If the certification verification passed without the certificate being
tied to a known root, we can safely assume that we are dealing with a
MITM proxy that has its root CA installed locally on the machine. This
means that HTTPS can't be trusted so we might as well make life easier
for corporate users by loosening our origin restrictions without any
manual steps.

* Tweak docs wording
2021-08-02 10:24:58 +09:00
Milan Burda
c5ad7ed0cd
refactor: remove guestInstanceId from WebPreferences (#30280)
* refactor: remove guestInstanceId from WebPreferences

* refactor: remove WebViewManager::GetEmbedder
2021-07-28 15:32:53 -07:00
Jeremy Rose
ceebae170e
feat: partially support chrome.tabs.update (#30069) 2021-07-27 13:36:22 -07:00
electron-roller[bot]
64ba8feb93
chore: bump chromium to 94.0.4584.0 (main) (#30030)
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
Co-authored-by: deepak1556 <hop2deep@gmail.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
2021-07-26 09:02:16 -07:00
Keeley Hammond
19820fc2a7
chore: add additional crash key to gin::Wrappable (#30161) 2021-07-21 09:33:25 -04:00
Cheng Zhao
05ba6359d0
feat: add signal option to dialog.showMessageBox (#26102)
* mac: add dialog.closeMessageBox API

* win: Implement dialog.closeMessageBox

* mac: Return cancelId with closeMessageBox

* gtk: Implement dialog.closeMessageBox

* win: Fix 32bit build

* win: Reduce the scope of lock

* fix: Build error after rebase

* feat: Use AbortSignal to close message box

* chore: silently handle duplicate ID

* win: Add more notes about the threads

* chore: apply reviews

* fix: base::NoDestructor should be warpped in function

* chore: fix style on windows
2021-07-15 07:59:27 +09:00
Jeremy Rose
bec47f54f4
fix: use correct userData path when unbundled (#30113) 2021-07-14 13:10:37 -07:00
Jeremy Rose
4d0475c9ce
feat: expose location and modifiers on before-input-event (#29850)
* feat: expose location and modifiers on before-input-event

* lint
2021-07-14 20:50:02 +09:00
electron-roller[bot]
2585e6d5fa
chore: bump chromium to 93.0.4566.0 (main) (#29980)
* chore: bump chromium in DEPS to 93.0.4562.0

* chore: update patches

* [base] Made Value::Take{Dict,List}() rvalue ref-qualified.

https://chromium-review.googlesource.com/c/chromium/src/+/2988105

* Revert "Reland "Roll src/buildtools/third_party/libc++/trunk/ 8fa879467..79a2e924d (426 commits)""

https://chromium-review.googlesource.com/c/chromium/src/+/2995482

This reverts commit 9691d6c265f010791c37d374248559969980ec65 and 797723ec838709ddeba0c104e30727ee0b7ac8ca

* Pass gfx::Insets to GetHTComponentForFrame

https://chromium-review.googlesource.com/c/chromium/src/+/2984243

* chore: bump chromium in DEPS to 93.0.4563.0

* [Clipboard API] Clipboard Custom Formats implementation Part 2.

https://chromium-review.googlesource.com/c/chromium/src/+/2967649

* chore: update patches

* chore: bump chromium in DEPS to 93.0.4564.0

* chore: bump chromium in DEPS to 93.0.4565.0

* chore: update patches

* Prevent use of base::NoDestructor for trivially-destructible types

https://chromium-review.googlesource.com/c/chromium/src/+/2998672

* chore: update patches

* fixup! [Clipboard API] Clipboard Custom Formats implementation Part 2.

* chore: bump chromium in DEPS to 93.0.4566.0

* chore: update patches

* chore: add missing header

* ci: do not run clipboard tests on WOA

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
Co-authored-by: deepak1556 <hop2deep@gmail.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2021-07-06 08:17:13 -04:00
David Sanders
95a9ff952c
chore: cleanup usages of const char* (#29906) 2021-07-02 09:51:52 +09:00
David Sanders
f6531166ae
chore: clean up forward declarations (#29904) 2021-07-02 09:51:37 +09:00
John Kleinschmidt
1f8a46c9c6
feat: enable window controls overlay on macOS (#29253)
* feat: enable windows control overlay on macOS

* address review feedback

* chore: address review feedback

* Address review feedback

* update doc per review

* only enable WCO when titleBarStyle is overlay

* Revert "only enable WCO when titleBarStyle is overlay"

This reverts commit 1b58b5b1fcb8f091880a4e5d1f8855399c44afad.

* Add new titleBarOverlay property to manage feature

* spelling fix

* Update docs/api/frameless-window.md

Co-authored-by: Samuel Attard <sam@electronjs.org>

* Update shell/browser/api/electron_api_browser_window.cc

Co-authored-by: Samuel Attard <sam@electronjs.org>

* update per review feedback

Co-authored-by: Samuel Attard <sam@electronjs.org>
2021-07-01 15:25:40 -04:00
David Sanders
b60b96b221
chore: remove unused using and namespace declarations (#29892) 2021-06-28 15:26:10 +09:00
electron-roller[bot]
a518e4b2e1
chore: bump chromium to 93.0.4552.0 (main) (#29862)
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
2021-06-24 17:06:42 -07:00
Fedor Indutny
d4a1b41129
fix: microtasks policy in CreateEnvironment (#29531)
* fix: microtasks policy in CreateEnvironment

Microtasks policy should not be updated for the renderer because
`NodeBindings::CreateEnvironment` might be entered with or without
`UvRunOnce()` on stack. One of the examples of such calls is
`window.open()` which is possible to invoke while `uv_run()` is still
running (e.g. with `setImmediate()`).

All in all, it doesn't matter that much which policy we use since
`v8::MicrotasksScope` has a check for the policy in its destructor and
no commits will be made if the policy is `kExplicit`. It is important,
however, to not change the policy in the middle of `UvRunOnce()` so we
should respect whatever we currently have and move on.

Fix: #29463

* Move test to a better place

* Update spec-main/fixtures/crash-cases/setimmediate-window-open-crash/index.html

Co-authored-by: Jeremy Rose <nornagon@nornagon.net>

* Update spec-main/fixtures/crash-cases/setimmediate-window-open-crash/index.html

Co-authored-by: Jeremy Rose <nornagon@nornagon.net>

* simplify crash-case

* comment

* fix comment

Co-authored-by: Fedor Indutny <79877362+indutny-signal@users.noreply.github.com>
Co-authored-by: Jeremy Rose <nornagon@nornagon.net>
Co-authored-by: Fedor Indutny <indutny@signal.org>
2021-06-21 14:06:17 +09:00
Milan Burda
de6696ef1d
chore: remove unused and broken ipcRendererInternal.sendTo() (#29743) 2021-06-17 23:26:18 -05:00
Charles Kerr
8ccab4ce91
feat: bring --enable-logging functionality in line with Chromium (#25089)
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
2021-06-17 14:17:25 -07:00
Shelley Vohr
542abcd6fd
chore: bump Node.js to v16.2.0 (#29244) 2021-06-17 08:50:56 +02:00
Jeremy Rose
ebf54d7cc0
refactor: use PathProvider for user-data-dir and others (#29649)
* refactor: use PathProvider for user-data-dir and others

* consolidate logic for DIR_RECENT and DIR_APP_LOGS into path provider

* fix bad include

* remove debugging code

* fix build on mac

* fix build on win

* create app logs dir on both mac and non-mac
2021-06-15 09:32:56 +09:00
Jeremy Rose
34a4e26b24
fix: check DCHECK_IS_ON() instead of #ifdef DCHECK_IS_ON (#29620) 2021-06-14 11:06:09 +09:00
Samuel Attard
fa0323a3db
fix: Revert "fix: don't propagate GDK_BACKEND to subprocs (#28898)" (#29610)
This reverts commit 7b169c2884.
2021-06-09 08:28:52 -07:00
Shelley Vohr
7b169c2884
fix: don't propagate GDK_BACKEND to subprocs (#28898) 2021-06-08 16:10:27 +02:00
Samuel Attard
8446ce1fc7
feat: add new imageAnimationPolicy webpref and webContents setter (#29095) 2021-06-08 11:00:22 +09:00
David Sanders
79cb5144ae
chore: use std::make_unique/base::MakeRefCounted when possible (#29510) 2021-06-08 11:00:05 +09:00
David Sanders
81c5da5221
chore: use =default for default constructors/destructors (#29511) 2021-06-04 13:16:13 +09:00
David Sanders
b1d1ac6524 fix: change ASAR archive cache to per-process to fix leak (#29293)
* fix: change ASAR archive cache to per-process to fix leak (#29292)

* chore: address code review comments

* chore: tighten up thread-safety

* chore: better address code review comments

* chore: more code review changes
2021-06-04 10:49:08 +09:00
Milan Burda
00693bab30
refactor: use auto env = base::Environment::Create(); everywhere (#29502) 2021-06-04 09:23:06 +09:00
electron-roller[bot]
8532e1239e
chore: bump chromium to 93.0.4530.0 (master) (#29256)
* chore: bump chromium in DEPS to 92.0.4512.6

* 2887336: [CaptureHandle][#2] Propagate CaptureHandleConfig in browser process

https://chromium-review.googlesource.com/c/chromium/src/+/2887336

* refactor: base::Optional -> absl::optional

* chore: fixup patch indices

* chore: bump chromium in DEPS to 92.0.4514.0

* 2899417: Make build work when enable_pdf is set to false.

https://chromium-review.googlesource.com/c/chromium/src/+/2899417

* 2904731: use BrowserContext instead of Profile in PreconnectManager

https://chromium-review.googlesource.com/c/chromium/src/+/2904731

* 2295749: fix: check IsSecureEventInputEnabled in constructor before setting SetPasswordInputEnabled to true

https://chromium-review.googlesource.com/c/chromium/src/+/2295749

* 2893803: Add a GetWebView to RenderFrame.

https://chromium-review.googlesource.com/c/chromium/src/+/2893803

* 2892345: Implement WebContents::ForEachRenderFrameHost

https://chromium-review.googlesource.com/c/chromium/src/+/2892345

* chore: fixup patch indices

* 2892048: Real instance methods for BrowserContext: remaining 5 methods.

https://chromium-review.googlesource.com/c/chromium/src/+/2892048

* 2902821: [mojo] Don't require full header includes for referenced interfaces

https://chromium-review.googlesource.com/c/chromium/src/+/2902821

* 2496500: Remove last deprecated extension Event ctor.

https://chromium-review.googlesource.com/c/chromium/src/+/2496500

* chore: fixup malformed pepper support patch

* chore: bump chromium in DEPS to 92.0.4515.0

* 2908461: Add CreateEmptyPrintPagesParamsPtr() inside print_view_manager_base.cc.

https://chromium-review.googlesource.com/c/chromium/src/+/2908461

* 2880838: viz: add optional HDRMetadata to TransferableResource

https://chromium-review.googlesource.com/c/chromium/src/+/2880838

* chore: fixup patch indices

* chore: bump chromium in DEPS to 92.0.4515.5

* chore: update patches

* chore: bump chromium in DEPS to 92.0.4515.7

* chore: bump chromium in DEPS to 92.0.4515.9

* chore: bump chromium in DEPS to 93.0.4522.0

* chore: bump chromium in DEPS to 93.0.4523.0

* chore: bump chromium in DEPS to 93.0.4524.0

* chore: update patches

* chore: enable_pak_file_integrity_checks was reverted

* chore: update patches

* refactor: base/optional was replaced with absl::optional

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2910202

* refactor: replace all usages of base::nullopt with absl::nullopt

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2910202

* chore: add missing base::Contains include

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2910202

* refactor: replace all usages of base::make_optional with
absl::make_optional

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2910202

* refactor: replace WorldScriptContext() with GetScriptContextFromWorldId

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2893213

* chore: clean up left over opening namespace

Refs: 95bfe6d08f

* chore: add missing base::Contains include

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2910202

* refactor: replace GetCurrentDisplayIterator with the hard checker
GetCurrentDisplay

This code looks suspicious but if the iterator was invalid before it
will also be invalid now.

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2893191

* refactor: headers are now passed directly in extensions client

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2918906

* refactor: base::DictionaryValue::empty() has been removed

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2912424

* chore: add missing includes for network URLLoaderFactory

Refs: unknown, probably a side effect of header changes

* refactor: make convenience wrapper around AppendArg

There is no converter FromV8 for base::StringPiece (apparently its not
possible).  So we now take in an std::string and use the construct for
StringPiece to do implicit conversion.

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2905544

* chore: add patch

* chore: bump chromium in DEPS to 93.0.4525.0

* chore: update patches

* refactor: CanResize has been de-virtualized

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2485774

* chore: update resource integrity patch

* chore: add character encoding idl patch

* chore: bump chromium in DEPS to 93.0.4526.0

* chore: update patches

* chore: bump chromium in DEPS to 93.0.4527.0

* chore: bump chromium in DEPS to 93.0.4528.0

* chore: update patches

* chore: update idl encoding patch

* chore: bump chromium in DEPS to 93.0.4529.0

* chore: update patches

* chore: bump chromium in DEPS to 93.0.4530.0

* chore: update patches

* fix: only SetCanResize after the widget has been initialized

* chore: add patch for vr on windows gn gen

* spec: fix focus related tests on linux due to delay in focus swap

* chore: remove new usages of base::Optional from main

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
Co-authored-by: Samuel Attard <sattard@slack-corp.com>
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
2021-06-03 01:05:04 -07:00
Milan Burda
44491b023a
refactor: eliminate duplicate C++ / JavaScript implementation of app.isPackaged (#29464) 2021-06-02 12:17:08 -07:00
Cheng Zhao
3cfe5c6a21
fix: keep shifted character in menu accelerator (#29202)
* fix: correctly handle shifted char in accelerator

* test: use actual accelerator of NSMenuItem

* chore: simplify KeyboardCodeFromStr

* chore: GetAcceleratorTextAt is testing only
2021-06-02 16:32:48 +09:00
David Sanders
31190d4c6d
chore: use static_cast rather than C-style cast (#29467) 2021-06-02 00:32:10 -07:00
Samuel Maddock
f9d2a7077e
feat: include resize edge with will-resize event (#29199)
* feat: emit resize edge with will-resize event

fix: wparam type

fix: private member usage on mac

docs: will-resize event edge option

refactor: 'info' -> 'details' for better type gen

* Update docs/api/browser-window.md

Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>

* Update docs/api/browser-window.md

Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
2021-06-02 11:37:10 +09:00
David Sanders
80a039ec40
chore: move destructors to header so they can be trivially destructible (#29379) 2021-05-31 21:00:09 -07:00
David Sanders
ba26580f23
chore: use consistent parameter names (#29361) 2021-06-01 10:46:25 +09:00
David Sanders
038359a7d8
chore: fix typos in comments (#29401) 2021-06-01 10:42:38 +09:00
David Sanders
93c9374e95
chore: trim unused STL includes (#29414) 2021-06-01 10:34:44 +09:00
David Sanders
d80e36bcdb
chore: simplify WrappableBase::SecondWeakCallback (#29359) 2021-05-27 13:15:25 -07:00
David Sanders
9bb7051f54
chore: prefer empty() check for readability (#29360) 2021-05-27 13:08:30 -07:00
David Sanders
77ecc7d432
chore: fix typos in comments (#29362) 2021-05-27 11:48:03 -07:00
Milan Burda
241cceb2c9
refactor: eliminate duplicate code (#29174) 2021-05-24 11:32:55 +09:00
electron-roller[bot]
039f3d5cd2
chore: bump chromium to 92.0.4511.0 (master) (#29173) 2021-05-19 16:15:47 -07:00
Milan Burda
2806664bd0
fix: AdjustAmountOfExternalAllocatedMemory regression in NativeImage destructor (#29179) 2021-05-19 10:04:34 +09:00
Electron Bot
2eb3bddb05
chore: bump chromium to 92.0.4505.0 (master) (#29058)
* chore: bump chromium in DEPS to 92.0.4500.2

* resolve conflicts

* update patches

* chore: cherry-pick 82434206f306 from chromium (#29060)

* fix patch

* chore: bump chromium in DEPS to 92.0.4501.0

* chore: bump chromium in DEPS to 92.0.4502.0

* chore: bump chromium in DEPS to 92.0.4503.0

* chore: update patches

* 2869869: [Code Health] Refactor ListValue::Insert in gpu compositor

https://chromium-review.googlesource.com/c/chromium/src/+/2869869

* 2877924: Separate InkDropHost from InkDropHostView

https://chromium-review.googlesource.com/c/chromium/src/+/2877924

* chore: bump chromium in DEPS to 92.0.4504.0

* update patches

* Fixup for Separate InkDropHost from InkDropHostView

https://chromium-review.googlesource.com/c/chromium/src/+/2877924

* 2873469: Compute hashes of .pak files during the build, and check it at runtime.

https://chromium-review.googlesource.com/c/chromium/src/+/2873469

* 2874397: Remove flag to disable microtasks scope consistency checks

https://chromium-review.googlesource.com/c/v8/v8/+/2874397

* 2881471: Remove unneeded trace_event.h includes in headers.

https://chromium-review.googlesource.com/c/chromium/src/+/2881471

* 2844717: [Keyboard Tooltip] Rename RWHV*::SetTooltipText to UpdateTooltipUnderCursor

https://chromium-review.googlesource.com/c/chromium/src/+/2844717

* chore: bump chromium in DEPS to 92.0.4505.0

* chore: update patches

* 2883887: Retire ScopedObserver in /chrome/browser/predictors.

https://chromium-review.googlesource.com/c/chromium/src/+/2883887

* 2883694: Retire ScopedObserver in /chrome/browser.

https://chromium-review.googlesource.com/c/chromium/src/+/2883694

* fixup after merge

* fixup: Remove flag to disable microtasks scope consistency checks

* Temporarily disable setcallhandler-test.js nan test

This test should be renabled once https://github.com/electron/electron/pull/29028 lands

* Use gin_helper::MicrotasksScope instead of v8::MicrotasksScope

* chore: bump chromium in DEPS to 92.0.4506.0

* update patches

* Revert "update patches"

This reverts commit 333ec0d4c205bd3cbee28d2bc3d068871dbb900a.

* Revert "chore: bump chromium in DEPS to 92.0.4506.0"

This reverts commit 2bd52f8cd89b173c8b15a61d74fa7539cdbf574b.

* Fixup: Use gin_helper::MicrotasksScope instead of v8::MicrotasksScope

* Fixup: Use gin_helper::MicrotasksScope instead of v8::MicrotasksScope

Co-authored-by: Jeremy Rose <nornagon@nornagon.net>
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
2021-05-13 21:21:36 -04:00
Milan Burda
a51aaeb28f
refactor: replace v8::Local<T>::Cast() with As<T>() (#29097) 2021-05-12 16:38:21 +09:00
Keeley Hammond
06f51b7283
fix: prevent crash on web-contents creation when error is thrown (#28971)
* fix: prevent crash when error occurs during event emitter CallMethod

* wip: emit error event within trycatch

* fix: handle uncaught exceptions within node on web_contents init

* fix: create gin_helper::CallMethodCatchException

* test: add web-contents create crash to test cases

* test: clean up test data for web-contents crash

Co-authored-by: Jeremy Rose <jeremya@chromium.org>

* fix: convert CatchException to WebContents static helper method

* fix: restore try_catch to callsite

Co-authored-by: Jeremy Rose <jeremya@chromium.org>
2021-05-11 13:57:11 -07:00
Electron Bot
d5f2eb5a81
chore: bump chromium to 92.0.4499.0 (master) (#29046) 2021-05-06 15:01:04 -07:00