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

137 Коммитов

Автор SHA1 Сообщение Дата
Ryan VanderMeulen 3611a7607d Merge inbound to m-c. a=merge 2016-08-31 22:33:17 -04:00
Kartikaya Gupta 114ff898bb Bug 1299488 - Remove TabParent::InjectTouchEvent as it is unused but error-prone. r=botond
MozReview-Commit-ID: EVBRK70veT1
2016-08-31 16:54:23 -04:00
Andreas Tolfsen e3a3466f75 Bug 1244425 - Avoid CPOW when setting file array on <input type=file>; r=automatedtester
This removes the need to use a CPOW when sending keys to <input type=file>
elements.  It was previously not possible to constructo File objects in
privileged content space, but this now appears fixed.

MozReview-Commit-ID: 8XOVsDdypwC

--HG--
extra : rebase_source : 8d4329c4c6a64ac717fc5d54dc42c8eb136f5e7f
2016-08-30 12:46:01 +01:00
Andreas Tolfsen 0f34b42611 Bug 1280947 - Dispatch DOM change event on appending file to input; r=automatedtester
MozReview-Commit-ID: 6SC01AEkuTs

--HG--
extra : rebase_source : ee4ed323e024bf6fdcf9a28ab7f44763c7475c8c
2016-08-25 14:18:04 +01:00
Andreas Tolfsen a6a86c1771 Bug 1255955 - Rename a11y functions check* to assert*; r=automatedtester
"Check" is a fine word but with functions which primary purpose is to
throw an error internally we should use "assert" to make the reprecussions
of using them crystal clear.

MozReview-Commit-ID: Kef4R8y8fiV

--HG--
extra : rebase_source : eb22beb7a33e593f34b3d24ecdaaa7f99d8e5f87
2016-08-05 11:43:40 +01:00
Andreas Tolfsen 175975b04b Bug 1280300 - Support navigation by fragment; r=automatedtester
Adds support for navigating to a fragment on the currenty visible document
without waiting for a DOM event that the document has been fully loaded.

This addresses https://github.com/mozilla/geckodriver/issues/150.

MozReview-Commit-ID: 7uiPT5cjGQE

--HG--
extra : rebase_source : f9152a6623a25c17e10dc3bc6552b8e635c21317
2016-07-19 18:47:33 +01:00
David Burns 8ae5a3c2be Bug 1288863: Return platformName and browserVersion as lowercase r=ato
Currently Marionette returns directly from appInfo where the webdriver
specification mandates that we return lowercase for those. See
http://w3c.github.io/webdriver/webdriver-spec.html#capabilities

MozReview-Commit-ID: 4UrOcYRuREK

--HG--
extra : rebase_source : b47a4be6f4eb17e3bf9caf8542cc2f03582df946
2016-07-26 10:13:35 +01:00
Mike Conley d9c28dead6 Bug 1261842 - Make sure Marionette can handle the redirect and error page cases. r=automatedtester
With the initial browser defaulting to remote, there's a greater likelihood
that the DOMContentLoaded event that is handled in the "get" function will
be fired by the initial about:blank instead of the actual desired page.

get() currently works around this by ensuring that the URL of the loaded
page matches the requested one when DOMContentLoaded fires. Unfortunately,
this doesn't work for pages that redirect via their HTTP headers (and will
therefore not fire DOMContentLoaded).

This patch fixes things by adding an nsIWebProgressListener that ensures
that the requested page has started to load before paying any attention
to the DOMContentLoaded events. This handles the redirect case. We also
compare against nsIChannel.originalURI for the about: redirect case.

For neterror pages (which never open channels, and therefore are not
seen by the nsIWebProgressListener), we just check that the page that
we attempted to reach was the one that was requested.

MozReview-Commit-ID: Gbbmfwat46s

--HG--
extra : rebase_source : 1848cd67757be8780f9e50253dc0ee1131467257
2016-07-20 10:03:52 -04:00
Mike Conley 69b9435ec3 Bug 1261842 - Make Marionette listener ensure that the loaded document is the one that was actually requested. r=ato
Before, it was assumed that the next load was the one that the Marionette client had
asked for, when this might not be the case. For example, when a new window opens,
it's possible for the initial about:blank load to be fired in content after the
parent has asked for a page to be loaded.

MozReview-Commit-ID: GPoJgbCvSju

