Răsfoiți Sursa

Merge branch 'master' into t/ckeditor5/479

Aleksander Nowodzinski 7 ani în urmă
părinte
comite
64c839cb8b
92 a modificat fișierele cu 327 adăugiri și 333 ștergeri
  1. 1 1
      packages/ckeditor5-core/.eslintrc.js
  2. 5 6
      packages/ckeditor5-core/.travis.yml
  3. 1 1
      packages/ckeditor5-core/LICENSE.md
  4. 1 1
      packages/ckeditor5-core/lang/translations/ar.po
  5. 1 1
      packages/ckeditor5-core/lang/translations/ast.po
  6. 14 0
      packages/ckeditor5-core/lang/translations/az.po
  7. 1 1
      packages/ckeditor5-core/lang/translations/bg.po
  8. 1 1
      packages/ckeditor5-core/lang/translations/ca.po
  9. 1 1
      packages/ckeditor5-core/lang/translations/cs.po
  10. 1 1
      packages/ckeditor5-core/lang/translations/da.po
  11. 1 1
      packages/ckeditor5-core/lang/translations/de.po
  12. 1 1
      packages/ckeditor5-core/lang/translations/el.po
  13. 1 1
      packages/ckeditor5-core/lang/translations/en-au.po
  14. 1 1
      packages/ckeditor5-core/lang/translations/en.po
  15. 1 1
      packages/ckeditor5-core/lang/translations/eo.po
  16. 1 1
      packages/ckeditor5-core/lang/translations/es.po
  17. 1 1
      packages/ckeditor5-core/lang/translations/et.po
  18. 1 1
      packages/ckeditor5-core/lang/translations/eu.po
  19. 1 1
      packages/ckeditor5-core/lang/translations/fa.po
  20. 1 1
      packages/ckeditor5-core/lang/translations/fi.po
  21. 1 1
      packages/ckeditor5-core/lang/translations/fr.po
  22. 1 1
      packages/ckeditor5-core/lang/translations/gl.po
  23. 1 1
      packages/ckeditor5-core/lang/translations/he.po
  24. 1 1
      packages/ckeditor5-core/lang/translations/hr.po
  25. 1 1
      packages/ckeditor5-core/lang/translations/hu.po
  26. 14 0
      packages/ckeditor5-core/lang/translations/id.po
  27. 1 1
      packages/ckeditor5-core/lang/translations/it.po
  28. 1 1
      packages/ckeditor5-core/lang/translations/ja.po
  29. 1 1
      packages/ckeditor5-core/lang/translations/km.po
  30. 1 1
      packages/ckeditor5-core/lang/translations/kn.po
  31. 1 1
      packages/ckeditor5-core/lang/translations/ko.po
  32. 1 1
      packages/ckeditor5-core/lang/translations/ku.po
  33. 1 1
      packages/ckeditor5-core/lang/translations/nb.po
  34. 1 1
      packages/ckeditor5-core/lang/translations/ne.po
  35. 1 1
      packages/ckeditor5-core/lang/translations/nl.po
  36. 1 1
      packages/ckeditor5-core/lang/translations/no.po
  37. 1 1
      packages/ckeditor5-core/lang/translations/oc.po
  38. 1 1
      packages/ckeditor5-core/lang/translations/pl.po
  39. 1 1
      packages/ckeditor5-core/lang/translations/pt-br.po
  40. 1 1
      packages/ckeditor5-core/lang/translations/pt.po
  41. 1 1
      packages/ckeditor5-core/lang/translations/ro.po
  42. 1 1
      packages/ckeditor5-core/lang/translations/ru.po
  43. 1 1
      packages/ckeditor5-core/lang/translations/sk.po
  44. 1 1
      packages/ckeditor5-core/lang/translations/sq.po
  45. 1 1
      packages/ckeditor5-core/lang/translations/sv.po
  46. 1 1
      packages/ckeditor5-core/lang/translations/tr.po
  47. 1 1
      packages/ckeditor5-core/lang/translations/tt.po
  48. 1 1
      packages/ckeditor5-core/lang/translations/ug.po
  49. 1 1
      packages/ckeditor5-core/lang/translations/uk.po
  50. 1 1
      packages/ckeditor5-core/lang/translations/zh-cn.po
  51. 1 1
      packages/ckeditor5-core/lang/translations/zh.po
  52. 1 1
      packages/ckeditor5-core/src/command.js
  53. 1 1
      packages/ckeditor5-core/src/commandcollection.js
  54. 1 1
      packages/ckeditor5-core/src/editingkeystrokehandler.js
  55. 2 16
      packages/ckeditor5-core/src/editor/editor.js
  56. 1 1
      packages/ckeditor5-core/src/editor/editorconfig.jsdoc
  57. 10 82
      packages/ckeditor5-core/src/editor/editorui.js
  58. 1 48
      packages/ckeditor5-core/src/editor/editorwithui.jsdoc
  59. 1 1
      packages/ckeditor5-core/src/editor/utils/attachtoform.js
  60. 1 1
      packages/ckeditor5-core/src/editor/utils/dataapimixin.js
  61. 1 1
      packages/ckeditor5-core/src/editor/utils/elementapimixin.js
  62. 1 1
      packages/ckeditor5-core/src/pendingactions.js
  63. 1 1
      packages/ckeditor5-core/src/plugin.js
  64. 1 1
      packages/ckeditor5-core/src/plugincollection.js
  65. 1 1
      packages/ckeditor5-core/tests/_utils-tests/articlepluginset.js
  66. 2 25
      packages/ckeditor5-core/tests/_utils-tests/classictesteditor.js
  67. 1 1
      packages/ckeditor5-core/tests/_utils-tests/createsinonsandbox.js
  68. 1 1
      packages/ckeditor5-core/tests/_utils-tests/modeltesteditor.js
  69. 1 1
      packages/ckeditor5-core/tests/_utils-tests/utils.js
  70. 1 1
      packages/ckeditor5-core/tests/_utils-tests/virtualtesteditor.js
  71. 1 1
      packages/ckeditor5-core/tests/_utils/articlepluginset.js
  72. 31 17
      packages/ckeditor5-core/tests/_utils/classictesteditor.js
  73. 150 0
      packages/ckeditor5-core/tests/_utils/memory.js
  74. 1 1
      packages/ckeditor5-core/tests/_utils/modeltesteditor.js
  75. 1 1
      packages/ckeditor5-core/tests/_utils/utils.js
  76. 1 1
      packages/ckeditor5-core/tests/_utils/virtualtesteditor.js
  77. 1 1
      packages/ckeditor5-core/tests/command.js
  78. 1 1
      packages/ckeditor5-core/tests/commandcollection.js
  79. 1 1
      packages/ckeditor5-core/tests/editingkeystrokehandler.js
  80. 1 1
      packages/ckeditor5-core/tests/editor/editor.js
  81. 16 57
      packages/ckeditor5-core/tests/editor/editorui.js
  82. 1 1
      packages/ckeditor5-core/tests/editor/utils/attachtoform.js
  83. 1 1
      packages/ckeditor5-core/tests/editor/utils/dataapimixin.js
  84. 1 1
      packages/ckeditor5-core/tests/editor/utils/elementapimixin.js
  85. 1 1
      packages/ckeditor5-core/tests/manual/article.js
  86. 1 1
      packages/ckeditor5-core/tests/manual/formsubmit.js
  87. 1 1
      packages/ckeditor5-core/tests/manual/pendingactions.js
  88. 1 1
      packages/ckeditor5-core/tests/manual/readonly.js
  89. 1 1
      packages/ckeditor5-core/tests/manual/version-collision.js
  90. 1 1
      packages/ckeditor5-core/tests/pendingactions.js
  91. 1 1
      packages/ckeditor5-core/tests/plugin.js
  92. 1 1
      packages/ckeditor5-core/tests/plugincollection.js

