Bug 1367110 - Expose XHRMT's ErrorCode to chrome JS. r=baku draft
authorChris H-C <chutten@mozilla.com>
Wed, 24 May 2017 08:52:15 -0400
changeset 587133 b10e768180b732bfc15644dedab0fa984b690b74
parent 587132 b1ca4ca683d4ec74f93c57e0a8b0b5e79490624e
child 587134 05eb8ddb8dc91221d5ed885b892d5e75819aa991
child 587207 4e4bb8bd8490b27206d0e6664cd3013ba1f0158c
push id61620
push userbmo:chutten@mozilla.com
push dateWed, 31 May 2017 15:15:08 +0000
reviewersbaku
bugs1367110, 1368540
milestone55.0a1
Bug 1367110 - Expose XHRMT's ErrorCode to chrome JS. r=baku This is presently only relevant for XHRMT, so XHRWorker will just report that everything's a-ok for now. As noted inline, the permanence of this measure is to be evaluated in Firefox 60 in bug 1368540. MozReview-Commit-ID: 6gkTyZO388g
dom/webidl/XMLHttpRequest.webidl
dom/xhr/XMLHttpRequest.h
dom/xhr/XMLHttpRequestMainThread.h
dom/xhr/XMLHttpRequestWorker.h
--- a/dom/webidl/XMLHttpRequest.webidl
+++ b/dom/webidl/XMLHttpRequest.webidl
@@ -150,11 +150,16 @@ interface XMLHttpRequest : XMLHttpReques
   attribute ByteString? networkInterfaceId;
 
   [Throws, ChromeOnly, Exposed=Window]
   any getInterface(IID iid);
 
   [ChromeOnly, Exposed=Window]
   void setOriginAttributes(optional OriginAttributesDictionary originAttributes);
 
+  // Only works on MainThread.
+  // Its permanence is to be evaluated in bug 1368540 for Firefox 60.
+  [ChromeOnly]
+  readonly attribute unsigned short errorCode;
+
   readonly attribute boolean mozAnon;
   readonly attribute boolean mozSystem;
 };
--- a/dom/xhr/XMLHttpRequest.h
+++ b/dom/xhr/XMLHttpRequest.h
@@ -163,16 +163,19 @@ public:
   virtual void
   GetInterface(JSContext* aCx, nsIJSID* aIID,
                JS::MutableHandle<JS::Value> aRetval,
                ErrorResult& aRv) = 0;
 
   virtual void
   SetOriginAttributes(const mozilla::dom::OriginAttributesDictionary& aAttrs) = 0;
 
+  virtual uint16_t
+  ErrorCode() const = 0;
+
   virtual bool
   MozAnon() const = 0;
 
   virtual bool
   MozSystem() const = 0;
 
   virtual JSObject*
   WrapObject(JSContext *aCx, JS::Handle<JSObject*> aGivenProto) override
--- a/dom/xhr/XMLHttpRequestMainThread.h
+++ b/dom/xhr/XMLHttpRequestMainThread.h
@@ -474,16 +474,22 @@ public:
   GetResponseXML(ErrorResult& aRv) override;
 
   virtual bool
   MozBackgroundRequest() const override;
 
   virtual void
   SetMozBackgroundRequest(bool aMozBackgroundRequest, ErrorResult& aRv) override;
 
+  virtual uint16_t
+  ErrorCode() const override
+  {
+    return static_cast<uint16_t>(mErrorLoad);
+  }
+
   virtual bool
   MozAnon() const override;
 
   virtual bool
   MozSystem() const override;
 
   virtual nsIChannel*
   GetChannel() const override
--- a/dom/xhr/XMLHttpRequestWorker.h
+++ b/dom/xhr/XMLHttpRequestWorker.h
@@ -280,16 +280,21 @@ public:
 
   void
   NullResponseText()
   {
     mStateData.mResponseText.SetVoid();
     mStateData.mResponse.setNull();
   }
 
+  virtual uint16_t ErrorCode() const override
+  {
+    return 0; // eOK
+  }
+
   virtual bool MozAnon() const override
   {
     return mMozAnon;
   }
 
   virtual bool MozSystem() const override
   {
     return mMozSystem;