--HG--
extra : rebase_source : 7b4c1638c2fe81a0a37d061a655e35aed0e2daa0
extra : source : b2e910bb1d726562548eba1148a81ec37300fb7b
2016-05-27 16:26:16 -04:00
David Burns 72b6cf6661 Bug 1281397: Correct return types getElementProperty in marionette r=ato
This aligns the return types with the spec and corrects the return type to
what GeckoDriver expects.

MozReview-Commit-ID: 5A63NfpHKXC

--HG--
extra : rebase_source : f6df6893194e78792e541b9e9dd316e4d456af26
2016-06-24 09:25:03 +01:00
Andreas Tolfsen fe3135e034 Bug 1274550 - Return web element from Get Active Element; r=automatedtester
MozReview-Commit-ID: I5WHfJbMfPZ

--HG--
extra : rebase_source : c9ebc8ebfd4450f6ba6320321977472fe40e2675
2016-05-26 13:04:22 +01:00
Andreas Tolfsen ed4aa96ea4 Bug 1274274 - Rename element store clear function to delete; r=automatedtester
This matches the Map data structure in JavaScript.

MozReview-Commit-ID: 5l2xOb4W2BC

--HG--
extra : rebase_source : 706f8e60fbfc364e56da83f15b9e1a4a94af9c9a
2016-05-20 16:54:42 +01:00
Andreas Tolfsen 6686a00fd4 Bug 1274274 - Rename element manager; r=automatedtester
Renames instances of `elementManager' to `seenEls' for brevity.  Also the
word "manager" does not really explain what purpose it fulfills.

MozReview-Commit-ID: 4EUN9utPoZS

--HG--
extra : rebase_source : 52bda0d83c50ffb96e72145ee54827c115596462
2016-05-20 16:49:19 +01:00
Andreas Tolfsen fb76d98e20 Bug 1274274 - Disassociate wrapValue from element store; r=automatedtester
Moves ElementManager#wrapValue to the testing/marionette/element.js
module level and renames it to toJson.

MozReview-Commit-ID: GJBl2L1GRxZ

--HG--
extra : rebase_source : 5fc81a6b0ebfbd6a12557b3b746e6968c235d674
2016-05-20 16:32:31 +01:00
Andreas Tolfsen 76e7173ffa Bug 1274274 - Disassociate convertWrappedArguments from element store; r=automatedtester
Moved ElementManager#convertWrappedArguments to the
testing/marionette/element.js module scope and renamed it to fromJson.

MozReview-Commit-ID: JMTZcG0JSUE

--HG--
extra : rebase_source : 613faca6a8c81b1ff435c538b0a7347ae548c288
2016-05-20 16:16:56 +01:00
Andreas Tolfsen 0f872f6301 Bug 1274274 - Refactor seen element store; r=automatedtester
Renames ElementManager to element.Store, exposing it on the
testing/marionette/element.js module.  Shortens getKnownElement(uuid)
to get(uuid).  Introduces new method has(uuid) to replace some unnecessary
checks in testing/marionette/driver.js and testing/marionette/listener.js.

MozReview-Commit-ID: D5qAlqrIxi

--HG--
extra : rebase_source : 22fda922e4c5f7bfcd1a5bcbcec6ae1003411535
2016-05-20 15:07:21 +01:00
Andreas Tolfsen c47354a3ef Bug 1274274 - Decouple element retrieval methods; r=automatedtester
Moves element retrieval methods from ElementManager to the
testing/marionette/element.js module itself.  This means some more
work needs to be done by the caller, but avoids bloat by ensuring
ElementManager does not end up as a super-object.

MozReview-Commit-ID: 5LGe0vpSWwS

--HG--
extra : rebase_source : d7f4bd64cd1a92ad20a33496708d3f0136531d9f
2016-05-20 13:28:27 +01:00
David Burns 20c4d3ef26 Bug 1274408: Remove emulator support from Marionette in Gecko r=ato
The emulator code was originally hacks to allow us to instrument the emulator
from JavaScript in the B2G world. Since we no longer support this it is being
removed.

MozReview-Commit-ID: 3XDk21SFfUc