+ 1 - 1
packages/ckeditor5-core/.eslintrc.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 

+ 5 - 6
packages/ckeditor5-core/.travis.yml

@@ -11,17 +11,16 @@ language: node_js
 node_js:
 - '8'
 cache:
-- node_modules
+  yarn: true
 branches:
-   except:
-   - stable
+  except:
+  - stable
 before_install:
 - export DISPLAY=:99.0
 - sh -e /etc/init.d/xvfb start
-- npm config set package-lock false
-- npm i -g npm@^5.7.1
+- npm i -g yarn
 install:
-- npm install @ckeditor/ckeditor5-dev-tests
+- yarn add @ckeditor/ckeditor5-dev-tests
 - ckeditor5-dev-tests-install-dependencies
 script:
 - ckeditor5-dev-tests-travis

+ 1 - 1
packages/ckeditor5-core/LICENSE.md

@@ -2,7 +2,7 @@ Software License Agreement
 ==========================
 
 **CKEditor 5 Core Editor Architecture** – https://github.com/ckeditor/ckeditor5-core <br>
-Copyright (c) 2003-2018, [CKSource](http://cksource.com) Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2019, [CKSource](http://cksource.com) Frederico Knabben. All rights reserved.
 
 Licensed under the terms of [GNU General Public License Version 2 or later](http://www.gnu.org/licenses/gpl.html).
 

+ 1 - 1
packages/ckeditor5-core/lang/translations/ar.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Arabic (https://www.transifex.com/ckeditor/teams/11143/ar/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/ast.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Asturian (https://www.transifex.com/ckeditor/teams/11143/ast/)\n"

+ 14 - 0
packages/ckeditor5-core/lang/translations/az.po

@@ -0,0 +1,14 @@
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+msgid ""
+msgstr ""
+"Language-Team: Azerbaijani (https://www.transifex.com/ckeditor/teams/11143/az/)\n"
+"Language: az\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgctxt "Label for the Save button."
+msgid "Save"
+msgstr "Yadda saxla"
+
+msgctxt "Label for the Cancel button."
+msgid "Cancel"
+msgstr "İmtina et"

+ 1 - 1
packages/ckeditor5-core/lang/translations/bg.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Bulgarian (https://www.transifex.com/ckeditor/teams/11143/bg/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/ca.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Catalan (https://www.transifex.com/ckeditor/teams/11143/ca/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/cs.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Czech (https://www.transifex.com/ckeditor/teams/11143/cs/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/da.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Danish (https://www.transifex.com/ckeditor/teams/11143/da/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/de.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: German (https://www.transifex.com/ckeditor/teams/11143/de/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/el.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Greek (https://www.transifex.com/ckeditor/teams/11143/el/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/en-au.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: English (Australia) (https://www.transifex.com/ckeditor/teams/11143/en_AU/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/en.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language: \n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/eo.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Esperanto (https://www.transifex.com/ckeditor/teams/11143/eo/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/es.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Spanish (https://www.transifex.com/ckeditor/teams/11143/es/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/et.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Estonian (https://www.transifex.com/ckeditor/teams/11143/et/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/eu.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Basque (https://www.transifex.com/ckeditor/teams/11143/eu/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/fa.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Persian (https://www.transifex.com/ckeditor/teams/11143/fa/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/fi.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Finnish (https://www.transifex.com/ckeditor/teams/11143/fi/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/fr.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: French (https://www.transifex.com/ckeditor/teams/11143/fr/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/gl.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Galician (https://www.transifex.com/ckeditor/teams/11143/gl/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/he.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Hebrew (https://www.transifex.com/ckeditor/teams/11143/he/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/hr.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Croatian (https://www.transifex.com/ckeditor/teams/11143/hr/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/hu.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Hungarian (https://www.transifex.com/ckeditor/teams/11143/hu/)\n"

+ 14 - 0
packages/ckeditor5-core/lang/translations/id.po

@@ -0,0 +1,14 @@
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+msgid ""
+msgstr ""
+"Language-Team: Indonesian (https://www.transifex.com/ckeditor/teams/11143/id/)\n"
+"Language: id\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+msgctxt "Label for the Save button."
+msgid "Save"
+msgstr "Simpan"
+
+msgctxt "Label for the Cancel button."
+msgid "Cancel"
+msgstr "Batal"

+ 1 - 1
packages/ckeditor5-core/lang/translations/it.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Italian (https://www.transifex.com/ckeditor/teams/11143/it/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/ja.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Japanese (https://www.transifex.com/ckeditor/teams/11143/ja/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/km.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Khmer (https://www.transifex.com/ckeditor/teams/11143/km/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/kn.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Kannada (https://www.transifex.com/ckeditor/teams/11143/kn/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/ko.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Korean (https://www.transifex.com/ckeditor/teams/11143/ko/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/ku.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Kurdish (https://www.transifex.com/ckeditor/teams/11143/ku/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/nb.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/ckeditor/teams/11143/nb/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/ne.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Nepali (Nepal) (https://www.transifex.com/ckeditor/teams/11143/ne_NP/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/nl.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Dutch (https://www.transifex.com/ckeditor/teams/11143/nl/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/no.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Norwegian (https://www.transifex.com/ckeditor/teams/11143/no/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/oc.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Occitan (post 1500) (https://www.transifex.com/ckeditor/teams/11143/oc/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/pl.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Polish (https://www.transifex.com/ckeditor/teams/11143/pl/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/pt-br.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/ckeditor/teams/11143/pt_BR/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/pt.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Portuguese (https://www.transifex.com/ckeditor/teams/11143/pt/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/ro.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Romanian (https://www.transifex.com/ckeditor/teams/11143/ro/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/ru.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Russian (https://www.transifex.com/ckeditor/teams/11143/ru/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/sk.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Slovak (https://www.transifex.com/ckeditor/teams/11143/sk/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/sq.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Albanian (https://www.transifex.com/ckeditor/teams/11143/sq/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/sv.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Swedish (https://www.transifex.com/ckeditor/teams/11143/sv/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/tr.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Turkish (https://www.transifex.com/ckeditor/teams/11143/tr/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/tt.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Tatar (https://www.transifex.com/ckeditor/teams/11143/tt/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/ug.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Uighur (https://www.transifex.com/ckeditor/teams/11143/ug/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/uk.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Ukrainian (https://www.transifex.com/ckeditor/teams/11143/uk/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/zh-cn.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Chinese (China) (https://www.transifex.com/ckeditor/teams/11143/zh_CN/)\n"

+ 1 - 1
packages/ckeditor5-core/lang/translations/zh.po

@@ -1,4 +1,4 @@
-# Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 msgid ""
 msgstr ""
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/ckeditor/teams/11143/zh_TW/)\n"

+ 1 - 1
packages/ckeditor5-core/src/command.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 

+ 1 - 1
packages/ckeditor5-core/src/commandcollection.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 

+ 1 - 1
packages/ckeditor5-core/src/editingkeystrokehandler.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 

+ 2 - 16
packages/ckeditor5-core/src/editor/editor.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 
@@ -21,7 +21,6 @@ import EditingKeystrokeHandler from '../editingkeystrokehandler';
 
 import ObservableMixin from '@ckeditor/ckeditor5-utils/src/observablemixin';
 import mix from '@ckeditor/ckeditor5-utils/src/mix';
-import log from '@ckeditor/ckeditor5-utils/src/log';
 
 import '@ckeditor/ckeditor5-utils/src/version';
 
@@ -320,20 +319,7 @@ export default class Editor {
 	}
 }
 
-const ObservableMixinExtended = Object.assign( {}, ObservableMixin, {
-
-	_listenTo: ObservableMixin.listenTo,
-
-	listenTo( emitter, event, callback, options = {} ) {
-		if ( event === 'uiReady' ) {
-			log.warn( 'deprecated-editor-event-uiReady: The editor#uiReady event is deprecated.' );
-		}
-
-		this._listenTo( emitter, event, callback, options );
-	}
-} );
-
-mix( Editor, ObservableMixinExtended );
+mix( Editor, ObservableMixin );
 
 /**
  * Fired after {@link #initPlugins plugins are initialized}.

+ 1 - 1
packages/ckeditor5-core/src/editor/editorconfig.jsdoc

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 

+ 10 - 82
packages/ckeditor5-core/src/editor/editorui.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 
@@ -12,7 +12,6 @@ import FocusTracker from '@ckeditor/ckeditor5-utils/src/focustracker';
 
 import EmitterMixin from '@ckeditor/ckeditor5-utils/src/emittermixin';
 import mix from '@ckeditor/ckeditor5-utils/src/mix';
-import log from '@ckeditor/ckeditor5-utils/src/log';
 
 /**
  * A class providing the minimal interface that is required to successfully bootstrap any editor UI.
@@ -24,10 +23,8 @@ export default class EditorUI {
 	 * Creates an instance of the editor UI class.
 	 *
 	 * @param {module:core/editor/editor~Editor} editor The editor instance.
-	 * @param {module:ui/editorui/editoruiview~EditorUIView} [view] The view of the UI. This parameter is **deprecated**
-	 * since `v12.0.0` and should not be used.
 	 */
-	constructor( editor, view ) {
+	constructor( editor ) {
 		/**
 		 * The editor that the UI belongs to.
 		 *
@@ -58,68 +55,14 @@ export default class EditorUI {
 		 * Stores all editable elements used by the editor instance.
 		 *
 		 * @protected
-		 * @member {Array.<module:ui/editorui/editoruiview~EditorUIView>}
+		 * @member {Map.<String,HTMLElement>}
 		 */
-		this._editableElements = [];
-
-		/**
-		 * **Deprecated** since `v12.0.0`. This property is deprecated and should not be used. Use the property
-		 * from the subclass directly instead, for example
-		 * {@link module:editor-classic/classiceditorui~ClassicEditorUI#_view ClassicEditorUI#_view}.
-		 *
-		 * The main (top–most) view of the editor UI.
-		 *
-		 * @deprecated v12.0.0 This property is deprecated and should not be used. Use the property
-		 * from the subclass directly instead, for example
-		 * {@link module:editor-classic/classiceditorui~ClassicEditorUI#_view ClassicEditorUI#_view}.
-		 * @private
-		 * @member {module:ui/editorui/editoruiview~EditorUIView} #_view
-		 */
-		this._view = view;
-
-		// Check if `view` parameter was passed. It is deprecated and should not be used.
-		if ( view ) {
-			/**
-			 * This error is thrown when  the deprecated `view` parameter is passed to the
-			 * {@link module:core/editor/editorui~EditorUI#constructor EditorUI constructor}. Only subclass (for example
-			 * {@link module:editor-classic/classiceditorui~ClassicEditorUI}) should use it without passing it further.
-			 *
-			 * @error deprecated-editorui-view-param-in-constructor
-			 */
-			log.warn( 'deprecated-editorui-view-param-in-constructor: The EditorUI#constructor `view` parameter is deprecated.' );
-		}
+		this._editableElements = new Map();
 
 		// Informs UI components that should be refreshed after layout change.
 		this.listenTo( editor.editing.view.document, 'layoutChanged', () => this.update() );
 	}
 
-	/**
-	 * **Deprecated** since `v12.0.0`. This property is deprecated and should not be used. Use the property
-	 * from the subclass directly instead, for example
-	 * {@link module:editor-classic/classiceditorui~ClassicEditorUI#view ClassicEditorUI#view}.
-	 *
-	 * The main (top–most) view of the editor UI.
-	 *
-	 * @deprecated v12.0.0 This property is deprecated and should not be used. Use the property
-	 * from the subclass directly instead, for example
-	 * {@link module:editor-classic/classiceditorui~ClassicEditorUI#view ClassicEditorUI#view}.
-	 * @readonly
-	 * @member {module:ui/editorui/editoruiview~EditorUIView} #view
-	 */
-	get view() {
-		/**
-		 * This error is thrown when a component tries to access deprecated
-		 * {@link module:core/editor/editorui~EditorUI#element `EditorUI view`} property. Instead the `view` property
-		 * from the subclass (for example {@link module:editor-classic/classiceditorui~ClassicEditorUI#view ClassicEditorUI#view})
-		 * should be accessed directly.
-		 *
-		 * @error deprecated-editorui-view
-		 */
-		log.warn( 'deprecated-editorui-view: The EditorUI#view property is deprecated.' );
-
-		return this._view;
-	}
-
 	/**
 	 * The main (outermost) DOM element of the editor UI.
 	 *
@@ -139,17 +82,6 @@ export default class EditorUI {
 		return null;
 	}
 
-	/**
-	 * Fires the {@link module:core/editor/editorui~EditorUI#event:ready `ready`} event.
-	 *
-	 * This method should be called after {@link module:core/editor/editor~Editor#event:pluginsReady} and before
-	 * {@link module:core/editor/editor~Editor#event:dataReady} by the specific editor creator.
-	 */
-	ready() {
-		this.fire( 'ready' );
-		this.editor.fire( 'uiReady' );
-	}
-
 	/**
 	 * Fires the {@link module:core/editor/editorui~EditorUI#event:update `update`} event.
 	 *
@@ -166,32 +98,28 @@ export default class EditorUI {
 	destroy() {
 		this.stopListening();
 
-		this._editableElements = [];
+		this.focusTracker.destroy();
 
-		if ( this._view ) {
-			this._view.destroy();
-		}
+		this._editableElements = new Map();
 	}
 
 	/**
 	 * Returns the editable editor element with the given name or null if editable does not exist.
 	 *
 	 * @param {String} [rootName=main] The editable name.
-	 * @returns {HTMLElement|null}
+	 * @returns {HTMLElement|undefined}
 	 */
 	getEditableElement( rootName = 'main' ) {
-		const editable = this._editableElements.find( editable => editable.name === rootName );
-
-		return editable ? editable.element : null;
+		return this._editableElements.get( rootName );
 	}
 
 	/**
 	 * Returns array of names of all editor editable elements.
 	 *
-	 * @returns {Array.<String>}
+	 * @returns {Iterable.<String>}
 	 */
 	getEditableElementsNames() {
-		return this._editableElements.map( editable => editable.name );
+		return this._editableElements.keys();
 	}
 
 	/**

+ 1 - 48
packages/ckeditor5-core/src/editor/editorwithui.jsdoc

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 
@@ -27,50 +27,3 @@
  * @readonly
  * @member {module:core/editor/editorui~EditorUI} #ui
  */
-
-/**
- * **Deprecated** since `v12.0.0`. The {@link module:core/editor/editorui~EditorUI#element `EditorUI element`} should be used instead.
- *
- * The main (outermost) DOM element of the editor UI.
- *
- * For example, in {@link module:editor-classic/classiceditor~ClassicEditor} it is a `<div>` which
- * wraps the editable element and the toolbar. In {@link module:editor-inline/inlineeditor~InlineEditor}
- * it is the editable element itself (as there is no other wrapper). However, in
- * {@link module:editor-decoupled/decouplededitor~DecoupledEditor} it is set to `null` because this editor does not
- * come with a single "main" HTML element (its editable element and toolbar are separate).
- *
- * This property can be understood as a shorthand for retrieving the element that a specific editor integration
- * considers to be its main DOM element.
- *
- * @deprecated v12.0.0 The {@link module:core/editor/editorui~EditorUI#element `EditorUI element`} should be used instead.
- * @readonly
- * @member {HTMLElement|null} #element
- */
-
-/**
- * **Deprecated** since `v12.0.0`. The {@link module:core/editor/editorui~EditorUI#event:ready ui ready event} should be listened to instead.
- *
- * Fired when the editor UI is ready.
- *
- * Fired after {@link module:core/editor/editor~Editor#event:pluginsReady} and before
- * {@link module:core/editor/editor~Editor#event:dataReady}.
- *
- * @deprecated v12.0.0 The {@link module:core/editor/editorui~EditorUI#event:ready ui ready event} should be listened to instead.
- * @event uiReady
- */
-
-/**
- * This error is thrown when a component tries to access deprecated
- * {@link module:core/editor/editorwithui~EditorWithUI#element editor element}. Instead the
- * {@link module:core/editor/editorui~EditorUI#element `EditorUI element`} should be used.
- *
- * @error deprecated-editor-element
- */
-
-/**
- * This error is thrown when a component tries to listen to deprecated
- * {@link module:core/editor/editorwithui~EditorWithUI#event:uiReady editor uiReady event}.
- * Instead the {@link module:core/editor/editorui~EditorUI#event:ready ui ready event} should be listened to.
- *
- * @error deprecated-editor-event-uiReady
- */

+ 1 - 1
packages/ckeditor5-core/src/editor/utils/attachtoform.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 

+ 1 - 1
packages/ckeditor5-core/src/editor/utils/dataapimixin.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 

+ 1 - 1
packages/ckeditor5-core/src/editor/utils/elementapimixin.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 

+ 1 - 1
packages/ckeditor5-core/src/pendingactions.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 

+ 1 - 1
packages/ckeditor5-core/src/plugin.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 

+ 1 - 1
packages/ckeditor5-core/src/plugincollection.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 

+ 1 - 1
packages/ckeditor5-core/tests/_utils-tests/articlepluginset.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 

+ 2 - 25
packages/ckeditor5-core/tests/_utils-tests/classictesteditor.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 
@@ -20,19 +20,16 @@ import ElementApiMixin from '../../src/editor/utils/elementapimixin';
 import RootElement from '@ckeditor/ckeditor5-engine/src/model/rootelement';
 
 import { getData } from '@ckeditor/ckeditor5-engine/src/dev-utils/model';
-import log from '@ckeditor/ckeditor5-utils/src/log';
 import testUtils from '../../tests/_utils/utils';
 
 describe( 'ClassicTestEditor', () => {
-	let editorElement, logStub;
+	let editorElement;
 
 	testUtils.createSinonSandbox();
 
 	beforeEach( () => {
 		editorElement = document.createElement( 'div' );
 		document.body.appendChild( editorElement );
-
-		logStub = testUtils.sinon.stub( log, 'warn' ).callsFake( () => {} );
 	} );
 
 	describe( 'constructor()', () => {
@@ -202,24 +199,4 @@ describe( 'ClassicTestEditor', () => {
 				} );
 		} );
 	} );
-
-	describe( 'deprecated uiReady event', () => {
-		it( 'logs deprecated warning when attaching uiReady on listener', () => {
-			return ClassicTestEditor.create( editorElement, { foo: 1 } )
-				.then( editor => {
-					editor.on( 'uiReady', () => {} );
-
-					expect( logStub.calledWith( 'deprecated-editor-event-uiReady: The editor#uiReady event is deprecated.' ) ).to.true;
-				} );
-		} );
-
-		it( 'logs deprecated warning when attaching uiReady once listener', () => {
-			return ClassicTestEditor.create( editorElement, { foo: 1 } )
-				.then( editor => {
-					editor.once( 'uiReady', () => {} );
-
-					expect( logStub.calledWith( 'deprecated-editor-event-uiReady: The editor#uiReady event is deprecated.' ) ).to.true;
-				} );
-		} );
-	} );
 } );

+ 1 - 1
packages/ckeditor5-core/tests/_utils-tests/createsinonsandbox.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 

+ 1 - 1
packages/ckeditor5-core/tests/_utils-tests/modeltesteditor.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 

+ 1 - 1
packages/ckeditor5-core/tests/_utils-tests/utils.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 

+ 1 - 1
packages/ckeditor5-core/tests/_utils-tests/virtualtesteditor.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 

+ 1 - 1
packages/ckeditor5-core/tests/_utils/articlepluginset.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 

+ 31 - 17
packages/ckeditor5-core/tests/_utils/classictesteditor.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 
@@ -38,9 +38,6 @@ export default class ClassicTestEditor extends Editor {
 		// Expose properties normally exposed by the ClassicEditorUI.
 		this.ui.view.editable = new InlineEditableUIView( this.ui.view.locale );
 
-		// A helper to easily replace the editor#element with editor.editable#element.
-		this._elementReplacer = new ElementReplacer();
-
 		// Create the ("main") root element of the model tree.
 		this.model.document.createRoot();
 	}
@@ -49,7 +46,6 @@ export default class ClassicTestEditor extends Editor {
 	 * @inheritDoc
 	 */
 	destroy() {
-		this._elementReplacer.restore();
 		this.ui.destroy();
 
 		return super.destroy();
@@ -66,18 +62,8 @@ export default class ClassicTestEditor extends Editor {
 				editor.initPlugins()
 					// Simulate EditorUI.init() (e.g. like in ClassicEditorUI). The ui#view
 					// should be rendered after plugins are initialized.
-					.then( () => {
-						const view = editor.ui.view;
-
-						view.render();
-						view.main.add( view.editable );
-						view.editableElement = view.editable.element;
-					} )
-					.then( () => {
-						editor._elementReplacer.replace( element, editor.ui.view.element );
-						editor.ui.ready();
-					} )
-					.then( () => editor.editing.view.attachDomRoot( editor.ui.view.editableElement ) )
+					.then( () => editor.ui.init( element ) )
+					.then( () => editor.editing.view.attachDomRoot( editor.ui.getEditableElement() ) )
 					.then( () => editor.data.init( getDataFromElement( element ) ) )
 					.then( () => {
 						editor.fire( 'dataReady' );
@@ -103,6 +89,9 @@ class ClassicTestEditorUI extends EditorUI {
 	constructor( editor, view ) {
 		super( editor );
 
+		// A helper to easily replace the editor#element with editor.editable#element.
+		this._elementReplacer = new ElementReplacer();
+
 		this._view = view;
 	}
 
@@ -115,6 +104,31 @@ class ClassicTestEditorUI extends EditorUI {
 	get view() {
 		return this._view;
 	}
+
+	init( element ) {
+		const view = this.view;
+
+		view.render();
+		view.main.add( view.editable );
+		view.editableElement = view.editable.element;
+
+		this._editableElements.set( 'main', view.editable.element );
+
+		this._elementReplacer.replace( element, view.element );
+
+		this.fire( 'ready' );
+	}
+
+	/**
+	 * @inheritDoc
+	 */
+	destroy() {
+		this._elementReplacer.restore();
+
+		this._view.destroy();
+
+		super.destroy();
+	}
 }
 
 mix( ClassicTestEditor, DataApiMixin );

+ 150 - 0
packages/ckeditor5-core/tests/_utils/memory.js

@@ -0,0 +1,150 @@
+/**
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * For licensing, see LICENSE.md.
+ */
+
+/* global window, document, setTimeout */
+
+const TEST_TIMEOUT = 5000;
+const GARBAGE_COLLECTOR_TIMEOUT = 500;
+
+/**
+ * Memory tests suite definition that:
+ *
+ * * skips tests when garbage collector is not available,
+ * * creates/destroys editor element (id = 'mem-editor').
+ *
+ * This method should be used with dedicated memory usage test case functions:
+ *
+ *        describe( 'editor', () => {
+ *			// Other tests.
+ *
+ *			describeMemoryUsage( () => {
+ *				testMemoryUsage( 'should not grow on multiple create/destroy', () => {
+ *					return ClassicEditor.create( document.querySelector( '#mem-editor' ) );
+ *				} );
+ *			} );
+ *		} );
+ *
+ * @param {Function} callback Callback with test suit body
+ */
+export function describeMemoryUsage( callback ) {
+	describe( 'memory usage', () => {
+		skipIfNoGarbageCollector();
+
+		beforeEach( createEditorElement );
+
+		afterEach( removeEditorElement );
+
+		callback();
+	} );
+}
+
+/**
+ * Single test case for memory usage test. Handles the memory leak test procedure.
+ *
+ * 1. Create and destroy the editor instance to pre-fill the memory with some cacheable data.
+ * 2. Record the heap size.
+ * 3. Create and destroy the editor 5 times.
+ * 4. Record the heap size and compare with the previous result.
+ * 5. Fail when exceeded a 1MB treshold (see code comments for why 1MB).
+ *
+ * See {@link describeMemoryUsage} function for usage details.
+ *
+ * @param {String} testName Name of a test case.
+ * @param {Function} createEditor Callback which creates editor and returns its `.create()` promise.
+ */
+export function testMemoryUsage( testName, createEditor ) {
+	it( testName, function() {
+		this.timeout( TEST_TIMEOUT );
+
+		return runTest( createEditor );
+	} );
+}
+
+// Runs a single test case.
+function runTest( createEditor ) {
+	let memoryAfterFirstStart;
+
+	return Promise
+		.resolve()
+		// Initialize the first editor before mesuring the heap size.
+		// A cold start may allocate a bit of memory on the module-level.
+		.then( createAndDestroy )
+		.then( () => {
+			return collectMemoryStats().then( mem => {
+				memoryAfterFirstStart = mem;
+			} );
+		} )
+		// Run create&destroy multiple times. Helps scaling up the issue.
+		.then( createAndDestroy ) // #1
+		.then( createAndDestroy ) // #2
+		.then( createAndDestroy ) // #3
+		.then( createAndDestroy ) // #4
+		.then( createAndDestroy ) // #5
+		.then( collectMemoryStats )
+		.then( memory => {
+			const memoryDifference = memory.usedJSHeapSize - memoryAfterFirstStart.usedJSHeapSize;
+
+			// While theoretically we should get 0KB when there's no memory leak, in reality,
+			// the results we get (when there are no leaks) vary from -500KB to 500KB (depending on which tests are executed).
+			// However, when we had memory leaks, memoryDifference was reaching 20MB,
+			// so, in order to detect significant memory leaks we can expect that the heap won't grow more than 1MB.
+			expect( memoryDifference, 'used heap size should not grow' ).to.be.at.most( 1e6 );
+		} );
+
+	function createAndDestroy() {
+		return Promise.resolve()
+			.then( createEditor )
+			.then( destroyEditor );
+	}
+}
+
+function createEditorElement() {
+	const editorElement = document.createElement( 'div' );
+	editorElement.id = 'mem-editor';
+
+	editorElement.innerHTML =
+		'<h2>Editor 1</h2>\n' +
+		'<p>This is an editor instance. And there\'s <a href="http://ckeditor.com">some link</a>.</p>';
+
+	document.body.appendChild( editorElement );
+}
+
+function removeEditorElement() {
+	document.getElementById( 'mem-editor' ).remove();
+}
+
+function destroyEditor( editor ) {
+	return editor.destroy();
+}
+
+function collectMemoryStats() {
+	return new Promise( resolve => {
+		// Enforce garbage collection before recording memory stats.
+		window.gc();
+
+		setTimeout( () => {
+			const memeInfo = window.performance.memory;
+
+			resolve( {
+				totalJSHeapSize: memeInfo.totalJSHeapSize,
+				usedJSHeapSize: memeInfo.usedJSHeapSize,
+				jsHeapSizeLimit: memeInfo.jsHeapSizeLimit
+			} );
+		}, GARBAGE_COLLECTOR_TIMEOUT );
+	} );
+}
+
+// Will skip test suite if not in compatible browser.
+// Currently on Google Chrome supports this method and must be run with proper flags:
+//
+// 		google-chrome -js-flags="--expose-gc"
+//
+function skipIfNoGarbageCollector() {
+	before( function() {
+		if ( !window.gc ) {
+			this.skip();
+		}
+	} );
+}

+ 1 - 1
packages/ckeditor5-core/tests/_utils/modeltesteditor.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 

+ 1 - 1
packages/ckeditor5-core/tests/_utils/utils.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 

+ 1 - 1
packages/ckeditor5-core/tests/_utils/virtualtesteditor.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 

+ 1 - 1
packages/ckeditor5-core/tests/command.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 

+ 1 - 1
packages/ckeditor5-core/tests/commandcollection.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 

+ 1 - 1
packages/ckeditor5-core/tests/editingkeystrokehandler.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 

+ 1 - 1
packages/ckeditor5-core/tests/editor/editor.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 

+ 16 - 57
packages/ckeditor5-core/tests/editor/editorui.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 
@@ -8,10 +8,8 @@ import Editor from '../../src/editor/editor';
 
 import FocusTracker from '@ckeditor/ckeditor5-utils/src/focustracker';
 import ComponentFactory from '@ckeditor/ckeditor5-ui/src/componentfactory';
-import View from '@ckeditor/ckeditor5-ui/src/view';
 
 import testUtils from '../_utils/utils';
-import log from '@ckeditor/ckeditor5-utils/src/log';
 
 /* global document */
 
@@ -34,23 +32,6 @@ describe( 'EditorUI', () => {
 			expect( ui.editor ).to.equal( editor );
 		} );
 
-		it( 'should not set #view by default', () => {
-			testUtils.sinon.stub( log, 'warn' ).callsFake( () => {} );
-
-			expect( ui._view ).to.undefined;
-			expect( ui.view ).to.undefined;
-		} );
-
-		it( 'should set #view if passed', () => {
-			testUtils.sinon.stub( log, 'warn' ).callsFake( () => {} );
-
-			const editor = new Editor();
-			const view = new View();
-			const ui = new EditorUI( editor, view );
-
-			expect( ui.view ).to.equal( view );
-		} );
-
 		it( 'should create #componentFactory factory', () => {
 			expect( ui.componentFactory ).to.be.instanceOf( ComponentFactory );
 		} );
@@ -78,22 +59,6 @@ describe( 'EditorUI', () => {
 		} );
 	} );
 
-	describe( 'ready()', () => {
-		it( 'should fire ready event', () => {
-			const spy = sinon.spy();
-
-			ui.on( 'ready', spy );
-
-			ui.ready();
-
-			sinon.assert.calledOnce( spy );
-
-			ui.ready();
-
-			sinon.assert.calledTwice( spy );
-		} );
-	} );
-
 	describe( 'update()', () => {
 		it( 'should fire update event', () => {
 			const spy = sinon.spy();
@@ -119,23 +84,15 @@ describe( 'EditorUI', () => {
 			sinon.assert.called( spy );
 		} );
 
-		it( 'should destroy the #view if present', () => {
-			testUtils.sinon.stub( log, 'warn' ).callsFake( () => {} );
+		it( 'should reset editables array', () => {
+			ui._editableElements.set( 'foo', {} );
+			ui._editableElements.set( 'bar', {} );
 
-			const editor = new Editor();
-			const view = new View();
-			const ui = new EditorUI( editor, view );
-			const spy = sinon.spy( view, 'destroy' );
+			expect( ui._editableElements.size ).to.equal( 2 );
 
 			ui.destroy();
 
-			sinon.assert.called( spy );
-		} );
-
-		it( 'should not throw when view absent', () => {
-			expect( () => {
-				ui.destroy();
-			} ).to.not.throw();
+			expect( ui._editableElements.size ).to.equal( 0 );
 		} );
 	} );
 
@@ -144,7 +101,7 @@ describe( 'EditorUI', () => {
 			const ui = new EditorUI( editor );
 			const editableMock = { name: 'main', element: document.createElement( 'div' ) };
 
-			ui._editableElements.push( editableMock );
+			ui._editableElements.set( editableMock.name, editableMock.element );
 
 			expect( ui.getEditableElement() ).to.equal( editableMock.element );
 		} );
@@ -154,8 +111,8 @@ describe( 'EditorUI', () => {
 			const editableMock1 = { name: 'root1', element: document.createElement( 'div' ) };
 			const editableMock2 = { name: 'root2', element: document.createElement( 'p' ) };
 
-			ui._editableElements.push( editableMock1 );
-			ui._editableElements.push( editableMock2 );
+			ui._editableElements.set( editableMock1.name, editableMock1.element );
+			ui._editableElements.set( editableMock2.name, editableMock2.element );
 
 			expect( ui.getEditableElement( 'root1' ) ).to.equal( editableMock1.element );
 			expect( ui.getEditableElement( 'root2' ) ).to.equal( editableMock2.element );
@@ -164,20 +121,22 @@ describe( 'EditorUI', () => {
 		it( 'should return null if editable with specified name does not exist', () => {
 			const ui = new EditorUI( editor );
 
-			expect( ui.getEditableElement() ).to.null;
+			expect( ui.getEditableElement() ).to.be.undefined;
 		} );
 	} );
 
 	describe( 'getEditableElementsNames()', () => {
-		it( 'should return array of names', () => {
+		it( 'should return iterable object of names', () => {
 			const ui = new EditorUI( editor );
 			const editableMock1 = { name: 'main', element: document.createElement( 'div' ) };
 			const editableMock2 = { name: 'root2', element: document.createElement( 'p' ) };
 
-			ui._editableElements.push( editableMock1 );
-			ui._editableElements.push( editableMock2 );
+			ui._editableElements.set( editableMock1.name, editableMock1.element );
+			ui._editableElements.set( editableMock2.name, editableMock2.element );
 
-			expect( ui.getEditableElementsNames() ).to.deep.equal( [ 'main', 'root2' ] );
+			const names = ui.getEditableElementsNames();
+			expect( names[ Symbol.iterator ] ).to.instanceof( Function );
+			expect( Array.from( names ) ).to.deep.equal( [ 'main', 'root2' ] );
 		} );
 
 		it( 'should return empty array if no editables', () => {

+ 1 - 1
packages/ckeditor5-core/tests/editor/utils/attachtoform.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 

+ 1 - 1
packages/ckeditor5-core/tests/editor/utils/dataapimixin.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 

+ 1 - 1
packages/ckeditor5-core/tests/editor/utils/elementapimixin.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 

+ 1 - 1
packages/ckeditor5-core/tests/manual/article.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 

+ 1 - 1
packages/ckeditor5-core/tests/manual/formsubmit.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 

+ 1 - 1
packages/ckeditor5-core/tests/manual/pendingactions.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 

+ 1 - 1
packages/ckeditor5-core/tests/manual/readonly.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 

+ 1 - 1
packages/ckeditor5-core/tests/manual/version-collision.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 

+ 1 - 1
packages/ckeditor5-core/tests/pendingactions.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 

+ 1 - 1
packages/ckeditor5-core/tests/plugin.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 

+ 1 - 1
packages/ckeditor5-core/tests/plugincollection.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */