Inez has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/65864


Change subject: (WIP) Convert GeneratedContentNode into a mixing (instead of an 
abstract class).
......................................................................

(WIP) Convert GeneratedContentNode into a mixing (instead of an abstract class).

Change-Id: I280d2a59326bd83357c7a09c3a188a70fbc75335
---
M modules/ve/ce/nodes/ve.ce.AlienNode.js
M modules/ve/ce/nodes/ve.ce.GeneratedContentNode.js
M modules/ve/ce/nodes/ve.ce.MWTemplateNode.js
M modules/ve/ce/ve.ce.ProtectedNode.js
M modules/ve/dm/nodes/ve.dm.AlienNode.js
M modules/ve/dm/nodes/ve.dm.GeneratedContentNode.js
M modules/ve/dm/nodes/ve.dm.MWTemplateNode.js
M modules/ve/test/ce/ve.ce.ContentBranchNode.test.js
8 files changed, 48 insertions(+), 48 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor 
refs/changes/64/65864/1

diff --git a/modules/ve/ce/nodes/ve.ce.AlienNode.js 
b/modules/ve/ce/nodes/ve.ce.AlienNode.js
index 002c1d3..cb3bbe5 100644
--- a/modules/ve/ce/nodes/ve.ce.AlienNode.js
+++ b/modules/ve/ce/nodes/ve.ce.AlienNode.js
@@ -10,8 +10,9 @@
  *
  * @class
  * @abstract
- * @extends ve.ce.GeneratedContentNode
+ * @extends ve.ce.LeafNode
  * @mixins ve.ce.ProtectedNode
+ * @mixins ve.ce.GeneratedContentNode
  *
  * @constructor
  * @param {ve.dm.AlienNode} model Model to observe