--HG--
extra : rebase_source : 63bc081c3ab37894b97b873fe142ee068b609318
2016-05-24 10:22:54 +01:00
Andreas Tolfsen 47fd1a56f6 Bug 1272653 - Make Get Element Attribute spec compatible; r=automatedtester
MozReview-Commit-ID: K5PsnmRrDJk
2016-05-24 10:34:23 +01:00
Andreas Tolfsen adc408c1da Bug 1272653 - Implement WebDriver command Get Element Property; r=jgriffin
MozReview-Commit-ID: 5lfZkSYPthb
2016-05-24 10:34:17 +01:00
Andreas Tolfsen 565d902519 Bug 1271596 - Remove unused emulator command functions; r=automatedtester
Bug 1123506 rewrote all the emulator handling in the listener, and a few
of the emulator related functions in testing/marionette/listener.js are
no longer needed.

MozReview-Commit-ID: 1iTjuZwcOJf

--HG--
extra : rebase_source : 088e6bbdcd52f906f2df1677a926654c1d50fc81
2016-05-10 11:50:57 +01:00
Andreas Tolfsen 1d15796afc Bug 1123506 - Evaluate scripts in content with lasting side-effects; r=automatedtester
In order to achieve WebDriver parity, Marionette needs the ability to
evaluate scripts in content space with lasting side-effects.  This means
that state modifications should affect behaviour and state of the browsing
context, and such transgress the boundaries of the sandbox.

This patch brings a new script evaluation module that is shared between
code in chrome- and content space.  This brings the number of unique
script evaluation implementations in Marionette down from six to one.

evaluate.sandbox provides the main entry-point for execution.  It is
compatible with existing Marionette uses of Execute Script and Execute
Async Script commands in Mozilla clients, but also provides a new stateful
sandbox for evaluation that should have lasting side-effects.

It is not expected that Mozilla clients, such as testing/marionette/client
and the Node.js client in Gaia, should have to change as a consequence
of this change.

A substantial change to the script's runtime environment is that many
globals that previously existed are now only exposed whenever needed.
This means for example that Simple Test harness functionality (waitFor,
ok, isnot, is, &c.) is only available when using a sandbox augmented
with a Simple Test harness adapter.

Conversely, this patch does not expose marionetteScriptFinished as a
callback to asynchronous scripts for sandboxes which sandboxName parameter
is undefined, because this is what determines if the script should be
evaluated under WebDriver conformance constraints.  In all other cases
where sandboxName _is_ defined, the traditional marionetteScriptFinished
et al. runtime environment is preserved.

MozReview-Commit-ID: 8FZ6rNVImuC
2016-05-09 16:08:17 +01:00
Wes Kocher 6586a41d87 Backed out changeset 08754cfc737c (bug 1123506) for various test bustage due to ` JavascriptException: JavascriptException: ReferenceError: __marionetteParams is not defined` CLOSED TREE 2016-05-06 15:12:14 -07:00
Andreas Tolfsen 2b77034fa3 Bug 1123506 - Evaluate scripts in content with lasting side-effects; r=automatedtester
In order to achieve WebDriver parity, Marionette needs the ability to
evaluate scripts in content space with lasting side-effects.  This means
that state modifications should affect behaviour and state of the browsing
context, and such transgress the boundaries of the sandbox.

This patch brings a new script evaluation module that is shared between
code in chrome- and content space.  This brings the number of unique
script evaluation implementations in Marionette down from six to one.

evaluate.sandbox provides the main entry-point for execution.  It is
compatible with existing Marionette uses of Execute Script and Execute
Async Script commands in Mozilla clients, but also provides a new stateful
sandbox for evaluation that should have lasting side-effects.

It is not expected that Mozilla clients, such as testing/marionette/client
and the Node.js client in Gaia, should have to change as a consequence
of this change.

A substantial change to the script's runtime environment is that many
globals that previously existed are now only exposed whenever needed.
This means for example that Simple Test harness functionality (waitFor,
ok, isnot, is, &c.) is only available when using a sandbox augmented
with a Simple Test harness adapter.

Conversely, this patch does not expose marionetteScriptFinished as a
callback to asynchronous scripts for sandboxes which sandboxName parameter
is undefined, because this is what determines if the script should be
evaluated under WebDriver conformance constraints.  In all other cases
where sandboxName _is_ defined, the traditional marionetteScriptFinished
et al. runtime environment is preserved.

MozReview-Commit-ID: 8FZ6rNVImuC

