You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@wookie.apache.org by sc...@apache.org on 2010/01/20 19:47:21 UTC

svn commit: r901325 - /incubator/wookie/trunk/WebContent/shared/js/wookie-wrapper.js

Author: scottbw
Date: Wed Jan 20 18:47:20 2010
New Revision: 901325

URL: http://svn.apache.org/viewvc?rev=901325&view=rev
Log:
Implemented exception handling using window.DOMException as per W3C Widget Interface spec

Modified:
    incubator/wookie/trunk/WebContent/shared/js/wookie-wrapper.js

Modified: incubator/wookie/trunk/WebContent/shared/js/wookie-wrapper.js
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/WebContent/shared/js/wookie-wrapper.js?rev=901325&r1=901324&r2=901325&view=diff
==============================================================================
--- incubator/wookie/trunk/WebContent/shared/js/wookie-wrapper.js (original)
+++ incubator/wookie/trunk/WebContent/shared/js/wookie-wrapper.js Wed Jan 20 18:47:20 2010
@@ -50,7 +50,10 @@
         
 	    var existing = this.prefs[key];
         if (existing){
-            if (existing["readOnly"] == true) throw "NO_MODIFICATION_ALLOWED_ERR";
+            if (existing["readOnly"] == true){
+            	window.DOMException.code = DOMException.NO_MODIFICATION_ALLOWED_ERR;
+            	throw (window.DOMException);
+            }
         } else {
         	// Setup prototype methods
             eval("Widget.preferences.__defineGetter__('"+key+"', function(){return Widget.preferences.getItem('"+key+"')})");
@@ -62,13 +65,25 @@
 		this.calcLength();
 	}
 	this.removeItem = function(key){
-        this.prefs[key] = null;
-		Widget.setPreferenceForKey(key,null);
-		this.calcLength();
+		var existing = (this.prefs[key]);
+        if (existing){
+            if (existing["readOnly"] == true){
+            	window.DOMException.code = DOMException.NO_MODIFICATION_ALLOWED_ERR;
+            	throw (window.DOMException);
+            } else {
+            	this.prefs[key] = null;
+            	Widget.setPreferenceForKey(key,null);
+            	this.calcLength();
+            }
+        }
 	}
 	this.clear = function(){
 		for (key in this.prefs){
-			this.removeItem(key);
+			try{
+				this.removeItem(key);
+			} catch (e){
+				// swallow errors, as this method must never throw them according to spec.
+			}
 		}
 	}
 }
@@ -196,6 +211,10 @@
 		
 	proxify : function(url){
 			return this.proxyUrl + "?instanceid_key=" + this.instanceid_key + "&url=" + url;
+	},
+	
+	toString: function(){
+		return "[object Widget]";
 	}
 	
 }