Граф коммитов

3402 Коммитов

Автор SHA1 Сообщение Дата
Butkovits Atila d89b519adc Backed out 9 changesets (bug 1620280) for failure at browser_ext_devtools_inspectedWindow_targetSwitch.js. CLOSED TREE
Backed out changeset 8dda1f048067 (bug 1620280)
Backed out changeset 309c0be48745 (bug 1620280)
Backed out changeset 78a06cd336c6 (bug 1620280)
Backed out changeset 74aba83895ce (bug 1620280)
Backed out changeset 6a8126ded6ec (bug 1620280)
Backed out changeset 47a2d6b77270 (bug 1620280)
Backed out changeset 526c067da0c1 (bug 1620280)
Backed out changeset 488f645884ba (bug 1620280)
Backed out changeset 9cffe1c5fb6d (bug 1620280)
2020-10-01 23:32:57 +03:00
Alexandre Poirot d9711aa658 Bug 1667086 - [devtools] Wait for state instead of TRACK_CHANGE events in browser_changes_declaration_remove_ahead.js. r=rcaliman
This is because of bug 1596093, introducing throttling around TRACK_CHANGE
and making its listening less reliable.

Differential Revision: https://phabricator.services.mozilla.com/D91830
2020-10-01 14:43:25 +00:00
Alexandre Poirot 63bd02f077 Bug 1620280 - [devtools] Prevent showing/hiding highlighters when the panels are already destroyed. r=jdescottes
browser_animation_animation-target_select.js was failing on debug builds because of exception during test ends.

Differential Revision: https://phabricator.services.mozilla.com/D91892
2020-10-01 14:22:50 +00:00
Alexandre Poirot fe0eb445f3 Bug 1663614 - Wait for state instead of TRACK_CHANGE events. r=bradwerth
Differential Revision: https://phabricator.services.mozilla.com/D91114
2020-09-24 07:11:28 +00:00
Alexandre Poirot fad9e1690b Bug 1663649 - [devtools] Enable target switching by default. r=jdescottes
Differential Revision: https://phabricator.services.mozilla.com/D91020
2020-09-23 17:50:20 +00:00
Cristina Coroiu 94d6bce87e Bug 1518675 - disable browser_flexbox_container_and_item_accordion_state.js on linux and win for frequent failures r=intermittent-reviewers,jmaher DONTBUILD
Differential Revision: https://phabricator.services.mozilla.com/D90785
2020-09-19 10:08:36 +00:00
Razvan Caliman 20a40b7e0a Bug 1572662 - Remove unnecessary getRuleViewSelectorHighlighterIcon() from tests r=jdescottes
Depends on D90249

These calls to `getRuleViewSelectorHighlighterIcon` appear to [wait for the selector icon to be generated](https://searchfox.org/mozilla-central/rev/0c97a6410ff018c22e65a0cbe4e5f2ca4581b22e/devtools/client/inspector/rules/views/rule-editor.js#162-197) from an async operation. But they don't test anything to do with that DOM structure. Test seem to pass without it.

Differential Revision: https://phabricator.services.mozilla.com/D90250
2020-09-16 14:40:11 +00:00
Razvan Caliman 4137708c26 Bug 1572662 - Update tests for SelectorHighlighter r=jdescottes
Depends on D90248

This patch combines two test helpers into one: removes `getRuleViewSelectorHighlighterIcon()` and folds its logic into `clickSelectorIcon()`.
The other callsites for `getRuleViewSelectorHighlighterIcon()` are removed in D90250.

The augmented `clickSelectorIcon()` will toggle the selector highlighter accordingly (on or off for the given selector depending on its current state). It returns a promise that resolves with the event data from either the "highlighter-hidden" or "highlighter-shown" events emitted by the selector highlighter. Tests check this data for the expected results.

Tests no longer use mocks for selector highlighter. They test the real thing.

Differential Revision: https://phabricator.services.mozilla.com/D90249
2020-09-17 14:00:38 +00:00
Razvan Caliman bfb2186d26 Bug 1572662 - Update logic to toggle SelectorHighlighter from the new React-based Rules view r=jdescottes
Depends on D90247

The new React-based Rules view is a stalled project, but not yet abandoned.
This patch updates the logic to toggle the selector highlighter so it doesn't fall too far behind in parity with the legacy but still active Rules view.

Flip this pref to test the new Rules view: `devtools.inspector.new-rulesview.enabled`.
It will add a new Rules panel to the Inspector sidebar at the far right end of the tabs.
To avoid confusion and bugs, disable 3-pane mode so you only see one Inspector sidebar panel at a time.

Differential Revision: https://phabricator.services.mozilla.com/D90248
2020-09-17 12:43:16 +00:00
Razvan Caliman ebfa44cb82 Bug 1572662 - Update logic to toggle SelectorHighlighter from Rules view r=jdescottes
Depends on D90246

This patch updates the logic to toggle the selector highlighter (icon next to CSS selectors in the Rules view) using the process-agnostic approach introduced in `HighlightersOverlay`.

There are 3 main chunks of logic:

- A) Introduce event delegation in the Rules view (`CssRuleView.handleEvent()`)
- B) Introduce generic handler for highligther events in Rules view (`CssRuleView.handleHighlighterEvent()`)
- C) Toggle the selector highlighter using the `HighlightersOverlay.showHighlighterTypeForNode()`/`HighlightersOverlay.hideHighlighterType()` methods with the `SELECTOR` highlighter type.