--HG--
extra : rebase_source : 38cc7b1e374fd42afb213133fd1a5e11bf8bdd95
2016-02-26 14:36:39 +00:00
Kim Brown 3d3fc8c2d4 Bug 905650 - Added ability to get the hash of a screenshot; r=ato
MozReview-Commit-ID: 3NL7nkqpG6I

--HG--
extra : rebase_source : 1126849b99aaa622c402d350bc6d67ac192e4b7a
2016-04-17 21:37:14 -04:00
Andreas Tolfsen f6bfff23ab Bug 1257523 - Remove unused imports; r=automatedtester
MozReview-Commit-ID: K12laAg8zLy

--HG--
extra : rebase_source : 01f495019e69ac859b3f7eb7653a14653477bb93
2016-03-17 14:29:41 +00:00
Andreas Tolfsen 158557f87b Bug 1245064 - Pass all capabilities to listener; r=automatedtester
MozReview-Commit-ID: 2UgKKAUowM4

--HG--
extra : rebase_source : 5ffd21c06fb98ac908d5118f55736b5f4271ff95
2016-03-04 18:02:56 +00:00
Andreas Tolfsen e3854ffb41 Bug 1245064 - Implement element pointer-interactability; r=automatedtester
Implements the WebDriver pointer-interactability algorithm described in
http://w3c.github.io/webdriver/webdriver-spec.html#dfn-interactable-element.

The specification compatible behaviour is enabled only when the client
requests the capability specificationLevel >= 0.

MozReview-Commit-ID: BP60SGj49OW

--HG--
extra : rebase_source : d84d38510e28ab5e0debce2051e336e1fd3f0f86
2016-03-04 16:44:38 +00:00
Andreas Tolfsen 71b94d4505 Bug 1245064 - Refactor interaction- and accessibility API; r=automatedtester
MozReview-Commit-ID: LblRZz8KqPx

--HG--
extra : rebase_source : fbb7995924c7e2707e2aaa2293b8a5c51fc563bc
2016-03-03 13:58:13 +00:00
Carsten "Tomcat" Book 84efe80138 Backed out changeset 4dec8d87c105 (bug 1245064) for marionette bustage 2016-03-09 14:03:28 +01:00
Carsten "Tomcat" Book 38c337c81b Backed out changeset 1dd0bcc1c45e (bug 1245064) 2016-03-09 14:03:07 +01:00
Carsten "Tomcat" Book b685a90a5e Backed out changeset 2483596f62ef (bug 1245064) 2016-03-09 14:03:04 +01:00
Andreas Tolfsen 64ff8c0c0e Bug 1245064 - Pass all capabilities to listener; r=automatedtester
MozReview-Commit-ID: 2UgKKAUowM4

--HG--
extra : rebase_source : aae2e03f133b21ab1e65b51aebdec155a2990beb
2016-03-04 18:02:56 +00:00
Andreas Tolfsen ed18a3de7d Bug 1245064 - Implement element pointer-interactability; r=automatedtester
Implements the WebDriver pointer-interactability algorithm described in
http://w3c.github.io/webdriver/webdriver-spec.html#dfn-interactable-element.

The specification compatible behaviour is enabled only when the client
requests the capability specificationLevel >= 0.

MozReview-Commit-ID: BP60SGj49OW

--HG--
extra : rebase_source : 357accaa38b44704fcaf839aa50e1e29af0b3f99
2016-03-04 16:44:38 +00:00
Andreas Tolfsen fcdf164815 Bug 1245064 - Refactor interaction- and accessibility API; r=automatedtester
MozReview-Commit-ID: LblRZz8KqPx

--HG--
extra : rebase_source : 347210842fae698acde760c2733dd8d882a09c25
2016-03-03 13:58:13 +00:00
Andreas Tolfsen 1a08c44699 Bug 1253244 - Use element.coordinates in listener; r=automatedtester
MozReview-Commit-ID: 4sWZNXrenqZ

--HG--
extra : rebase_source : 8a212826ff0dbe4a2555a9712f7fd7039f7ad5ff
2016-03-03 14:28:40 +00:00
Andreas Tolfsen 772f8fbb0b Bug 1253248 - Use element.Strategy enum consistently; r=automatedtester
Removes the exported constants from testing/marionette/element.js and
introduces the migrates to using the element.Strategy enum consistently
throughout Marionette.

