From 40a0e586a8e11d7cedc57956ec96f8c3404181a6 Mon Sep 17 00:00:00 2001 From: deepak1556 Date: Thu, 7 May 2015 13:12:35 +0530 Subject: [PATCH] protocol: adding error job to log error with custom protocols --- atom/browser/api/atom_api_protocol.cc | 8 ++++++++ atom/browser/api/lib/protocol.coffee | 4 ++++ atom/browser/net/adapter_request_job.cc | 2 +- docs/api/protocol.md | 22 +++++++++++++++++++++- spec/api-protocol-spec.coffee | 15 +++++++++++++++ 5 files changed, 49 insertions(+), 2 deletions(-) diff --git a/atom/browser/api/atom_api_protocol.cc b/atom/browser/api/atom_api_protocol.cc index ecb9d416875aa..617a098adbc3e 100644 --- a/atom/browser/api/atom_api_protocol.cc +++ b/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; } } diff --git a/atom/browser/api/lib/protocol.coffee b/atom/browser/api/lib/protocol.coffee index 6eae01462b424..c2db7800c08dd 100644 --- a/atom/browser/api/lib/protocol.coffee +++ b/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 diff --git a/atom/browser/net/adapter_request_job.cc b/atom/browser/net/adapter_request_job.cc index 86c82d7836cee..8b562bcbf248c 100644 --- a/atom/browser/net/adapter_request_job.cc +++ b/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" diff --git a/docs/api/protocol.md b/docs/api/protocol.md index e554dbf5ebaa2..bcc3352751f5b 100644 --- a/docs/api/protocol.md +++ b/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. diff --git a/spec/api-protocol-spec.coffee b/spec/api-protocol-spec.coffee index 0b6c62c027548..69506156089f4 100644 --- a/spec/api-protocol-spec.coffee +++ b/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)