Bug 1426501 - Add nsINetUtil.notImplemented() method that always throws draft
authorValentin Gosu <valentin.gosu@gmail.com>
Mon, 08 Jan 2018 11:23:53 +0100
changeset 717192 413d67e6d0ef872b22279a46bfae62b15c39bb91
parent 717012 ed0571d18d1f713a445b7982e85f456d0d265417
child 717193 369c881aee3fa22121fd6a7333357731a54fd56d
push id94593
push uservalentin.gosu@gmail.com
push dateMon, 08 Jan 2018 11:44:46 +0000
bugs1426501
milestone59.0a1
Bug 1426501 - Add nsINetUtil.notImplemented() method that always throws MozReview-Commit-ID: Ij3M5Ydtlac
dom/bindings/test/TestInterfaceJS.js
netwerk/base/nsINetUtil.idl
netwerk/base/nsIOService.cpp
--- a/dom/bindings/test/TestInterfaceJS.js
+++ b/dom/bindings/test/TestInterfaceJS.js
@@ -79,23 +79,18 @@ TestInterfaceJS.prototype = {
   },
 
   testThrowNsresult: function() {
       throw Components.results.NS_BINDING_ABORTED;
   },
 
   testThrowNsresultFromNative: function(x) {
     // We want to throw an exception that we generate from an nsresult thrown
-    // by a C++ component.  Ideally we'd have one explicitly for testing, but
-    // for now just piggyback on nsStandardURL.
-    var url = Components.classes["@mozilla.org/network/standard-url;1"]
-                        .createInstance(Ci.nsIURI);
-    url.QueryInterface(Ci.nsIMutable);
-    url.mutable = false;
-    url.spec = "http://example.com";
+    // by a C++ component.
+    Services.netUtils.notImplemented();
   },
 
   testThrowCallbackError: function(callback) {
     callback();
   },
 
   testThrowXraySelfHosted: function() {
     this._win.Array.indexOf();
--- a/netwerk/base/nsINetUtil.idl
+++ b/netwerk/base/nsINetUtil.idl
@@ -222,9 +222,16 @@ interface nsINetUtil : nsISupports
    *
    * @param aPolicyString
    *        the policy string given as attribute
    * @return aPolicyEnum
    *         referrer policy code from nsIHttpChannel.idl, (see parser in
    *         ReferrerPolicy.h for details)
    */
   unsigned long parseAttributePolicyString(in AString aPolicyString);
+
+
+  /**
+   * This is a void method that is C++ implemented and always
+   * returns NS_ERROR_NOT_IMPLEMENTED. To be used for testing.
+   */
+  void notImplemented();
 };
--- a/netwerk/base/nsIOService.cpp
+++ b/netwerk/base/nsIOService.cpp
@@ -1904,10 +1904,16 @@ nsIOService::IsDataURIUniqueOpaqueOrigin
 }
 
 /*static*/ bool
 nsIOService::BlockToplevelDataUriNavigations()
 {
   return sBlockToplevelDataUriNavigations;
 }
 
+NS_IMETHODIMP
+nsIOService::NotImplemented()
+{
+  return NS_ERROR_NOT_IMPLEMENTED;
+}
+
 } // namespace net
 } // namespace mozilla