The supported strategies array passed into ElementManager's ctor has
also received some much needed attention and now actually works.

MozReview-Commit-ID: LPuDX0aishM

--HG--
extra : rebase_source : bb06ea5a25d9a0dbcd6f3e1311d31df95cd4e26d
2016-03-04 12:01:09 +00:00
Andreas Tolfsen a1495c253c Bug 1253236 - Remove window argument from element.isVisible; r=automatedtester
MozReview-Commit-ID: ITzY9RXjJCG

--HG--
extra : rebase_source : 7954e5d2891a8d214fdbf00ea1b0b62acc0482b3
2016-03-03 14:20:39 +00:00
Andreas Tolfsen 4a0bcbbee4 Bug 1253236 - Rename element.checkVisible to isVisible; r=automatedtester
MozReview-Commit-ID: 1fkH93OXjWF

--HG--
extra : rebase_source : 39c628d9ca7ef1713a68e620a8c759813c5415fc
2016-03-03 14:18:52 +00:00
Andreas Tolfsen 278e4c6847 Bug 1251701 - Store imported scripts in memory; r=jgriffin
This bug is also a dependency for scheduling Mn-e10s tests on Windows 7
(bug 1251351).

MozReview-Commit-ID: 2jE4C99d1MX

--HG--
extra : rebase_source : 96c9fad49538fdadcc8f001aeef5926e82419001
2016-02-29 18:52:30 +00:00
Andreas Tolfsen 46bb47edff Bug 1250102 - Employ new element location API; r=automatedtester
MozReview-Commit-ID: K831MhwAT6X

--HG--
extra : rebase_source : 6f3edeb2b42d8168887738ce4863cc8e15bf5d05
2016-02-23 15:19:21 +00:00
Andreas Tolfsen cb2ec4bbdf Bug 1250102 - Correct exported symbol from testing/marionette/element.js; r=automatedtester
MozReview-Commit-ID: 9naIfpy9HPD

--HG--
extra : rebase_source : dc6b96137ed6c378772477cc36687a1655028ae3
2016-02-23 15:01:12 +00:00
Andreas Tolfsen 04268e1ed9 Bug 1242655 - Have ActionChain#dispatchActions return a promise; r=automatedtester
MozReview-Commit-ID: ITqAH4rVsHc

--HG--
extra : rebase_source : 678d4097585bedde7f12b646106a592cf42598d3
2016-02-22 13:18:13 +00:00
Andreas Tolfsen fddfa9ac45 Bug 1245153 - Rename actions.js to action.js; r=automatedtester
MozReview-Commit-ID: 58v7aMH2deS

--HG--
rename : testing/marionette/actions.js => testing/marionette/action.js
extra : histedit_source : ffe0d88ffcef11c8faf7fc7f3c3432044847afe4
extra : rebase_source : c4b890c3fbcd6952d1c4a63a321a7cf35c5cd1ee
extra : commitid : CvejXEffZ33
extra : source : 1be5f60393a02b47cc21cccd6cc73f5e5dd9bcc7
extra : intermediate-source : 9f3f1c358e47b0851a2789e627b1e385cfa61410
2016-02-03 19:25:28 +00:00
Andreas Tolfsen b96bf07b7f Bug 1245153 - Rename interactions.js to interaction.js; r=automatedtester
MozReview-Commit-ID: F51ENbkcoR2

--HG--
rename : testing/marionette/interactions.js => testing/marionette/interaction.js
extra : histedit_source : 7269fae81673ad9630ad26e4506f978401c28c3f
extra : rebase_source : d2212a7701857f5a3ea37c400cd7cc49479f6bad
extra : commitid : BW8g2i1Wntt
extra : source : c1e0abbfa66e6289b25e3c6d45867c3b627d33d8
extra : intermediate-source : 6da8099573f3c84ab4361c9987441643488baf5b
2016-02-03 19:15:54 +00:00
Andreas Tolfsen c9fdd91435 Bug 1245153 - Rename elements.js to element.js; r=automatedtester
MozReview-Commit-ID: KAGGXOHMvyM

