Prevent client crash if CKEditor is destroyed twice
It's possible to destroy the CKEditor twice if it's part of a dialog.
Once destroy is called indirectly by dialog shell descruction and second
by protocol destroy operation.
Update outdated links to jasmine related files in index.html.
464455: error occors when ckeditor used in tabfolder in dialog
https://bugs.eclipse.org/bugs/show_bug.cgi?id=464455
diff --git a/bundles/org.eclipse.rap.addons.ckeditor/src/resources/handler.js b/bundles/org.eclipse.rap.addons.ckeditor/src/resources/handler.js
index 3dd6cb7..beb6261 100644
--- a/bundles/org.eclipse.rap.addons.ckeditor/src/resources/handler.js
+++ b/bundles/org.eclipse.rap.addons.ckeditor/src/resources/handler.js
@@ -81,9 +81,11 @@
},
destroy : function() {
- rap.off( "send", this.onSend );
- this.editor.destroy();
- this.element.parentNode.removeChild( this.element );
+ if( this.element.parentNode ) {
+ rap.off( "send", this.onSend );
+ this.editor.destroy();
+ this.element.parentNode.removeChild( this.element );
+ }
},
layout : function() {
@@ -116,4 +118,4 @@
}, 0 );
};
-}());
\ No newline at end of file
+}());
diff --git a/tests/org.eclipse.rap.addons.ckeditor.test/js/index.html b/tests/org.eclipse.rap.addons.ckeditor.test/js/index.html
index 9ecf5c4..3224f7b 100644
--- a/tests/org.eclipse.rap.addons.ckeditor.test/js/index.html
+++ b/tests/org.eclipse.rap.addons.ckeditor.test/js/index.html
@@ -2,9 +2,9 @@
<html>
<head>
<title>CKEditor RAP Tests</title>
- <link rel="stylesheet" type="text/css" href="http://pivotal.github.io/jasmine/lib/jasmine-1.3.1/jasmine.css">
- <script type="text/javascript" src="http://pivotal.github.io/jasmine/lib/jasmine-1.3.1/jasmine.js"></script>
- <script type="text/javascript" src="http://pivotal.github.io/jasmine/lib/jasmine-1.3.1/jasmine-html.js"></script>
+ <link rel="stylesheet" type="text/css" href="http://cdnjs.cloudflare.com/ajax/libs/jasmine/1.3.1/jasmine.css">
+ <script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jasmine/1.3.1/jasmine.js"></script>
+ <script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jasmine/1.3.1/jasmine-html.js"></script>
<script type="text/javascript" src="rap-mock.js"></script>
<script type="text/javascript" src="CKEditorMock.js"></script>
<script type="text/javascript" src="../../../bundles/org.eclipse.rap.addons.ckeditor/src/resources/handler.js"></script>
diff --git a/tests/org.eclipse.rap.addons.ckeditor.test/js/specs/CKEditorSpec.js b/tests/org.eclipse.rap.addons.ckeditor.test/js/specs/CKEditorSpec.js
index 2890130..270bc0e 100644
--- a/tests/org.eclipse.rap.addons.ckeditor.test/js/specs/CKEditorSpec.js
+++ b/tests/org.eclipse.rap.addons.ckeditor.test/js/specs/CKEditorSpec.js
@@ -265,6 +265,13 @@
expect( editor.editor.destroy ).toHaveBeenCalled();
} );
+ it( "doesn't throw if destroyed twice", function() {
+ spyOn( editor.editor, "destroy" );
+ editor.destroy();
+ editor.destroy();
+ expect( editor.editor.destroy ).not.toThrow();
+ } );
+
} );
-} );
\ No newline at end of file
+} );