Browse Source

protocol: adding error job to log error with custom protocols

deepak1556 10 years ago
parent
commit
9ab53b0e4b

+ 8 - 0
atom/browser/api/atom_api_protocol.cc

@@ -105,6 +105,14 @@ class CustomProtocolRequestJob : public AdapterRequestJob {
             base::Bind(&AdapterRequestJob::CreateFileJobAndStart,
                        GetWeakPtr(), path));
         return;
+      } else if (name == "RequestErrorJob") {
+        int error;
+        dict.Get("error", &error);
+
+        BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
+            base::Bind(&AdapterRequestJob::CreateErrorJobAndStart,
+                       GetWeakPtr(), error));
+        return;
       }
     }
 

+ 4 - 0
atom/browser/api/lib/protocol.coffee

@@ -30,4 +30,8 @@ protocol.RequestFileJob =
 class RequestFileJob
   constructor: (@path) ->
 
+protocol.RequestErrorJob =
+class RequestErrorJob
+  constructor: (@error) ->
+
 module.exports = protocol

+ 1 - 1
atom/browser/net/adapter_request_job.cc

@@ -5,10 +5,10 @@
 #include "atom/browser/net/adapter_request_job.h"
 
 #include "base/threading/sequenced_worker_pool.h"
+#include "atom/browser/net/url_request_buffer_job.h"
 #include "atom/browser/net/url_request_string_job.h"
 #include "atom/browser/net/asar/url_request_asar_job.h"
 #include "atom/common/asar/asar_util.h"
-#include "atom/browser/net/url_request_buffer_job.h"
 #include "content/public/browser/browser_thread.h"
 #include "net/base/net_errors.h"
 #include "net/url_request/url_request_error_job.h"

+ 21 - 1
docs/api/protocol.md

@@ -82,4 +82,24 @@ Create a request job which sends a string as response.
   * `encoding` String - Default is `UTF-8`
   * `data` Buffer
 
-Create a request job which accepts a buffer and sends a string as response.
+Create a request job which sends a buffer as response.
+
+## Class: protocol.RequestErrorJob(code)
+
+* `code` Integer
+
+Create a request job which sets appropriate network error message to console.
+Code should be in the following range.
+
+* Ranges:
+  * 0- 99 System related errors
+  * 100-199 Connection related errors
+  * 200-299 Certificate errors
+  * 300-399 HTTP errors
+  * 400-499 Cache errors
+  * 500-599 ?
+  * 600-699 FTP errors
+  * 700-799 Certificate manager errors
+  * 800-899 DNS resolver errors
+
+Check the [network error list](https://code.google.com/p/chromium/codesearch#chromium/src/net/base/net_error_list.h) for code and message relations.

+ 15 - 0
spec/api-protocol-spec.coffee

@@ -58,6 +58,21 @@ describe 'protocol module', ->
           assert false, 'Got error: ' + errorType + ' ' + error
           protocol.unregisterProtocol 'atom-string-job'
 
+    it 'returns RequestErrorJob should send error', (done) ->
+      data = 'valar morghulis'
+      job = new protocol.RequestErrorJob(-6)
+      handler = remote.createFunctionWithReturnValue job
+      protocol.registerProtocol 'atom-error-job', handler
+
+      $.ajax
+        url: 'atom-error-job://fake-host'
+        success: (response) ->
+          assert false, 'should not reach here'
+        error: (xhr, errorType, error) ->
+          assert errorType, 'error'
+          protocol.unregisterProtocol 'atom-error-job'
+          done()
+
     it 'returns RequestBufferJob should send buffer', (done) ->
       data = new Buffer("hello")
       job = new protocol.RequestBufferJob(data: data)