### Part A
With Part A, CssRuleView.handleEvent(), we're laying the groundwork to have the Rules view react to events within its DOM tree.

Currently, `HighlightersOverlay` is doing too much. Along with managing highlighters, it acts as an event delegate for the Rules view and Computed view via [HighlightersOverlay.addToView()](https://searchfox.org/mozilla-central/rev/0c97a6410ff018c22e65a0cbe4e5f2ca4581b22e/devtools/client/inspector/shared/highlighters-overlay.js#415-428). This adds [cumbersome logic to check the target](https://searchfox.org/mozilla-central/rev/0c97a6410ff018c22e65a0cbe4e5f2ca4581b22e/devtools/client/inspector/shared/highlighters-overlay.js#1402-1428) of an event in order to know whether to react to it. This isn't wrong per-se, but it concentrates DOM knowledge from a broad part of the Inspector away from where it is generated.

Ideally, `HighlightersOverlay` should only manage highlighters. It should be called from various endpoints without regard to who is calling and in reaction to which events.

The intent is to reuse this `CssRuleView.handleEvent()` for:
- toggling the CSS Transforms Highlighter by reacting to mouseover events from corresponding CSS values
- toggling the Flexbox / Grid / Shapes highlighters by reacting to clicks on corresponding swatch icons next to CSS values

### Part B
Part B, `CssRuleView.handleHighlighterEvent()`, adds a generic highlighter event handler to the Rules view. Checking the event name and highlighter type, the Rules view can update itself in reaction to highlighters triggered from elsewhere in the Inspector.

In this patch, we're using it to toggle the active CSS class name on the selector highlighter icon in response to "highlighter-shown" / "highlighter-hidden" events of the `SELECTOR` highlighter type.

Probably a bit overkill here. But it gets more useful with the Flexbox and Grid Highlighters which have call sites in multiple places with indicators that need to be reconciled:

- Flex/Grid badges in Markup view
- Checkboxes in Layout panel
- Swatch icons for Flex and Grid in Rules view

### Part C
Part C replaces the legacy toggling logic for selector highlighter with the abstract methods in `HighligthersOverlay`, does some slight clean-up, and fixes some bugs in the previous implementation.

All CSS rules matching the same selector will be marked when the selector is active (see inline comment)
When editing a selector, the selector highlighter for another CSS rule will no longer be hidden (see inline comment)

Differential Revision: https://phabricator.services.mozilla.com/D90247
2020-09-18 10:34:08 +00:00
Kriyszig d79006ce23 Bug 1653520 - Remove code replication in the compatibility actor by moving UserSettings to shared folder r=daisuke,mtigley,devtools-backward-compat-reviewers
Instead of replicationg the browser list fetch using the
preference on the server side, we send the browser list from the
client side to the CompatibilityActor to get the declaration block
compatibility issues.
This way the pref setting is retained completely on the client
side and server doesn't have code duplication.

Differential Revision: https://phabricator.services.mozilla.com/D87613
2020-09-15 14:26:39 +00:00
Kriyszig da1f86f883 Bug 1657537 - Part 2 - Move MDNCompatibility library and related files to devtools/server/actors/compatibility r=daisuke,mtigley
This moves the MDNCompatibility library and the related datasets
and tests to the server side. It also moves the compatibility actor
file intot he compatibility directory.
The links to these files have been updated and the library tests have
been moved to the new location.

Differential Revision: https://phabricator.services.mozilla.com/D86521
2020-09-15 14:26:36 +00:00
Kriyszig 4825b53af6 Bug 1657537 - Part 1 - Move the ISSUE_TYPE property to devtools/shared/constants.js r=mtigley
Most of the client side imports from the MDNCompatibility library
is to access the MDNCompatibility.ISSUE_TYPE property.
This patch moves the property into devtools/shared/constants.js
from where it can be accessed on both the client and server side.

Differential Revision: https://phabricator.services.mozilla.com/D86519
2020-09-15 14:26:23 +00:00
Razvan Caliman 6d25af4eda Bug 1646028 - Rename show/hide events for CssTransformHighlighter to avoid conflicts with generic highlighter events. r=jdescottes
Depends on D85863

Follow-up for code review https://phabricator.services.mozilla.com/D81526#inline-471516

Renaming existing events emitted on behalf of `CssTransformHighlighter` to avoid conflict and confusion with the generic show/hide highlighter events introduced in HighlightersOverlay. When migrating the CssTransformHighlighter to the Fission-ready highlighters approach, these event names will go away completely.

Differential Revision: https://phabricator.services.mozilla.com/D89570
2020-09-10 12:00:17 +00:00
Razvan Caliman 7a1fde5f19 Bug 1646028 - Hide the correct Box Model Highlighter before a node screenshot. r=jdescottes
Depends on D85862

Differential Revision: https://phabricator.services.mozilla.com/D85863
2020-09-10 11:57:58 +00:00
Razvan Caliman dc11adf8a2 Bug 1646028 - Fix Inspector tests using node reps to use Box Model Highlighter r=jdescottes
Depends on D85861

Differential Revision: https://phabricator.services.mozilla.com/D85862
2020-09-10 11:57:25 +00:00
Razvan Caliman b5059faeb3 Bug 1646028 - Update Animation Inspector to use Box Model Highlighter r=jdescottes
Depends on D85860

Differential Revision: https://phabricator.services.mozilla.com/D85861
2020-09-10 11:57:12 +00:00
Razvan Caliman c16d2d8551 Bug 1646028 - Update Box Model diagram to use Box Model Highlighter. r=jdescottes
Depends on D85859

The Box Model diagram in the Layout sidebar panel of the Inspector shows a Box Model Highlighter on hover over its components parts: margin, border, padding, content.

This patch routes the calls to the highlighter to use the approach introduced in `HighlightersOverlay` in D81526

Differential Revision: https://phabricator.services.mozilla.com/D85860
2020-09-10 11:57:09 +00:00
Razvan Caliman ee0de8141e Bug 1646028 - Update Markup view to use Box Model Highlighter. r=jdescottes
Depends on D85858

The Markup view uses the highlighter in a few places:
- while hovering over nodes in the node tree
- while hovering over nodes in the breadcrumbs view under the node tree
- after clicking a node from the node tree, a highlighter is shown, then it is automatically hidden after a delay

This patch routes all calls to show and hide the highlighter to the newly implemented approach in `HighlightersOverlay` which ensures hiding existing instances before showing others regardless of target.

A slight change is made in `HighlightersOverlay` to allow passing in an option to automatically hide the highlighter after a delay. This removes the need for discrete handling of timers within the markup view (removes [_brieflyShowBoxModel](https://searchfox.org/mozilla-central/source/devtools/client/inspector/markup/markup.js#742-756)) and enables reusing this mechanism with the Node Picker after picking (see `onPickerPicked` in [this diff](https://phabricator.services.mozilla.com/D81528?vs=321451&id=332813#toc) from D81528)

`HighlightersOverlay.showHighlighterTypeForNode()` no longer skips duplicate calls with the same highlighter type and nodeFront if the options provided are different between calls.  This supports scheduling autohide on an already visible highlighter. Use case: in the node tree, hover over a node (shows highlighter), then click on the node (shows highlighter again, but schedules autohide after a delay)

NOTE: This automatic hiding after a delay can cause intermittent test failures. Slow running tests can find themselves without a highlighter midway through the checks. To mitigate this, while testing, highlighters are not automatically hidden.  See `HIGHLIGHTER_AUTOHIDE_TIMER` in [this diff](https://phabricator.services.mozilla.com/D81528?vs=321451&id=332813#toc) from D81528. Tests which explicitly check the autohide behavior can reinstate `inspector.HIGHLIGHTER_AUTOHIDE_TIMER`.

Tests are updated to invoke actual highlighters and listen to their events. No more mocking.

Differential Revision: https://phabricator.services.mozilla.com/D85859
2020-09-10 11:55:57 +00:00
Razvan Caliman e66da30f07 Bug 1646028 - Add test helpers for waiting on highlighter events r=jdescottes
Depends on D81528

Differential Revision: https://phabricator.services.mozilla.com/D85858
2020-09-10 11:55:03 +00:00
Razvan Caliman c8f858e552 Bug 1646028 - Update Node Picker to use Box Model Highlighter. r=ochameau,jdescottes
Depends on D81526

This patch updates tests pertaining only to node picker behavior. Run one-by-one, they're all expected to pass.

However, running the whole Inspector test suite at this point in the commit series will fail some other tests because:
- we're updating shared test helpers here without also updating the other tests;
- there is inter-dependence in the other tests between node picker and markup view which is being migrated to the new highlighters approach in D81530

The rest of the tests are getting updated in the subsequent patches in this commit series.

Differential Revision: https://phabricator.services.mozilla.com/D81528
2020-09-10 11:54:25 +00:00
Razvan Caliman 8e4b6b2a5b Bug 1646028 - Add generic highlighter manager to HighlightersOverlay. r=ochameau
Depends on D81525

Introduced a centralized way in `HighlightersOverlay` to invoke highlighters by type, automatically managing previously active highlighters.

First some context.
`HighlightersOverlay` is a bit of a misnomer. It already does a few things:
- provides methods to manually invoke some highlighters (Flex/Grid/Shapes/BoxModel)
- provides a way to delegate mouse events from Rules view / Computed view / Markup and invoke highlighters based on the event's target node
- manages state of Flex/Grid highlighters to be able to restore them on page refresh
- exposes the node that is highlighted by a particular highlighter
- misc handlers for events that require hiding highlighters by type (ex mutation events)

The changes in this patch add the core functionality which will automatically manage the visibility of highlighters regardless of their node's host frame:
- `this._activeHighlighters` is a Map which maps a highlighter type to the currently visible highlighter instance and its corresponding `NodeFront`
- `showHighlighterTypeForNode(type, nodeFront, options)` invokes a highlighter type for a given `NodeFront` while toggling off any existing highlighter for that type. For situations where multiple highlighters of the same type can be visible at the same time (ex: Grid), this is where we could manage their visibility.
- `hideHighlighterType(type)` hides all highlighters of a given type; can be followed-up with a more specific `hideHighlighterTypeForNode()` when needed
- `getNodeForActiveHighlighter(type)` returns the `NodeFront` currently highlighted by a highlighter type. This is an abstracted replacement for `flexboxHighlighterShown`, `geometryEditorHighlighterShown`, etc.

##### Accommodation for tests

To mitigate the fact that many tests and some consumers expect [exact event names](https://searchfox.org/mozilla-central/search?path=&q=-highlighter-shown) to be fired, like "box-model-highlighter-shown", instead of generic shown/hidden events with the highlighter type property as event data, we introduce a temporary map, `HIGHLIGHTER_EVENTS`, from which we pick the event to fire according to the highlighter type. As we progress in refactoring, the intent is for this map to slowly go away.


##### Intent for refactoring

The intent is for all client-side consumers to invoke highlighters via these methods. For example:
```
this.inspector.highlighters.showHighlighterTypeForNode(
      "BoxModelHighlighter",
      nodeFront
    )
```

See another example of this in the migration of `FlexboxHighligther` in D79694.

##### Future plans

In the medium-term, it's likely we'll move this part of `HighligthersOverlay` from inspector to toolbox and rename it `HighlightersManager`. This way, other consumers, like Debugger and Console can also use it [instead of the existing approach](https://searchfox.org/mozilla-central/rev/027893497316897b8f292bde48dbb6da2391a331/devtools/client/framework/toolbox.js#3503-3557). Haven't attempted this yet. Pending updates to the Flexbox, Grid, Shapes and CSS Transform highlighters so when we migrate paths from `inspector.highlighters` to ️ `toolbox.highlighters` is done in one go for all tests and consumers.

Differential Revision: https://phabricator.services.mozilla.com/D81526
2020-09-10 12:00:34 +00:00
Alexandre Poirot e3fcd6b59f Bug 1663873 - Unwatch for resources when closing the inspector. r=jdescottes
Differential Revision: https://phabricator.services.mozilla.com/D89559
2020-09-09 11:55:02 +00:00
Julian Descottes 193ac19715 Bug 1663896 - Always wait for _watchAllTargets to resolve in DevTools ResourceWatcher r=ochameau
Differential Revision: https://phabricator.services.mozilla.com/D89583
2020-09-09 14:52:13 +00:00
Julian Descottes 7c18c7b9c9 Bug 1635461 - Use ResourceWatcher for root-node resources in MarkupView and HighlightersOverlay r=ochameau
Depends on D83311

Differential Revision: https://phabricator.services.mozilla.com/D86160
2020-09-09 16:08:21 +00:00
Julian Descottes 20769b1457 Bug 1635461 - Retrieve root NodeFront from Inspector::onResourceAvailable r=rcaliman
Depends on D83310

Differential Revision: https://phabricator.services.mozilla.com/D83311
2020-09-09 16:08:05 +00:00
Julian Descottes a034fbc33c Bug 1635461 - Rewrite Inspector::_getDefaultNodeForSelection as an async method r=rcaliman
Differential Revision: https://phabricator.services.mozilla.com/D83310
2020-09-09 16:07:19 +00:00
Alexandre Poirot ebe9679c75 Bug 1663636 - Prevent trying to fetch font faces of destroyed node fronts. r=jdescottes
This isn't really related to EventLoop, but this is another exception thrown when running DAMP.
This time related to a request made against an already destroyed NodeFront.

Differential Revision: https://phabricator.services.mozilla.com/D89451
2020-09-08 16:31:03 +00:00
Alexandre Poirot aea309243d Bug 1663567 - Fix browser_inspector_fission_frame_navigation.js failure on fission. r=jdescottes
`navigateIframeTo` now returns a resource object.

Differential Revision: https://phabricator.services.mozilla.com/D89438
2020-09-08 11:35:37 +00:00
Alexandre Poirot 8dd8e4b254 Bug 1660268 - Pass list of resources instead of unique resource from ResourceWatcher. r=nchevobbe
Here, I've tried to be especially careful about replacing `return` by `continue` in the added for..loops.

Differential Revision: https://phabricator.services.mozilla.com/D87768
2020-09-07 21:13:02 +00:00
Alexandre Poirot e61c347424 Bug 1660268 - Read targetFront from resource instead of onResource*** functions. r=nchevobbe
Differential Revision: https://phabricator.services.mozilla.com/D87767
2020-09-07 20:58:14 +00:00
Alexandre Poirot 0b62c083a6 Bug 1660268 - Read resourceType from resource instead of onResource*** functions. r=nchevobbe
Differential Revision: https://phabricator.services.mozilla.com/D87766
2020-09-07 20:58:12 +00:00
Csoregi Natalia 3034124827 Backed out 3 changesets (bug 1660268) for failures on browser_ext_devtools_network_targetSwitch.js. CLOSED TREE
Backed out changeset 749fda4e5eb1 (bug 1660268)
Backed out changeset 9d4c305f6b88 (bug 1660268)
Backed out changeset 7ec118209790 (bug 1660268)
2020-09-07 21:24:26 +03:00
Alexandre Poirot ecf3f1c8bc Bug 1660268 - Pass list of resources instead of unique resource from ResourceWatcher. r=nchevobbe
Here, I've tried to be especially careful about replacing `return` by `continue` in the added for..loops.

Differential Revision: https://phabricator.services.mozilla.com/D87768
2020-09-07 13:35:31 +00:00
Alexandre Poirot fdb1e4f37e Bug 1660268 - Read targetFront from resource instead of onResource*** functions. r=nchevobbe
Differential Revision: https://phabricator.services.mozilla.com/D87767
2020-09-07 13:35:24 +00:00
Alexandre Poirot b42d571310 Bug 1660268 - Read resourceType from resource instead of onResource*** functions. r=nchevobbe
Differential Revision: https://phabricator.services.mozilla.com/D87766
2020-09-07 13:35:21 +00:00
Emilio Cobos Álvarez 0cc4b1a206 Bug 1663231 - Make @font-face and @counter-style serialization closer other browsers and style rules. r=xidorn
Style rules serialize on one line and so should @font-face blocks.

Part of https://github.com/w3c/csswg-drafts/issues/4828.

Differential Revision: https://phabricator.services.mozilla.com/D89302
2020-09-05 00:42:43 +00:00
Alexandre Poirot 5d89a18f3b Bug 1662066 - Use a single waitFor test helper implementation. r=nchevobbe
Differential Revision: https://phabricator.services.mozilla.com/D88834
2020-09-01 09:11:34 +00:00
manas 7268313809 Bug 1660818 - Add telemetry to track the number of times the scrollable badge is clicked. r=gl
Differential Revision: https://phabricator.services.mozilla.com/D88049
2020-08-31 21:21:29 +00:00
manas e251f1d7ee Bug 1660847 - Add test for scrollable badge click functionality. r=gl
Differential Revision: https://phabricator.services.mozilla.com/D88099
2020-08-27 21:38:00 +00:00
Daisuke Akatsuka 5341051fc9 Bug 1634045: Add a README for the compatibility panel. r=rcaliman,Honza
Differential Revision: https://phabricator.services.mozilla.com/D87981
2020-08-24 11:19:47 +00:00
manas 071d9177e5 Bug 1657680 - Make the scrollable badge clickable and add click handler. r=gl,jdescottes,bradwerth
Differential Revision: https://phabricator.services.mozilla.com/D86245
2020-08-22 09:12:12 +00:00
Narcis Beleuzu 4751b29785 Backed out changeset ed74d4e4b273 (bug 1657680) for dt failure on browser_markup_overflow_badge.js 2020-08-22 04:42:50 +03:00
manas 88e461c163 Bug 1657680 - Make the scrollable badge clickable and add click handler. r=gl,jdescottes,bradwerth
Differential Revision: https://phabricator.services.mozilla.com/D86245
2020-08-21 22:27:18 +00:00
Julian Descottes 8853c00813 Bug 1659866 - Move server-side devtools pref for Compatibility panel to modules/libpref/init/all.js r=daisuke
Depends on D87603

Differential Revision: https://phabricator.services.mozilla.com/D87611
2020-08-19 22:34:22 +00:00
Kriyszig f7e148af42 Bug 1657984 - Part 2 - Test the telemetry for CSS Compatibility Tooltip r=daisuke,mtigley
We check if telemetry "devtools.tooltip.shown" is set for label
"css-compatibility" once the tooltip is toggled visible during
the test.

Differential Revision: https://phabricator.services.mozilla.com/D86403
2020-08-12 02:41:48 +00:00
Kriyszig 8e3c67669b Bug 1657984 - Part 1 - Add telemetry for CSS Compatibility Tooltip r=daisuke,mtigley
Based on initital implementation of inactive css tooltip telemetry
implementation in D32810
We record toggling of tooltip using `sendOpenScalarToTelemetry`
against the label "css-compatibility".

Differential Revision: https://phabricator.services.mozilla.com/D86402
2020-08-11 23:10:16 +00:00
Julian Descottes f05829aa08 Bug 1629890 - Use Front/Actor::isDestroyed to replace actorID checks r=nchevobbe
Depends on D86325

Differential Revision: https://phabricator.services.mozilla.com/D86356
2020-08-12 11:33:44 +00:00
Kriyszig 03380e2a78 Bug 1658356 - Fix the incorrect object key for the Tooltip message ID r=daisuke,mtigley
The key of the object is incorrectly used as `css-compatibility-experimental-supported-message`
instead of `experimental-supported`. This leads to the l10n translation
for undefined msgId leading to failure of appearance of tooltip.
This patch fixes the problem and adds a test to prevent regression.

Differential Revision: https://phabricator.services.mozilla.com/D86584
2020-08-11 16:48:18 +00:00
Daisuke Akatsuka d9acff03ab Bug 1644194: Implement CSS change watcher. r=ochameau
Differential Revision: https://phabricator.services.mozilla.com/D85239
2020-08-10 23:32:28 +00:00