Some code cleaning.

This commit is contained in:
ali.ibrahim 2016-09-26 14:59:53 +02:00
parent f7525d7877
commit fcaf9cb031
5 changed files with 85 additions and 60 deletions

View file

@ -23,8 +23,9 @@ namespace mate {
template<> template<>
struct Converter<scoped_refptr<const net::HttpResponseHeaders>> { struct Converter<scoped_refptr<const net::HttpResponseHeaders>> {
static v8::Local<v8::Value> ToV8(v8::Isolate* isolate, static v8::Local<v8::Value> ToV8(
scoped_refptr<const net::HttpResponseHeaders> val) { v8::Isolate* isolate,
scoped_refptr<const net::HttpResponseHeaders> val) {
mate::Dictionary dict = mate::Dictionary::CreateEmpty(isolate); mate::Dictionary dict = mate::Dictionary::CreateEmpty(isolate);
if (val) { if (val) {
@ -41,15 +42,18 @@ struct Converter<scoped_refptr<const net::HttpResponseHeaders>> {
template<> template<>
struct Converter<scoped_refptr<const net::IOBufferWithSize>> { struct Converter<scoped_refptr<const net::IOBufferWithSize>> {
static v8::Local<v8::Value> ToV8( static v8::Local<v8::Value> ToV8(
v8::Isolate* isolate, v8::Isolate* isolate,
scoped_refptr<const net::IOBufferWithSize> buffer) { scoped_refptr<const net::IOBufferWithSize> buffer) {
return node::Buffer::Copy(isolate, buffer->data(), buffer->size()).ToLocalChecked(); return node::Buffer::Copy(isolate,
buffer->data(),
buffer->size()).ToLocalChecked();
} }
static bool FromV8(v8::Isolate* isolate, v8::Local<v8::Value> val, static bool FromV8(
scoped_refptr<const net::IOBufferWithSize>* out) { v8::Isolate* isolate,
v8::Local<v8::Value> val,
scoped_refptr<const net::IOBufferWithSize>* out) {
auto size = node::Buffer::Length(val); auto size = node::Buffer::Length(val);
@ -87,10 +91,9 @@ namespace atom {
namespace api { namespace api {
URLRequest::URLRequest(v8::Isolate* isolate, URLRequest::URLRequest(v8::Isolate* isolate, v8::Local<v8::Object> wrapper)
v8::Local<v8::Object> wrapper)
: weak_ptr_factory_(this) { : weak_ptr_factory_(this) {
InitWith(isolate, wrapper); InitWith(isolate, wrapper);
} }
URLRequest::~URLRequest() { URLRequest::~URLRequest() {
@ -142,18 +145,20 @@ void URLRequest::BuildPrototype(v8::Isolate* isolate,
.SetMethod("_getHeader", &URLRequest::GetHeader) .SetMethod("_getHeader", &URLRequest::GetHeader)
.SetMethod("_removaHeader", &URLRequest::RemoveHeader) .SetMethod("_removaHeader", &URLRequest::RemoveHeader)
// Response APi // Response APi
.SetProperty("statusCode", &URLRequest::StatusCode) .SetProperty("_statusCode", &URLRequest::StatusCode)
.SetProperty("statusMessage", &URLRequest::StatusMessage) .SetProperty("_statusMessage", &URLRequest::StatusMessage)
.SetProperty("rawResponseHeaders", &URLRequest::RawResponseHeaders) .SetProperty("_rawResponseHeaders", &URLRequest::RawResponseHeaders)
.SetProperty("httpVersionMajor", &URLRequest::ResponseHttpVersionMajor) .SetProperty("_httpVersionMajor", &URLRequest::ResponseHttpVersionMajor)
.SetProperty("httpVersionMinor", &URLRequest::ResponseHttpVersionMinor); .SetProperty("_httpVersionMinor", &URLRequest::ResponseHttpVersionMinor);
} }
bool URLRequest::WriteBuffer(scoped_refptr<const net::IOBufferWithSize> buffer, bool is_last) { bool URLRequest::WriteBuffer(
atom_request_->WriteBuffer(buffer, is_last); scoped_refptr<const net::IOBufferWithSize> buffer,
return true; bool is_last) {
return atom_request_->WriteBuffer(buffer, is_last);
} }
@ -161,7 +166,8 @@ void URLRequest::Abort() {
atom_request_->Abort(); atom_request_->Abort();
} }
bool URLRequest::SetHeader(const std::string& name, const std::string& value) { bool URLRequest::SetHeader(const std::string& name,
const std::string& value) {
if (!net::HttpUtil::IsValidHeaderName(name)) { if (!net::HttpUtil::IsValidHeaderName(name)) {
return false; return false;
} }
@ -181,7 +187,7 @@ void URLRequest::RemoveHeader(const std::string& name) {
} }
void URLRequest::OnAuthenticationRequired( void URLRequest::OnAuthenticationRequired(
scoped_refptr<const net::AuthChallengeInfo> auth_info) { scoped_refptr<const net::AuthChallengeInfo> auth_info) {
EmitRequestEvent( EmitRequestEvent(
"login", "login",
auth_info.get(), auth_info.get(),
@ -194,7 +200,7 @@ void URLRequest::OnResponseStarted() {
} }
void URLRequest::OnResponseData( void URLRequest::OnResponseData(
scoped_refptr<const net::IOBufferWithSize> buffer) { scoped_refptr<const net::IOBufferWithSize> buffer) {
if (!buffer || !buffer->data() || !buffer->size()) { if (!buffer || !buffer->data() || !buffer->size()) {
return; return;
} }
@ -224,7 +230,8 @@ std::string URLRequest::StatusMessage() const {
return result; return result;
} }
scoped_refptr<const net::HttpResponseHeaders> URLRequest::RawResponseHeaders() const { scoped_refptr<const net::HttpResponseHeaders>
URLRequest::RawResponseHeaders() const {
return atom_request_->GetResponseHeaders(); return atom_request_->GetResponseHeaders();
} }

View file

@ -32,7 +32,8 @@ class URLRequest : public mate::EventEmitter<URLRequest> {
private: private:
bool WriteBuffer(scoped_refptr<const net::IOBufferWithSize> buffer, bool is_last); bool WriteBuffer(scoped_refptr<const net::IOBufferWithSize> buffer,
bool is_last);
void Abort(); void Abort();
bool SetHeader(const std::string& name, const std::string& value); bool SetHeader(const std::string& name, const std::string& value);
std::string GetHeader(const std::string& name); std::string GetHeader(const std::string& name);
@ -86,7 +87,8 @@ void URLRequest::EmitRequestEvent(ArgTypes... args) {
auto arguments = BuildArgsArray(args...); auto arguments = BuildArgsArray(args...);
v8::Local<v8::Function> _emitRequestEvent; v8::Local<v8::Function> _emitRequestEvent;
auto wrapper = GetWrapper(); auto wrapper = GetWrapper();
if (mate::Dictionary(isolate(), wrapper).Get("_emitRequestEvent", &_emitRequestEvent)) if (mate::Dictionary(isolate(), wrapper)
.Get("_emitRequestEvent", &_emitRequestEvent))
_emitRequestEvent->Call(wrapper, arguments.size(), arguments.data()); _emitRequestEvent->Call(wrapper, arguments.size(), arguments.data());
} }
@ -96,7 +98,8 @@ void URLRequest::EmitResponseEvent(ArgTypes... args) {
auto arguments = BuildArgsArray(args...); auto arguments = BuildArgsArray(args...);
v8::Local<v8::Function> _emitResponseEvent; v8::Local<v8::Function> _emitResponseEvent;
auto wrapper = GetWrapper(); auto wrapper = GetWrapper();
if (mate::Dictionary(isolate(), wrapper).Get("_emitResponseEvent", &_emitResponseEvent)) if (mate::Dictionary(isolate(), wrapper)
.Get("_emitResponseEvent", &_emitResponseEvent))
_emitResponseEvent->Call(wrapper, arguments.size(), arguments.data()); _emitResponseEvent->Call(wrapper, arguments.size(), arguments.data());
} }

View file

@ -14,9 +14,7 @@
namespace { namespace {
const int kBufferSize = 4096; const int kBufferSize = 4096;
} // namespace } // namespace
namespace atom { namespace atom {
@ -31,6 +29,7 @@ public:
: net::UploadBytesElementReader(buffer->data(), buffer->size()) : net::UploadBytesElementReader(buffer->data(), buffer->size())
, buffer_(buffer) { , buffer_(buffer) {
} }
~UploadOwnedIOBufferElementReader() override { ~UploadOwnedIOBufferElementReader() override {
} }
@ -58,10 +57,10 @@ AtomURLRequest::~AtomURLRequest() {
} }
scoped_refptr<AtomURLRequest> AtomURLRequest::Create( scoped_refptr<AtomURLRequest> AtomURLRequest::Create(
AtomBrowserContext* browser_context, AtomBrowserContext* browser_context,
const std::string& method, const std::string& method,
const std::string& url, const std::string& url,
base::WeakPtr<api::URLRequest> delegate) { base::WeakPtr<api::URLRequest> delegate) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI); DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
DCHECK(browser_context); DCHECK(browser_context);
DCHECK(!url.empty()); DCHECK(!url.empty());
@ -74,7 +73,8 @@ scoped_refptr<AtomURLRequest> AtomURLRequest::Create(
DCHECK(context); DCHECK(context);
scoped_refptr<AtomURLRequest> atom_url_request = new AtomURLRequest(delegate); scoped_refptr<AtomURLRequest> atom_url_request =
new AtomURLRequest(delegate);
atom_url_request->request_ = context->CreateRequest(GURL(url), atom_url_request->request_ = context->CreateRequest(GURL(url),
net::RequestPriority::DEFAULT_PRIORITY, net::RequestPriority::DEFAULT_PRIORITY,
@ -86,12 +86,13 @@ scoped_refptr<AtomURLRequest> AtomURLRequest::Create(
} }
void AtomURLRequest::WriteBuffer(scoped_refptr<const net::IOBufferWithSize> buffer, bool AtomURLRequest::WriteBuffer(
bool is_last) { scoped_refptr<const net::IOBufferWithSize> buffer,
bool is_last) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI); DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
content::BrowserThread::PostTask( return content::BrowserThread::PostTask(
content::BrowserThread::IO, FROM_HERE, content::BrowserThread::IO, FROM_HERE,
base::Bind(&AtomURLRequest::DoWriteBuffer, this, buffer, is_last)); base::Bind(&AtomURLRequest::DoWriteBuffer, this, buffer, is_last));
} }
void AtomURLRequest::SetChunkedUpload() { void AtomURLRequest::SetChunkedUpload() {
@ -157,8 +158,9 @@ void AtomURLRequest::PassLoginInformation(const base::string16& username,
} }
void AtomURLRequest::DoWriteBuffer(scoped_refptr<const net::IOBufferWithSize> buffer, void AtomURLRequest::DoWriteBuffer(
bool is_last) { scoped_refptr<const net::IOBufferWithSize> buffer,
bool is_last) {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO); DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
if (is_chunked_upload_) { if (is_chunked_upload_) {
@ -197,15 +199,19 @@ void AtomURLRequest::DoWriteBuffer(scoped_refptr<const net::IOBufferWithSize> bu
if (buffer) { if (buffer) {
// Handling potential empty buffers. // Handling potential empty buffers.
std::unique_ptr<net::UploadElementReader> element_reader(internal::UploadOwnedIOBufferElementReader using internal::UploadOwnedIOBufferElementReader;
::CreateWithBuffer(std::move(buffer))); auto element_reader = UploadOwnedIOBufferElementReader::CreateWithBuffer(
upload_element_readers_.push_back(std::move(element_reader)); std::move(buffer));
upload_element_readers_.push_back(
std::unique_ptr<net::UploadElementReader>(element_reader));
} }
if (is_last) { if (is_last) {
std::unique_ptr<net::UploadDataStream> elements_upload_data_stream( auto elements_upload_data_stream = new net::ElementsUploadDataStream(
new net::ElementsUploadDataStream(std::move(upload_element_readers_), 0)); std::move(upload_element_readers_),
request_->set_upload(std::move(elements_upload_data_stream)); 0);
request_->set_upload(
std::unique_ptr<net::UploadDataStream>(elements_upload_data_stream));
request_->Start(); request_->Start();
} }
} }
@ -260,7 +266,8 @@ void AtomURLRequest::ReadResponse() {
// completed immediately, without trying to read any data back (all we care // completed immediately, without trying to read any data back (all we care
// about is the response code and headers, which we already have). // about is the response code and headers, which we already have).
int bytes_read = 0; int bytes_read = 0;
if (request_->status().is_success() /* TODO && (request_type_ != URLFetcher::HEAD)*/) { if (request_->status().is_success()
/* TODO && (request_type_ != URLFetcher::HEAD)*/) {
if (!request_->Read(response_read_buffer_.get(), kBufferSize, &bytes_read)) if (!request_->Read(response_read_buffer_.get(), kBufferSize, &bytes_read))
bytes_read = -1; bytes_read = -1;
} }
@ -268,7 +275,8 @@ void AtomURLRequest::ReadResponse() {
} }
void AtomURLRequest::OnReadCompleted(net::URLRequest* request, int bytes_read) { void AtomURLRequest::OnReadCompleted(net::URLRequest* request,
int bytes_read) {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO); DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
DCHECK_EQ(request, request_.get()); DCHECK_EQ(request, request_.get());
@ -283,11 +291,14 @@ void AtomURLRequest::OnReadCompleted(net::URLRequest* request, int bytes_read) {
// Failed to transfer data to UI thread. // Failed to transfer data to UI thread.
return; return;
} }
} while (request_->Read(response_read_buffer_.get(), kBufferSize, &bytes_read)); } while (request_->Read(response_read_buffer_.get(),
kBufferSize,
&bytes_read));
const auto status = request_->status(); const auto status = request_->status();
if (!status.is_io_pending() /* TODO || request_type_ == URLFetcher::HEAD*/ ) { if (!status.is_io_pending()
/* TODO || request_type_ == URLFetcher::HEAD*/ ) {
content::BrowserThread::PostTask( content::BrowserThread::PostTask(
content::BrowserThread::UI, FROM_HERE, content::BrowserThread::UI, FROM_HERE,
@ -301,12 +312,14 @@ bool AtomURLRequest::CopyAndPostBuffer(int bytes_read) {
// data is only a wrapper for the async response_read_buffer_. // data is only a wrapper for the async response_read_buffer_.
// Make a deep copy of payload and transfer ownership to the UI thread. // Make a deep copy of payload and transfer ownership to the UI thread.
scoped_refptr<net::IOBufferWithSize> buffer_copy(new net::IOBufferWithSize(bytes_read)); auto buffer_copy = new net::IOBufferWithSize(bytes_read);
memcpy(buffer_copy->data(), response_read_buffer_->data(), bytes_read); memcpy(buffer_copy->data(), response_read_buffer_->data(), bytes_read);
return content::BrowserThread::PostTask( return content::BrowserThread::PostTask(
content::BrowserThread::UI, FROM_HERE, content::BrowserThread::UI, FROM_HERE,
base::Bind(&AtomURLRequest::InformDelegateResponseData, this, buffer_copy)); base::Bind(&AtomURLRequest::InformDelegateResponseData,
this,
buffer_copy));
} }

View file

@ -34,7 +34,8 @@ public:
const std::string& url, const std::string& url,
base::WeakPtr<api::URLRequest> delegate); base::WeakPtr<api::URLRequest> delegate);
void WriteBuffer(scoped_refptr<const net::IOBufferWithSize> buffer, bool is_last); bool WriteBuffer(scoped_refptr<const net::IOBufferWithSize> buffer,
bool is_last);
void SetChunkedUpload(); void SetChunkedUpload();
void Abort() const; void Abort() const;
void SetHeader(const std::string& name, const std::string& value) const; void SetHeader(const std::string& name, const std::string& value) const;
@ -54,7 +55,8 @@ protected:
private: private:
friend class base::RefCountedThreadSafe<AtomURLRequest>; friend class base::RefCountedThreadSafe<AtomURLRequest>;
void DoWriteBuffer(scoped_refptr<const net::IOBufferWithSize> buffer, bool is_last); void DoWriteBuffer(scoped_refptr<const net::IOBufferWithSize> buffer,
bool is_last);
void DoSetAuth(const base::string16& username, void DoSetAuth(const base::string16& username,
const base::string16& password) const; const base::string16& password) const;
void DoCancelAuth() const; void DoCancelAuth() const;

View file

@ -15,15 +15,15 @@ class URLResponse extends EventEmitter {
} }
get statusCode() { get statusCode() {
return this.request.statusCode; return this.request._statusCode;
} }
get statusMessage() { get statusMessage() {
return this.request.statusMessage; return this.request._statusMessage;
} }
get headers() { get headers() {
return this.request.rawResponseHeaders; return this.request._rawResponseHeaders;
} }
get httpVersion() { get httpVersion() {
@ -31,15 +31,15 @@ class URLResponse extends EventEmitter {
} }
get httpVersionMajor() { get httpVersionMajor() {
return this.request.httpVersionMajor; return this.request._httpVersionMajor;
} }
get httpVersionMinor() { get httpVersionMinor() {
return this.request.httpVersionMinor; return this.request._httpVersionMinor;
} }
get rawHeaders() { get rawHeaders() {
return this.request.rawResponseHeaders; return this.request._rawResponseHeaders;
} }
} }