@@ -19,10 +20,11 @@
  */
 ve.ce.AlienNode = function VeCeAlienNode( model, config ) {
        // Parent constructor
-       ve.ce.GeneratedContentNode.call( this, model, config );
+       ve.ce.LeafNode.call( this, model, config );
 
        // Mixin constructors
        ve.ce.ProtectedNode.call( this );
+       ve.ce.GeneratedContentNode.call( this, model );
 
        // Intitialization
        this.$.addClass( 've-ce-alienNode' );
@@ -30,10 +32,12 @@
 
 /* Inheritance */
 
-ve.inheritClass( ve.ce.AlienNode, ve.ce.GeneratedContentNode );
+ve.inheritClass( ve.ce.AlienNode, ve.ce.LeafNode );
 
 ve.mixinClass( ve.ce.AlienNode, ve.ce.ProtectedNode );
 
+ve.mixinClass( ve.ce.AlienNode, ve.ce.GeneratedContentNode );
+
 /* Static Properties */
 
 ve.ce.AlienNode.static.name = 'alien';
diff --git a/modules/ve/ce/nodes/ve.ce.GeneratedContentNode.js 
b/modules/ve/ce/nodes/ve.ce.GeneratedContentNode.js
index a9c2c86..f431bef 100644
--- a/modules/ve/ce/nodes/ve.ce.GeneratedContentNode.js
+++ b/modules/ve/ce/nodes/ve.ce.GeneratedContentNode.js
@@ -10,15 +10,11 @@
  *
  * @class
  * @abstract
- * @extends ve.ce.LeafNode
+ *
  * @constructor
- * @param {ve.dm.GeneratedContentNode} model Model to observe
- * @param {Object} [config] Config options
+ * @param {ve.dm.Node} model Model to observe
  */
-ve.ce.GeneratedContentNode = function VeCeGeneratedContentNode( model, config 
) {
-       // Parent constructor
-       ve.ce.LeafNode.call( this, model, config );
-
+ve.ce.GeneratedContentNode = function VeCeGeneratedContentNode( model ) {
        // DOM Changes
        this.$.addClass( 've-ce-generatedContentNode' );
        this.$.attr( 'contenteditable', false );
@@ -26,17 +22,8 @@
        // Events
        this.model.connect( this, { 'update': 'onUpdate' } );
 
-       // Initialization
        this.onUpdate();
 };
-
-/* Inheritance */
-
-ve.inheritClass( ve.ce.GeneratedContentNode, ve.ce.LeafNode );
-
-/* Static Properties */
-
-ve.ce.GeneratedContentNode.static.name = 'generatedContent';
 
 /* Methods */
 
@@ -96,8 +83,4 @@
  */
 ve.ce.GeneratedContentNode.prototype.failGenerating = function () {
        // TODO: remove 'generating' style
-};
-
-/* Registration */
-
-ve.ce.nodeFactory.register( ve.ce.GeneratedContentNode );
+};
\ No newline at end of file
diff --git a/modules/ve/ce/nodes/ve.ce.MWTemplateNode.js 
b/modules/ve/ce/nodes/ve.ce.MWTemplateNode.js
index 3aaeb24..4e61347 100644
--- a/modules/ve/ce/nodes/ve.ce.MWTemplateNode.js
+++ b/modules/ve/ce/nodes/ve.ce.MWTemplateNode.js
@@ -12,9 +12,10 @@
  *
  * @class
  * @abstract
- * @extends ve.ce.GeneratedContentNode
+ * @extends ve.ce.LeafNode
  * @mixins ve.ce.ProtectedNode
  * @mixins ve.ce.FocusableNode
+ * @mixins ve.ce.GeneratedContentNode
  *
  * @constructor
  * @param {ve.dm.MWTemplateNode} model Model to observe
@@ -22,11 +23,12 @@
  */
 ve.ce.MWTemplateNode = function VeCeMWTemplateNode( model, config ) {
        // Parent constructor
-       ve.ce.GeneratedContentNode.call( this, model, config );
+       ve.ce.LeafNode.call( this, model, config );
 
        // Mixin constructors
        ve.ce.ProtectedNode.call( this );
        ve.ce.FocusableNode.call( this );
+       ve.ce.GeneratedContentNode.call( this, model );
 
        // DOM Changes
        this.$.addClass( 've-ce-mwTemplateNode' );
@@ -34,12 +36,14 @@
 
 /* Inheritance */
 
-ve.inheritClass( ve.ce.MWTemplateNode, ve.ce.GeneratedContentNode );
+ve.inheritClass( ve.ce.MWTemplateNode, ve.ce.LeafNode );
 
 ve.mixinClass( ve.ce.MWTemplateNode, ve.ce.ProtectedNode );
 
 ve.mixinClass( ve.ce.MWTemplateNode, ve.ce.FocusableNode );
 
+ve.mixinClass( ve.ce.MWTemplateNode, ve.ce.GeneratedContentNode );
+
 /* Static Properties */
 
 ve.ce.MWTemplateNode.static.name = 'mwTemplate';
diff --git a/modules/ve/ce/ve.ce.ProtectedNode.js 
b/modules/ve/ce/ve.ce.ProtectedNode.js
index 081f22e..10528c4 100644
--- a/modules/ve/ce/ve.ce.ProtectedNode.js
+++ b/modules/ve/ce/ve.ce.ProtectedNode.js
@@ -64,6 +64,9 @@
  * @method
  */
 ve.ce.ProtectedNode.prototype.onProtectedSetup = function () {
+       if ( !this.isLive() ) {
+               return;
+       }
        var $shield,
                node = this,
                $shieldTemplate = this.constructor.static.$shieldTemplate,
@@ -96,6 +99,9 @@
  * @method
  */
 ve.ce.ProtectedNode.prototype.onProtectedTeardown = function () {
+       if ( !this.isLive() ) {
+               return;
+       }
        var surfaceModel = this.getRoot().getSurface().getModel();
 
        // Events
diff --git a/modules/ve/dm/nodes/ve.dm.AlienNode.js 
b/modules/ve/dm/nodes/ve.dm.AlienNode.js
index 2cfe9c5..79be364 100644
--- a/modules/ve/dm/nodes/ve.dm.AlienNode.js
+++ b/modules/ve/dm/nodes/ve.dm.AlienNode.js
@@ -10,19 +10,26 @@
  *
  * @class
  * @abstract
- * @extends ve.dm.GeneratedContentNode
+ * @extends ve.dm.LeafNode
+ * @mixins ve.dm.GeneratedContentNode
+ *
  * @constructor
  * @param {number} [length] Length of content data in document; ignored and 
overridden to 0
  * @param {Object} [element] Reference to element in linear model
  */
 ve.dm.AlienNode = function VeDmAlienNode( length, element ) {
        // Parent constructor
-       ve.dm.GeneratedContentNode.call( this, 0, element );
+       ve.dm.LeafNode.call( this, 0, element );
+
+       // Mixin constructors
+       ve.dm.GeneratedContentNode.call( this );
 };
 
 /* Inheritance */
 
-ve.inheritClass( ve.dm.AlienNode, ve.dm.GeneratedContentNode );
+ve.inheritClass( ve.dm.AlienNode, ve.dm.LeafNode );
+
+ve.mixinClass( ve.dm.AlienNode, ve.dm.GeneratedContentNode );
 
 /* Static members */
 
diff --git a/modules/ve/dm/nodes/ve.dm.GeneratedContentNode.js 
b/modules/ve/dm/nodes/ve.dm.GeneratedContentNode.js
index 1eb081c..9ef8518 100644
--- a/modules/ve/dm/nodes/ve.dm.GeneratedContentNode.js
+++ b/modules/ve/dm/nodes/ve.dm.GeneratedContentNode.js
@@ -10,23 +10,16 @@
  *
  * @class
  * @abstract
- * @extends ve.dm.LeafNode
  * @constructor
  * @param {number} [length] Length of content data in document; ignored and 
overridden to 0
  * @param {Object} [element] Reference to element in linear model
  */
-ve.dm.GeneratedContentNode = function VeDmGeneratedContentNode( length, 
element ) {
-       // Parent constructor
-       ve.dm.LeafNode.call( this, 0, element );
+ve.dm.GeneratedContentNode = function VeDmGeneratedContentNode() {
 };
-
-/* Inheritance */
-
-ve.inheritClass( ve.dm.GeneratedContentNode, ve.dm.LeafNode );
 
 /* Static members */
 
-ve.dm.GeneratedContentNode.static.name = 'generatedContent';
+ve.dm.GeneratedContentNode.static = {};
 
 ve.dm.GeneratedContentNode.static.matchTagNames = [];
 
@@ -42,8 +35,4 @@
 ve.dm.GeneratedContentNode.static.storeDomElements = function ( dataElement, 
domElements, store ) {
        var hash = ve.getHash( this.getHashObject( dataElement ) );
        return store.index( domElements, hash );
-};
-
-/* Registration */
-
-ve.dm.modelRegistry.register( ve.dm.GeneratedContentNode );
\ No newline at end of file
+};
\ No newline at end of file
diff --git a/modules/ve/dm/nodes/ve.dm.MWTemplateNode.js 
b/modules/ve/dm/nodes/ve.dm.MWTemplateNode.js
index 631ee7f..9e81259 100644
--- a/modules/ve/dm/nodes/ve.dm.MWTemplateNode.js
+++ b/modules/ve/dm/nodes/ve.dm.MWTemplateNode.js
@@ -10,19 +10,26 @@
  *
  * @class
  * @abstract
- * @extends ve.dm.GeneratedContentNode
+ * @extends ve.dm.LeafNode
+ * @mixins ve.dm.GeneratedContentNode
+ *
  * @constructor
  * @param {number} [length] Length of content data in document; ignored and 
overridden to 0
  * @param {Object} [element] Reference to element in linear model
  */
 ve.dm.MWTemplateNode = function VeDmMWTemplateNode( length, element ) {
        // Parent constructor
-       ve.dm.GeneratedContentNode.call( this, 0, element );
+       ve.dm.LeafNode.call( this, 0, element );
+
+       // Mixin constructors
+       ve.dm.GeneratedContentNode.call( this );
 };
 
 /* Inheritance */
 
-ve.inheritClass( ve.dm.MWTemplateNode, ve.dm.GeneratedContentNode );
+ve.inheritClass( ve.dm.MWTemplateNode, ve.dm.LeafNode );
+
+ve.mixinClass( ve.dm.MWTemplateNode, ve.dm.GeneratedContentNode );
 
 /* Static members */
 
diff --git a/modules/ve/test/ce/ve.ce.ContentBranchNode.test.js 
b/modules/ve/test/ce/ve.ce.ContentBranchNode.test.js
index 189bfa2..7a74a3c 100644
--- a/modules/ve/test/ce/ve.ce.ContentBranchNode.test.js
+++ b/modules/ve/test/ce/ve.ce.ContentBranchNode.test.js
@@ -246,7 +246,7 @@
                        ],
                        'html': 'a<b>b<span typeof="mw:Entity" 
class="ve-ce-leafNode ' +
                                've-ce-mwEntityNode" 
contenteditable="false">c</span>d<span ' +
-                               'class="ve-ce-leafNode 
ve-ce-generatedContentNode ve-ce-protectedNode ' +
+                               'class="ve-ce-leafNode ve-ce-protectedNode 
ve-ce-generatedContentNode ' +
                                've-ce-alienNode ve-ce-alienInlineNode" ' +
                                'contenteditable="false"><tt>e</tt></span></b>'
                }

-- 
To view, visit https://gerrit.wikimedia.org/r/65864
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I280d2a59326bd83357c7a09c3a188a70fbc75335
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Inez <i...@wikia-inc.com>
Gerrit-Reviewer: Catrope <roan.katt...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to