--HG--
rename : testing/marionette/elements.js => testing/marionette/element.js
extra : histedit_source : d76eb69ad2f5781bcd7a4c0cda4f2f3c6abe840c
extra : rebase_source : d7eb17a424f7c542f0081d4ea938bd461f3583ae
extra : commitid : 77YYJxt23TN
extra : source : 80ae953819c81f7aad1c635311fb0ab5517ca1dd
extra : intermediate-source : 63a56310a1b5593eeec4d546c87c9e9c4c04252d
2016-02-03 19:14:10 +00:00
Andreas Tolfsen 85d23f2052 Bug 1245153 - Remove testing/marionette/atoms; r=automatedtester
MozReview-Commit-ID: 1aeRNnvqmcS

--HG--
rename : testing/marionette/atoms/atoms.js => testing/marionette/atom.js
extra : histedit_source : 3f864808e86d7cafbcb9edee3702f9cc16089b76
extra : rebase_source : 8d80f0505b8b0b3779eb04165c98c72f284ce573
extra : commitid : Ekqmuuhp0pC
extra : source : 3edb67388ad6bbdee9f735b2a99d1999a1af0a46
extra : amend_source : 142a6496da5d8c7edb72b27f27944add2ce0dc8d
extra : intermediate-source : 5fe42d498a2a4511b3d479c4d75b078817f05632
2016-02-03 19:00:46 +00:00
Andreas Tolfsen a683538e91 Bug 1245153 - Employ new modules throughout Marionette; r=automatedtester
This change removes almost all the remaining uses of loadSubScript and
global scope pollution.  The only remaining use is for common.js, which
is resolved by a later bug for evaluating scripts.

MozReview-Commit-ID: 96h0yLElauq

--HG--
extra : histedit_source : 70f70a8aeffef3fca18addfa3fca575a9128e11a
extra : rebase_source : c251c58a7a086c606d3d3941adfeee26ecc49504
extra : commitid : 8XlX4zVZQUN
extra : source : 6bb93562a57656e6cc744c3c901a5ec80f9ec4d8
extra : intermediate-source : ad5bf32d8fef351a0bc4d6249bd16a34aa83f548
2016-02-03 18:56:02 +00:00
Carsten "Tomcat" Book 33e27d2555 Backed out 18 changesets (bug 1245153) for multiple test failures
Backed out changeset 18d54b8d4ae8 (bug 1245153)
Backed out changeset 98b6d0c053c0 (bug 1245153)
Backed out changeset c29a348930a4 (bug 1245153)
Backed out changeset f79252e92acc (bug 1245153)
Backed out changeset 9f3f1c358e47 (bug 1245153)
Backed out changeset 3b9e9a027fa7 (bug 1245153)
Backed out changeset 6da8099573f3 (bug 1245153)
Backed out changeset 63a56310a1b5 (bug 1245153)
Backed out changeset 5fe42d498a2a (bug 1245153)
Backed out changeset b3be2d2f3ac1 (bug 1245153)
Backed out changeset ad5bf32d8fef (bug 1245153)
Backed out changeset 68a6dda373d2 (bug 1245153)
Backed out changeset 6ebd9fde50c0 (bug 1245153)
Backed out changeset e41a5b41859a (bug 1245153)
Backed out changeset 048d70070751 (bug 1245153)
Backed out changeset eff85dc0eaa9 (bug 1245153)
Backed out changeset dc6460e0f336 (bug 1245153)
Backed out changeset 36526a2e8b00 (bug 1245153)

--HG--
rename : testing/marionette/event.js => testing/marionette/EventUtils.js
rename : testing/marionette/action.js => testing/marionette/actions.js
rename : testing/marionette/atom.js => testing/marionette/atoms/atoms.js
rename : testing/marionette/element.js => testing/marionette/elements.js
rename : testing/marionette/frame.js => testing/marionette/frame-manager.js
rename : testing/marionette/interaction.js => testing/marionette/interactions.js
2016-02-11 17:05:41 +01:00
Andreas Tolfsen fd1a2f3260 Bug 1245153 - Rename actions.js to action.js; r=automatedtester
MozReview-Commit-ID: 58v7aMH2deS

--HG--
rename : testing/marionette/actions.js => testing/marionette/action.js
extra : commitid : CvejXEffZ33
extra : rebase_source : d7cb58bc1a84b4d96e0a011c36f2be22e72fea4b
extra : source : 1be5f60393a02b47cc21cccd6cc73f5e5dd9bcc7
extra : histedit_source : ffe0d88ffcef11c8faf7fc7f3c3432044847afe4
2016-02-03 19:25:28 +00:00